System Design in Practice

Навчіться проєктувати розподілені застосунки на реальних бізнес-кейсах

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

Графік

8 червня - 20 липня 2026
Понеділок та четвер (19:30)

Формат

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

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

Зайнятість

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

20 годин ДЗ

Ціна

270$ за курс

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

Про курс

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

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

Такий формат курсу навчить вас ефективно використовувати різні патерни, практики та інструменти в комплексі для проєктування надійних і масштабованих систем з нуля.

Фото автора

Про автора курсу та викладача

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

Technical Architect @SoftServe

 

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

Цей курс для

розробників із 2+ роками досвіду, які хочуть розвивати архітектурні навички та мислення.
Tech Leads та Architects, які прагнуть структурувати й поглибити свої архітектурні знання.

 

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

Огляд бізнес-кейсу та аналіз вимог
У цьому занятті ми:
  • проаналізуємо функціональні вимоги бізнес-кейсу
  • визначимо ключові нефункціональні вимоги (NFRs): performance, scalability, availability, security тощо
  • сформуємо цільові значення для NFRs і визначимо способи їх вимірювання
  • розглянемо приклади, як цільові значення NFRs впливають на архітектурні рішення

Заняття 1 8 червня 2026 19:30
Проєктування доменної моделі
У цьому занятті ми:
  • розробимо доменну модель системи, визначимо сутності та зв'язки між ними
  • використаємо метод Event Storming для аналізу доменної моделі
  • опануємо ключові підходи та патерни Domain Driven Design
  • задокументуємо доменну модель за допомогою ERD

Заняття 2 11 червня 2026 19:30
Проєктування API контрактів
У цьому занятті ми:
  • спроєктуємо API для ключових функціональних вимог
  • порівняємо REST, gRPC, GraphQL та event-driven API з точки зору архітектурних trade-offs
  • розглянемо contract-first design і автоматичну генерацію коду з OpenAPI та Protobuf
  • сформуємо підхід до версіонування API-контрактів та backward compatibility

Заняття 3 15 червня 2026 19:30
Розробка High-Level Design
У цьому занятті ми:
  • розробимо початкову архітектуру, що охоплює функціональні вимоги
  • визначимо, які дані доцільно зберігати в relational storage, а які — в інших типах сховищ
  • розробимо SQL schema для зберігання реляційних даних
  • оберемо NoSQL підходи до зберігання audit logs, пошукових індексів і згенерованих звітів
  • розберемо, де для системи потрібні ACID guarantees, а де допустимі компроміси BASE

Заняття 4 18 червня 2026 19:30
Redesign for Read Scalability
У цьому занятті ми:
  • оптимізуємо систему для 50,000 read-only users
  • розберемо, як поєднувати кілька рівнів кешу (database cache, remote cache, in-memory cache, CDN)
  • розберемо, як зменшувати навантаження на базу через denormalized read models та CQRS
  • застосуємо базові техніки реплікації баз даних PostgreSQL

Заняття 5 22 червня 2026 19:30
Проєктування Full-Text Search
У цьому занятті ми:
  • розберемо вимоги до пошуку, фільтрації та сортування інцидентів
  • розглянемо основні інструменти повнотекстового пошуку: OpenSearch, Algolia, Typesense
  • спроєктуємо базову архітектуру пошуку, розглянемо, чому primary database не варто використовувати напряму для пошуку
  • спроєктуємо indexing pipeline, розглянемо sync vs async indexing, CDC, outbox pattern, черги

Заняття 6 29 червня 2026 19:30
Проєктування Near Real-Time Updates
У цьому занятті ми:
  • спроєктуємо real-time update flow з підтримкою ordering, reconnection та fallback polling для нестабільних клієнтів
  • порівняємо polling, long polling, Server-Sent Events та WebSockets для оновлення даних
  • розберемо засоби масштабування WebSocket з'єднань

Заняття 7 2 липня 2026 19:30
Проєктування Audit Trail та Observability
У цьому занятті ми:
  • розберемо, що таке audit trail: як фіксувати хто, що, коли і в якому об’єкті змінив
  • спроєктуємо асинхронний flow для audit logs: публікація audit events через message broker та запис у NoSQL storage
  • розберемо OpenTelemetry як стандарт для збору logs, metrics і traces та інтеграції з observability-платформами
  • навчимося використовувати distributed tracing для аналізу повного шляху запиту між сервісами, базами даних, чергами

Заняття 8 6 липня 2026 19:30
Проєктування Notifications & Reports Generation
У цьому занятті ми:
  • визначимо, які події в системі мають призводити до надсилання повідомлень користувачам через email, mobile та інші канали
  • спроєктуємо архітектуру notification system: Outbox Pattern, message queue, notification workers, retries, deduplication та idempotent delivery
  • розберемо, коли необхідно генерувати звіти асинхронно
  • спроєктуємо архітектуру генерації звітів: snapshot data, timeline aggregation, PDF renderer, S3 object storage та signed download URLs

Заняття 9 9 липня 2026 19:30
Проєктування аутентифікації та авторизації
У цьому занятті ми:
  • визначимо, як організувати безпечний доступ користувачів до системи
  • інтегруємо в систему OpenID Connect та Auth0 як Identity Provider
  • підберемо підходи до безпечної service-to-service взаємодії
  • розберемо, як працювати з JWT: зберігання, валідація, налаштування тощо
  • спроєктуємо Role-Based Access Control

Заняття 10 13 липня 2026 19:30