Files
sa-lessons/course_plan.md
T
Alexander Abakumov 15e744da49 Initial commit: Complete Software Architecture course with 11 modules
- Added comprehensive course structure with 11 modules
- Included theoretical content, practical examples, and tasks
- Multi-language code examples (Java, Rust, Node.js, Python)
- Detailed analysis of architectural approaches and trade-offs
- Complete caching strategies documentation
- Architecture examples from real-world systems (Twitter, Netflix, Uber)
- Structured navigation and learning path
- Ready for educational use
2025-09-09 22:08:07 +03:00

341 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# План курса "Архитектор программного обеспечения"
## Общая информация
- **Длительность**: 6 месяцев
- **Нагрузка**: 10-15 часов в неделю
- **Количество проектов**: 11 практических проектов
- **Целевая аудитория**: Разработчики с опытом, технические лидеры, начинающие архитекторы
## Модуль 1: Основы архитектуры ПО (2 недели)
### Компетенции:
- Понимание принципов архитектуры ПО
- Знание архитектурных стилей и паттернов
- Умение анализировать требования и ограничения
### Темы:
1. **Введение в архитектуру ПО**
- Определение архитектуры ПО
- Роль архитектора в команде
- Архитектурные стили (монолит, микросервисы, SOA)
- Качественные атрибуты (производительность, масштабируемость, надежность)
2. **Принципы проектирования**
- SOLID принципы
- DRY, KISS, YAGNI
- Принципы модульности и слабой связанности
- Закон Конвея
### Практический проект:
Создание архитектурного обзора существующей системы с анализом качественных атрибутов.
## Модуль 2: Микросервисная архитектура (3 недели)
### Компетенции:
- Проектирование микросервисных систем
- Управление взаимодействием сервисов
- Решение проблем распределенных систем
### Темы:
1. **Основы микросервисов**
- Преимущества и недостатки микросервисов
- Критерии декомпозиции системы
- Паттерны коммуникации между сервисами
- Управление данными в микросервисах
2. **Domain-Driven Design (DDD)**
- Стратегическое проектирование
- Тактическое проектирование
- Контекстные карты
- Антипаттерны DDD
3. **Микрофронтенды**
- Архитектура фронтенда
- Интеграция микросервисов и микрофронтендов
- Управление состоянием
### Практический проект:
Проектирование и реализация микросервисной системы с использованием DDD подходов.
## Модуль 3: Контейнеризация и оркестрация (3 недели)
### Компетенции:
- Работа с Docker и контейнеризацией
- Управление оркестрацией с Kubernetes
- Infrastructure as Code
### Темы:
1. **Docker и контейнеризация**
- Основы контейнеризации
- Создание и оптимизация Docker образов
- Docker Compose для локальной разработки
- Лучшие практики контейнеризации
2. **Kubernetes**
- Основы оркестрации
- Pods, Services, Deployments
- ConfigMaps и Secrets
- Ingress и Service Mesh
3. **Infrastructure as Code**
- Terraform основы
- Управление инфраструктурой
- CI/CD пайплайны
- GitOps подходы
### Практический проект:
Развертывание микросервисного приложения в Kubernetes с использованием Terraform.
## Модуль 4: Масштабируемость и отказоустойчивость (3 недели)
### Компетенции:
- Проектирование масштабируемых систем
- Обеспечение отказоустойчивости
- Оптимизация производительности
### Темы:
1. **Паттерны масштабируемости**
- Горизонтальное и вертикальное масштабирование
- Load balancing
- Caching стратегии
- CDN и edge computing
2. **Отказоустойчивость**
- Circuit Breaker паттерн
- Retry и timeout механизмы
- Graceful degradation
- Chaos Engineering
3. **Управление данными**
- Репликация и шардирование
- CAP теорема
- Event Sourcing и CQRS
- Обработка данных в реальном времени
### Практический проект:
Проектирование высоконагруженной системы с обеспечением отказоустойчивости.
## Модуль 5: Мониторинг и наблюдаемость (2 недели)
### Компетенции:
- Настройка систем мониторинга
- Анализ метрик и логов
- Проактивное управление системой
### Темы:
1. **Мониторинг и метрики**
- Prometheus и Grafana
- Типы метрик (counter, gauge, histogram)
- Алертинг и уведомления
- SLI/SLO/SLA концепции
2. **Логирование и трейсинг**
- Централизованное логирование
- Distributed tracing
- OpenTelemetry
- Анализ производительности
3. **Observability**
- Три столпа observability
- Инструментирование приложений
- Debugging в продакшене
### Практический проект:
Настройка полного стека мониторинга для микросервисного приложения.
## Модуль 6: Безопасность и соответствие требованиям (2 недели)
### Компетенции:
- Интеграция безопасности в архитектуру
- Управление доступом и идентификацией
- Соответствие стандартам безопасности
### Темы:
1. **Архитектурная безопасность**
- Security by Design
- Threat modeling
- OWASP Top 10
- Secure coding practices
2. **Управление доступом**
- IAM (Identity and Access Management)
- OAuth 2.0 и OpenID Connect
- RBAC и ABAC
- Zero Trust архитектура
3. **Соответствие требованиям**
- GDPR, SOX, PCI DSS
- Аудит и комплаенс
- Data privacy и protection
### Практический проект:
Проектирование безопасной архитектуры с учетом требований соответствия.
## Модуль 7: Документирование архитектуры (2 недели)
### Компетенции:
- Создание архитектурной документации
- Использование инструментов моделирования
- Коммуникация архитектурных решений
### Темы:
1. **C4 Model**
- Context, Container, Component, Code диаграммы
- Архитектурные диаграммы
- Документирование решений
2. **PlantUML и диаграммы**
- UML диаграммы
- Sequence диаграммы
- Deployment диаграммы
- Архитектурные решения (ADR)
3. **Коммуникация**
- Презентация архитектуры стейкхолдерам
- Техническое лидерство
- Code review и архитектурные ревью
### Практический проект:
Создание полной архитектурной документации с использованием C4 и PlantUML.
## Модуль 8: Облачные технологии и миграция (3 недели)
### Компетенции:
- Работа с облачными платформами
- Стратегии миграции в облако
- Cloud-native архитектура
### Темы:
1. **Облачные платформы**
- AWS, Azure, GCP обзор
- Serverless архитектура
- Managed services
- Cost optimization
2. **Cloud-native паттерны**
- 12-factor app
- Cloud-native архитектура
- Event-driven архитектура
- API Gateway и Service Mesh
3. **Миграция в облако**
- Стратегии миграции
- Lift and shift vs. refactoring
- Hybrid cloud архитектура
- Disaster recovery
### Практический проект:
Миграция монолитного приложения в облачную микросервисную архитектуру.
## Модуль 9: Управление командой и процессы (2 недели)
### Компетенции:
- Техническое лидерство
- Управление архитектурными процессами
- Agile и DevOps практики
### Темы:
1. **Техническое лидерство**
- Роль архитектора в команде
- Принятие архитектурных решений
- Техническое менторство
- Управление техническим долгом
2. **Процессы разработки**
- Agile архитектура
- Continuous Architecture
- Architecture Decision Records (ADR)
- Architecture governance
3. **DevOps и CI/CD**
- DevOps культура
- Continuous Integration/Deployment
- Blue-green и canary deployments
- Feature flags
### Практический проект:
Организация архитектурных процессов в команде разработки.
## Модуль 10: Производительность и оптимизация (2 недели)
### Компетенции:
- Профилирование и оптимизация
- Анализ производительности
- Capacity planning
### Темы:
1. **Профилирование систем**
- Методы профилирования
- Анализ узких мест
- Performance testing
- Load testing
2. **Оптимизация**
- Database optimization
- Caching стратегии
- CDN и edge optimization
- Resource optimization
3. **Capacity Planning**
- Прогнозирование нагрузки
- Scaling стратегии
- Cost optimization
- Resource management
### Практический проект:
Оптимизация производительности высоконагруженной системы.
## Модуль 11: Финальный проект (3 недели)
### Компетенции:
- Комплексное применение всех изученных навыков
- Проектирование полной архитектуры
- Презентация решения
### Задача:
Проектирование и документирование архитектуры крупной распределенной системы с учетом всех изученных аспектов:
- Микросервисная архитектура
- Облачное развертывание
- Мониторинг и безопасность
- Масштабируемость и отказоустойчивость
- Документирование архитектуры
## Итоговые компетенции выпускника:
### Технические компетенции:
- Проектирование микросервисных архитектур
- Работа с Docker и Kubernetes
- Настройка мониторинга и observability
- Обеспечение безопасности архитектуры
- Документирование архитектурных решений
- Оптимизация производительности систем
### Soft Skills:
- Техническое лидерство
- Коммуникация с бизнесом
- Управление архитектурными процессами
- Принятие архитектурных решений
- Менторство и развитие команды
### Инструменты и технологии:
- Docker, Kubernetes, Terraform
- Prometheus, Grafana, ELK Stack
- AWS/Azure/GCP
- PlantUML, C4 Model
- Git, CI/CD инструменты
- Monitoring и logging инструменты
## Формат обучения:
- Онлайн лекции и вебинары
- Практические лабораторные работы
- Индивидуальные проекты
- Peer review и code review
- Менторство от практикующих архитекторов
- Доступ к корпоративным кейсам
## Оценка и сертификация:
- Проектные работы (70%)
- Теоретические тесты (20%)
- Участие в обсуждениях и peer review (10%)
- Итоговый сертификат при успешном завершении всех модулей