Производительность
Зачем
Обеспечить достижение атрибутов качества архитектуры ПО - характеристика производительности.
Паттерны
- Балансировка
- DevOps Avto Scale
- Отложенные вычисления
- Предобработка данных
Приложение back-end
- кэш вывода, данных (sqldependency)
- Rate Limit
- Масштабирование: горизонтальный ( рядом новый сервер), вертикальные (ядер, памяти и ТП)
Приложение front-end
Паттерны:
- Compression
- Compress files and minimize data size before transmission to reduce network load.
- Selective Rendering/Windowing
- Display only visible elements to optimize rendering performance. For example, in a dynamic list, only render visible items.
- Modular Architecture with Code Splitting
- Split a bigger application bundle into multiple smaller bundles for efficient loading.
- Priority-Based Loading
- Prioritize essential resources and visible (or above-the-fold) content for a better user experience.
- Pre-loading
- Fetch resources in advance before they are requested to improve loading speed.
- Tree Shaking or Dead Code Removal
- Optimize the final JS bundle by removing dead code that will never be used.
- Pre-fetching
- Proactively fetch or cache resources that are likely to be needed soon.
- Dynamic Imports
- Load code modules dynamically based on user actions to optimize the initial loading times.
Мониторинг:
- JavaScript
- существует инструмент под названием Navigation Timing API, который позволяет собирать на стороне клиента данные по скорости страницы, продолжительности DNS resolve, передачи данных по сети, работы на Backend’е, отрисовки страницы.
СУБД
- CQRS - чтение и запись из разных бд
- Секционирование Шардирование
- Репликация
- Кластеризация
- Уровень изоляции данных
- Индексы
- План запросов
- Денормализация БД под OLAP
- Объем данных снизить
Сеть
- Distributed File System и Replication
- Каналы связи вертикальное масштабирование дублирование каналов связи, защита
- топология сети и используемое коммуникационное оборудование