Анотація: Навчальна дисципліна «Архітектура програмного забезпечення» присвячена теоретичним та практичним аспектам створення масштабованих, високонавантажених та високодоступних розподілених систем, а також програмного забезпечення на їх основі.
У курсі розглядається базова теорія пов’язана з розподіленими системами і велика частина курсу присвячена мікросервісній архітектурі та шаблонам мікросерівів.
Практичні завдння присвячені розробці невеликих застосувань на основі шаблонів мікросервісів.
У груповому проекті необхідно реалізувати розподілене та відмовостійке застосування на основі мікросервісної архітектури.
Метою навчальної дисципліни є оволодіння проблематикою побудови розподілених систем на прикладі мікросервісної архітектури, а також знайомство з шаблонами мікросервісної архітектури.
Предметом дисципліни є розподілені застосування, що базуються на мікросервісній архітектурі.
Теми:
Розділ 0 – Архітектура застосувань
1. Типи застосувань та їх архітектура
2. Багатошарова архітектура
3. Гексагональна архітектура
Розділ 1 – Розподілені системи
1. Масштабованість, продуктивність, доступність сучасних застосувань
2. Шаблони зв’язку в розподілених системах: RPC, Async, Messaging, gRPC
3. Проблеми комунікації повідомленнями: Duplicate, Delay, Drop, Reorder
Розділ 2 – Монолітна та мікросервісна архітектура
1. Монолітна архітектура – переваги та недоліки
2. Мікросервісна архітектура – переваги та недоліки
Розділ 3 – Шаблони мікросервісної архітектури
1. Структура шаблонів
2. Розподілені транзакції: 2PC, Saga Pattern
3. Шаблони: Service Discovery & Service Registry, Deployment Strategy, DB per service,
API Gateway, Externalized Config, Microservice chassis, Distributed tracing,
Observability, Circuit Breaker, Backpressure
4. Системи обміну повідомленнями: RabbitMQ vs Kafka
5. Архітектура на основі обміну повідомленнями: Event sourcing, CQRS
6. Тестування мікросервісів та Chaos engineering