System Design

Курс з проєктування розподілених систем

Зареєструватись на курс

Графік

13 квітня - 28 травня 2026
Понеділок та четвер (19:30)

Формат

Зустрічі в Zoom (+запис)

Постійний зв'язок у Slack

Зайнятість

14 занять по 1.5 години

40 годин ДЗ

Ціна

330$ за курс

Манібек 7 днів

Про курс

Навички System Design є одними з ключових для сучасного розробника. Яку стратегію інвалідації кешу застосувати? Як безпечно виокремити логіку з моноліту в новий мікросервіс? Як вирішити проблеми ordering та duplication під час роботи з message-брокерами? Розуміння цих та багатьох інших архітектурних питань необхідне розробнику для проєктування нового функціоналу, виявлення слабких місць в існуючих системах та успішного проходження технічних інтерв’ю.

Протягом навчання ми пройдемо повний цикл проєктування розподілених систем: від збору функціональних і нефункціональних вимог, проєктування API та роботи з message-брокерами до побудови кешування, масштабування й проєктування аутентифікації.

Особливу увагу буде приділено практиці: кожна тема супроводжуватиметься реальними кейсами з production-систем — як прикладами успішних рішень, так і аналізом типових помилок.

Фото автора

Про автора курсу та лектора

Олександр Марфут  LinkedIn Telegram

Application Architect @SoftServe

 

Спеціалізується на проєктуванні хмарних архітектур, модернізації legacy-систем та побудові інтеграцій між корпоративними системами.

 

Програма курсу

Функціональні та нефункціональні вимоги
  • Різниця між функціональними та нефункціональними вимогами
  • Ключові NFR: Performance, Scalability, Availability, Reliability
  • Вплив нефункціональних вимог на архітектуру продукту
  • Як вимірювати нефункціональні вимоги
  • Fault Tolerance, High Availability
  • SLA, SLO, SLI та їх роль у продуктовій розробці

Заняття 1 13.04.2026 19:30
Основи мереж та клієнт-серверної взаємодії
  • Принципи клієнт-серверної архітектури
  • DNS: резолвінг імен, кешування, TTL
  • Як побудовані HTTP та HTTPS (handshake, headers, cookies, TLS)
  • Real-time комунікація: WebSockets, Server-Sent Events (SSE)
  • Проблеми WebSockets в розподілених системах

Заняття 2 16.04.2026 19:30
Проєктування API контрактів
  • Проєктування REST API: контракти та правила взаємодії
  • Вибір HTTP методів, статусів та обробка помилок
  • Сценарії застосування REST API. Плюси та мінуси
  • Підходи до версіонування API та backward compatibility
  • Документація REST API (OpenAPI / Swagger)

Заняття 3 20.04.2026 19:30
Синхронна інтеграція сервісів
  • Коли синхронна інтеграція є правильним вибором
  • Порівняння синхронних протоколів: REST, gRPC, GraphQL
  • Ризики tight coupling та як їх мінімізувати
  • Resilience patterns: Retry, Timeout, Circuit Breaker
  • Fallback-стратегії та graceful degradation
  • Rate Limiting та Throttling: сценарії застосування

Заняття 4 23.04.2026 19:30
Використання API Gateway в архітектурі
  • Роль API Gateway в мікросервісній архітектурі
  • Порівняння API Gateway з Reverse Proxy, Backend for Frontend
  • Як налаштувати типові політики: authentication, rate limiting, caching
  • Порівняння моделей API Key, OAuth 2.0 Client Credentials, Service Principal

Заняття 5 27.04.2026 19:30
Асинхронна інтеграція сервісів
  • Сценарії застосування асинхронної інтеграції
  • Патерни: Point-to-Point, Publish–Subscribe, Request–Reply, Message Routing
  • Delivery semantics: At-least-once, At-most-once, Exactly-once
  • Проблеми reordered messages та deduplication
  • Outbox pattern: навіщо і як імплементувати
  • Command vs Event: вплив на архітектуру

Заняття 6 30.04.2026 19:30
Моделювання та зберігання даних
  • ACID vs BASE: компроміси та реальні кейси
  • Типи даних: структуровані, напівструктуровані, неструктуровані
  • SQL vs NoSQL: підходи та патерни до моделювання даних
  • Blob storage: сценарії використання та обмеження
  • Polyglot persistence: приклади поєднання різних типів сховищ в межах однієї системи

Заняття 7 4.05.2026 19:30
Масштабування баз даних
  • Вертикальне та горизонтальне масштабування БД
  • Indexing, SQL tuning, partitioning, replication
  • Денормалізація як інструмент продуктивності
  • Застосування Optimistic vs Pessimistic locking

Заняття 8 7.05.2026 19:30
Кешування: вступ
  • Навіщо потрібен кеш і які проблеми він вирішує
  • Рівні кешу: Database, Remote (Redis), In-memory, CDN, Browser
  • Cache-aside pattern: імплементація, сценарії застосування
  • Проєктування ефективних cache keys

Заняття 9 11.05.2026 19:30
Кешування: просунуті техніки
  • Типові проблеми: cache stampede, hot keys, stale data
  • Техніки інвалідації кешу та eviction policies
  • Write-through та Write-behind патерни
  • Redis як кеш: обмеження та ризики

Заняття 10 14.05.2026 19:30
Масштабування computing сервісів
  • Horizontal vs Vertical scaling
  • Алгоритми балансування навантаження
  • Проблеми масштабування: cold start, state, race conditions, cost
  • Інструменти масштабування в хмарних середовищах
  • HAProxy + Nginx: базова конфігурація

Заняття 11 18.05.2026 19:30
Аутентифікація і авторизація
  • OAuth 2.0 та OpenID Connect: розбір типових моделей авторизації
  • Принципи роботи з Identity Providers (на прикладі Auth0)
  • Role-Based та Permission-Based access control
  • Session management в розподілених системах
  • JWT: структура, lifecycle, security pitfalls

Заняття 12 21.05.2026 19:30
Проєктування хмарної архітектури
  • Основи cloud-native архітектур
  • Compute, Networking, Storage як основні building blocks
  • Розбір типових reference архітектур Azure та AWS

Заняття 13 25.05.2026 19:30
Проєктування функціоналу у мікросервісах

Це заняття надасть детальний аналіз архітектури реальних кейсів для типових проблем.

  • Як спроєктувати Full text search для великих обсягів даних
  • Як спроєктувати Audit Trail в мікросервісній архітектурі
  • Як виокремити функціональність з моноліту в окремий мікросервіс
  • Як спроєктувати довготривалий процес генерації та завантаження великого файлу

Заняття 14 28.05.2026 19:30