Мікросервісна архітектура
Владислав Карнаушенко
Tech Lead у Preply
10+ років досвіду в ІТ

14 онлайн-занять
[щовівторка та щочетверга]
Курс, який навчить «ділити» одну велику систему на кілька, щоби зробити її стійкою до навантаження, збоїв і зламів. Ви опануєте головні принципи розробки мікросервісної архітектури та навчитеся проєктувати незалежні сервіси, а потім інтегрувати їх в одну систему.
* Для навчання необхідний досвід роботи з базами даних, розуміння мережевої взаємодії, наявність комерційного досвіду розробки або супроводження вебсервісів від 1 року.
** курс викладається українською мовою
щоби навчитися проєктувати мікросервіси, розробляти та імплементувати їх у великі корпоративні системи, а також підтримувати їхню роботу на проєкті.
щоби зрозуміти, як використовувати мікросервісну архітектуру для розвʼязання бізнес-задач, та навчитися масштабувати монолітні застосунки.
щоби переглянути підхід до розробки, впроваджувати безперервне приймальне тестування, розгортання і моніторинг мікросервісних застосунків.

Розробники все частіше звертаються до розподіленої архітектури, щоби краще масштабувати навантаження та пришвидшити розробку, але через брак досвіду в доменній декомпозиції та організації міжсервісної взаємодії отримують зворотний результат.
Впродовж цього курсу ми розглянемо популярні концепції побудови мікросервісної архітектури та навчимося впроваджувати технічні рішення під задачі бізнесу. Почнемо з дослідження переваг мікросервісів над монолітами, розглянемо принципи моделювання й декомпозиції. Далі ― навчимося організовувати роботу розподілених транзакцій і будувати середовище для експлуатації мікросервісної архітектури: тестування, розгортання і моніторинг. Практики буде багато.
- розумієте сильні та слабкі сторони мікросервісної архітектури
- знаєте основні типи міжсервісної взаємодії, знайомі з нюансами синхронної й асинхронної моделей комунікації
- розумієте, як організувати команду та побудувати стратегію для роботи з мікросервісною архітектурою
- впроваджуєте ефективні технічні рішення за допомогою мікросервісної архітектури
- вмієте створювати проєктну документацію і презентувати технічні рішення керівництву
- забезпечуєте швидкість додавання нового функціоналу в продукт
- знаєте, як організувати міграцію моноліта в мікросервіси
- берете участь у проєктуванні мікросервісних застосунків
- вмієте допомагати компаніям знижувати витрати на виробництво та підтримку великих монолітних сервісів, а отже, стаєте цінним фахівцем, якого бажають зхантити
- маєте достатньо експертності для створення великих систем за допомогою розподіленої архітектури

- Архітектура та нефункціональні вимоги
- Модульний та розподілений моноліти
- Сервісно-орієнтована архітектура (SOA)
- Мікросервіси: переваги,недоліки, порівняння з монолітом
- Наносервіси
- Метрики об’єктно-орієнтованого дизайну (cohesion, coupling)
- Вступ до доменно-орієнтованого дизайну (DDD)
- Агрегати, обмеження контексту (Bounded contexts)
- DDD для проєктування мікросервісів
- Використання спільних бібліотек
- C4 діаграми
- Практика
- Принципи декомпозиції мікросервісів
- Пошарова декомпозиція
- Декомпозиція за потребами бізнесу
- Декомпозиція за DDD
- Декомпозиція та організаційна структура
- Патерни декомпозиції (ACL, strangler application, feature flag)
- Проблеми з розподіленням даних
- Використання спільних даних (Common data)
- Синхронна та асинхронна моделі комунікації
- Модель request / response
- Виклик віддалених процедур та використання gRPC
- REST та GraphQL
- Діаграми послідовностей (Sequence diagram)
- Подійно-орієнтована комунікація (event-driven)
- Брокери повідомлень (push та pull моделі, Apache Kafka, RabbitMQ)
- Серіалізація
- Реєстр сервісів
- Зворотно несумісні зміни
- ACID
- Двофазний коміт (2PC)
- Локи (Locks)
- Sagas
- Відстежування зміни даних (CDC)
- Монолітний фронтенд, мікрофронтенди та page based декомпозиція
- BFF
- CQRS
- Sidecar
- Aggregator
- Chained microservices
- Proxy
- Service meshes
- API Gateway
- Gateway маршрутизація
- Сервісні тести
- Тести e2e та flakiness
- Тести контрактів
- Проблеми мережевої комунікації
- Модель BASE та CAP теорема (AP vs CP)
- Таймаути та повторні спроби
- Патерн Circuit breaker
- Патерн Bulkhead
- Надлишковість
Домашнє завдання:тести
- Інфраструктура як код (IaC)
- Фізичні та віртуальні сервери
- Kubernetes та Docker Swarm
- Serverless
- Continuous integration
- Blue/green deployment та Progressive delivery (Canary)
- Осі масштабування
- Автоматичне масштабування
- Serverless scaling
- Стратегії кешування
- Агрегування логів
- Розподілення трасування
- Метрики
- Alerting та Anomaly detection
- SLA та SLO
- Метрики інцидентів (MTBF, MTTR, MTTF, MTTA)
- Базові принципи та OWASP
- Шифрування at rest / in transit
- Міжсервісна аутентифікація
- SSO
- JWT
- Закон Конвея
- Agile та архітектура
- Моделі відповідальності
- Платформа