Занятие 1: Знакомство, структура курса, вопросы по курсу
- Знакомство с участниками курса, обзор курса.
- Обсуждение вопросов и ожиданий от курса.
- Понятие Highload и его основные аспекты.
- Факторы, которые следует учитывать при разработке Highload системы.
- Разбор заданий для проектирования Highload системы.
Занятие 2: Quality Attribute и Architectural Significant Requirements
- Значение Quality Attribute (QA) и Architectural Significant Requirements (ASR) в контексте Highload систем.
- Основные QA, которые следует учитывать при проектировании Highload систем.
- Тактики, способствующие разработке Highload систем.
- Введение в системный подход к QA. Примеры системного подхода.
- Разбор задач на проектирование Highload систем с учетом QA и ASR.
Занятие 3: Functional correctness
- Понятие функциональной корректности в Highload системах.
- Подходы к масштабированию данных.
- Strong Consistency и Eventual Consistency и их роль в Highload системах.
- Теоремы CAP и PACELC.
- Объем данных и вопросы persistence в Highload системах.
- Разбор задач на проектирование с учетом функциональной корректности.
Занятие 4: Monitorability, мониторинг и оповещение
- Понятие Monitorability и его значение для Highload систем.
- Системы мониторинга и их роль в обнаружении проблем в Highload системах.
- Важность логирования и его особенности в контексте Highload систем.
- Разбор задач на проектирование с учетом мониторинга и оповещения.
Занятие 5: Performance
- Понятие Performance и его значимость для Highload систем.
- Тактики, способствующие улучшению производительности Highload систем.
- Тестирование производительности и его роль в оценке Highload систем.
- Системный подход к Performance QA. Примеры системного подхода.
- Разбор задач на проектирование с учетом улучшения производительности.
Занятие 6: Availability
- Понятие доступности (Availability) и его важность для Highload систем.
- SLA (Service Level Agreement) и его роль в обеспечении доступности системы.
- Тактики, способствующие достижению высокой доступности в Highload системах.
- Системный подход к Availability QA. Примеры системного подхода.
- Разбор задач на проектирование с учетом доступности системы.
Занятие 7: Тактики достижения Scalability
- Разбор различных тактик, позволяющих обеспечить масштабируемость Highload систем.
- Изучение методов горизонтального и вертикального масштабирования.
- Основные принципы и подходы к распределению нагрузки в Highload системах.
- Системный подход к Scalability QA. Примеры системного подхода.
- Разбор задач на проектирование с учетом обеспечения масштабируемости.
Занятие 8: Примеры Highload систем
- Изучение реальных примеров успешных Highload систем.
- Разбор проектов, выполненных участниками курса.
- Завершение курса, обсуждение вопросов и подведение итогов.