раздел 09

Backend

REST, RPC, слои, границы, кеши, очереди. Всё, из чего состоит серверная часть.

26 уроков104 тем · 13 кластеров

Начать раздел
Хочу пройти

Без входа у каждого урока видно начало. Войди, чтобы читать целиком, отмечать пройденное и решать задачи. войти

Уроки раздела

  1. Кеширование: что класть, что нет и как решатьS~60 мин
  2. Functional Core, Imperative Shell: где решение, где действиеMS~50 мин
  3. Структура приложения: клиент, сервер и слоиJ~40 мин
  4. REST на практике: ресурсы, версии, пагинацияM~45 мин
  5. GraphQL, gRPC и кодогенерацияM~40 мин
  6. Коммуникация и realtime: что выбрать в APIM~30 мин
  7. Слои, гексагон и Clean: стрелки внутрьMS~35 мин
  8. DDD: стратегия и тактикаMS~30 мин
  9. Прагматичные альтернативы DDD · часть 1MS~35 мин
  10. Прагматичные альтернативы DDD · часть 2S~35 мин
  11. Философия границ: линзы · часть 1S~30 мин
  12. Философия границ: линзы · часть 2S~30 мин
  13. DI и слои данных: кто собирает граф и сколько нужно моделейMS~35 мин
  14. CAP и PACELC: распределённые системы без магииMS~40 мин
  15. CQRS и Event Sourcing: всерьёз и без фанатизмаS~35 мин
  16. Serverless и два кейса системного дизайнаS~35 мин
  17. Микросервисы: когда они оправданыMS~35 мин
  18. Паттерны отказоустойчивостиMS~35 мин
  19. Надёжная доставка: outbox, inbox и сагиMS~35 мин
  20. Паттерны очередей и интеграцииS~25 мин
  21. Топология микросервисов: gateway, discovery, meshS~30 мин
  22. Multi-tenancy: изоляция данных и provisioning тенантаS~40 мин
  23. SaaS и деньги: платежи, webhooks, подписки, meteringS~40 мин
  24. SaaS для enterprise: квоты, фичефлаги, SSO, audit logS~40 мин
  25. Лестница моделирования: онтологии, C4, Event Storming, FSMMS~35 мин
  26. Процессы и формальные методы: BPMN, workflow engines, TLA+S~35 мин

Понятия курса

Понятия разобраны внутри уроков. Нажми на понятие, чтобы открыть урок, где оно объясняется.

API Design

Стили архитектуры

Прагматичные альтернативы DDD

Философия границ

  • Линза: Data Ownership / Source of TruthКто пишет в эту таблицу. Если двум сервисам нужна одна сущность, владелец должен быть ровно один (через outbox/events отдаёт остальным). Без этого двойные записи и конфликты.урок 11 · Философия границ: линзы · часть 1
  • Линза: Deployment CadenceЧто деплоится вместе. Если две части системы всегда деплоятся одной транзакцией, они принадлежат одному модулю. Если разделены, независимый деплой обязан работать.урок 12 · Философия границ: линзы · часть 2
  • Линза: Domain Language (DDD Bounded Context)Где меняется смысл слова. Customer в биллинге это запись с tax ID и payment method, в маркетинге это lead с trackable interactions. Один термин, две модели, разные инварианты.урок 11 · Философия границ: линзы · часть 1
  • Линза: Failure / Blast RadiusЧто не должно валиться вместе. Если падение notifications валит payments, граница нарисована неправильно. Bulkhead-паттерн это техническая реализация.урок 11 · Философия границ: линзы · часть 1
  • Линза: Lifecycle / ReplaceabilityЧто мы планируем переписать через год. Изолируй уже сейчас. Strangler Fig работает только если граница вокруг "к удалению" части проведена заранее.урок 12 · Философия границ: линзы · часть 2
  • Линза: Performance / Scaling ProfileЧто нужно масштабировать независимо. Read-heavy vs write-heavy, CPU-bound vs I/O-bound, latency-sensitive vs batch. Если в одном сервисе живут разные профили, они мешают друг другу.урок 12 · Философия границ: линзы · часть 2
  • Линза: Rate of ChangeЧто меняется раз в неделю vs раз в год. Часто меняющийся код стоит изолировать от стабильного: иначе rebuild/redeploy/regression-tests стабильной части идут впустую.урок 11 · Философия границ: линзы · часть 1
  • Линза: Security / Trust BoundaryКто кому доверяет. Internal API vs public API, admin zone vs user zone, multi-tenant isolation. Trust boundary всегда требует жёсткой проверки на границе, естественное место для шва.урок 12 · Философия границ: линзы · часть 2
  • Линза: Team Topologies (закон Конвея)Кто этим владеет. Системы повторяют структуру коммуникации команд. Если граница модуля не совпадает с границей команды, получаешь гонки на code review или параллельные теневые реализации.урок 11 · Философия границ: линзы · часть 1
  • Линза: Compliance / RegulationPII vs non-PII, PCI-DSS зона vs всё остальное, GDPR vs обычные данные. Регуляторные границы часто обязывают изоляцию, даже если по другим линзам она не нужна.урок 12 · Философия границ: линзы · часть 2
  • Философия линз: как проводить границыГраница в системе это проекция на конкретную ось. Bounded Context из DDD это лишь одна линза (через язык домена). Есть ~10 других линз, и хороший шов совпадает по большинству.урок 11 · Философия границ: линзы · часть 1опираются: урок 12, урок 17
  • Convergence: качество шва = число совпадающих линзШов хороший, если совпадает по большинству линз сразу. Если совпадает по 1-2 (пример: только техно-стек), получаем distributed monolith. Главная эвристика проектирования швов.урок 12 · Философия границ: линзы · часть 2

DI и слои

Distributed

Microservices patterns

Messaging

Web architecture

Парадигмы и codegen

Application structure

Моделирование (9-bis)

SaaS-паттерны