python-basics

System Design

Архитектурное «мясо»: то, чем оперируешь, когда рисуешь систему на доске, плюс как проходить саму сисдиз-секцию (тайминг, C4, фрейм ответа) — см. в конце.

Нефункциональные требования (NFR)

API & контракты

Кэширование

Асинхронщина и фоновые задачи

Надёжность и отказоустойчивость

Observability

Миграции и эволюция системы

Архитектурные подходы (DDD + event-driven)

  1. Когда DDD — оверхед?
  2. Как bounded context ложится на микросервисы?
  3. Что делать, если бизнес-логика простая?
  4. Repository на примере abstraction над storage: почему не дергать ORM напрямую?
  5. Entity vs Value Object
  6. Event vs Command: CreateOrder (command) vs OrderCreated (event)
  7. PubSub: producer не знает consumer + слабая связность системы
  8. Eventual Consistency: данные сходятся “не сразу” + между сервисами нет транзакций. Пример: пользователь создал заказ, но не видит его сразу — почему?
  9. Outbox Pattern

Ссылочки, пока работают

Базы данных

Очереди

Главное — модель мышления, а не список отличий.

  1. «У тебя события оплаты и уведомления. Какую очередь выберешь и почему?»

Kubernetes

  1. Почему нельзя просто увеличить replicas и всё станет хорошо?

Облака

  1. Что ты возьмёшь managed, а что оставишь самописным — и почему?

Процесс сисдиз-интервью

Общие рекомендации

Бонусные секции, если осталось время

Универсальный фрейм для любого вопроса

  1. Простое базовое решение
  2. Проблемы базового решения
  3. Улучшения по мере роста
  4. Трейдофы