Курс
Оглавление
7 уровней прогрессии, 25 глав. Отмечайте прочитанное — прогресс сохраняется локально.
0 из 25 прочитано
- 01 Фундамент: coupling, cohesion, SOLID Coupling и Cohesion — единственные две метрики архитектуры, которые действительно важны. SOLID и GRASP — словарь для разговора о них.
- 02 Naming и smells Как имена сигнализируют о проблемах архитектуры. Manager, Helper, Utils — почему красные флаги. Feature Envy, Data Class, Shotgun Surgery.
- 03 Layered Architecture Классическая 3-слойка (Presentation / Business / Data). Что она решала, где не сработала, и почему выросли Hexagonal, Onion, Clean.
- 04 Hexagonal (Ports & Adapters) Cockburn (2005): изоляция core от technology через Ports (интерфейсы) и Adapters (реализации). Primary/secondary ports. Идиоматичная реализация на Python Protocol.
- 05 Onion Architecture Palermo (2008): концентрические слои с domain-model в центре. Отличия от Hexagonal и Clean. Как ложится на DDD tactical.
- 06 Clean Architecture Правило зависимостей, четыре слоя Uncle Bob и Screaming Architecture. Как связаны Clean, Hexagonal и Onion. Роль DI. Где что размещать в реальном Python-микросервисе.
- 07 Screaming Architecture Структура папок должна кричать о бизнесе, а не о фреймворке. Package-by-feature vs package-by-layer. Vertical Slice Architecture (Jimmy Bogard).
- 08 Ubiquitous Language и Bounded Context Единый язык команды и кода внутри контекста. Разные контексты — разный смысл терминов. Anti-Corruption Layer как защита границ.
- 09 DDD Tactical: Entity, Value Object, Aggregate Entity, Value Object, Aggregate, Domain Service. Правила Vernon для aggregate. Как выбрать transactional boundary.
- 10 Domain Events События как first-class citizens в domain. Как aggregate собирает события. Разница domain events и integration events. Публикация через Outbox.
- 11 Strategic Design: Context Map Как контексты общаются между собой: Partnership, Customer-Supplier, ACL, Conformist, Open Host Service, Published Language, Separate Ways.
- 12 Repository Pattern (deep dive) Evans, Fowler, Khorikov, Vernon — четыре точки зрения на Repository. Collection- vs persistence-oriented. Generic Repository и IQueryable-leaking как антипаттерны. Outbox. Критика Seemann. Python + SQLAlchemy 2.x async.
- 13 Unit of Work Управление транзакциями явно. AsyncSession как UoW. Nested transactions. Где живёт транзакция — use case, не repository.
- 14 Mappers и изоляция ORM Data Mapper vs Active Record. Как удержать SQLAlchemy за границей domain. Imperative mapping. Проблемы async lazy loading.
- 15 Anemic vs Rich Domain Model Fowler о анемичной модели. Когда rich model нужна, когда достаточно process-oriented. Как эволюционировать от anemic к rich.
- 16 Sync vs Async: где граница Асинхронность в Python. Когда async оправдан, когда нет. Event loop, structured concurrency, blocking-код в async — типичные ошибки.
- 17 Messaging patterns Enterprise Integration Patterns (Hohpe & Woolf). Pub/sub vs request-reply vs RPC. RabbitMQ vs Kafka. Схема сообщения как контракт.
- 18 Transactional Outbox и идемпотентность Dual-write проблема и её решение через Outbox. Publishing relay. Idempotency keys. Как гарантировать доставку без exactly-once.
- 19 Sagas: распределённые транзакции Orchestration vs Choreography. Compensating actions. Как декомпозировать долгую бизнес-операцию на цепочку локальных транзакций.
- 20 CQRS Command Query Responsibility Segregation. Разные модели для чтения и записи. Когда оправдан, когда — overengineering. Соотношение с Event Sourcing.
- 21 Event Sourcing Хранить события, не состояние. Rebuild aggregate on demand. Versioning событий, snapshots. Когда оправдан, когда — overkill.
- 22 Read models и projections Read side в CQRS: денормализованные модели, проекции, eventual consistency. Materialized views как простой старт.
- 23 Тестирование: пирамида и тестовые двойники Unit, integration, contract, e2e. Mock vs Stub vs Fake. Лондонская vs классическая школа TDD. Что мокать, что нет.
- 24 Cross-cutting: logging, tracing, retries Где живёт логирование. Structured logs. Distributed tracing. Timeout, retry, circuit breaker. Как не загрязнить domain.
- 25 Anti-Patterns Compendium Финальная глава: каталог всех антипаттернов курса в одном месте. Big Ball of Mud, Distributed Monolith, God Object, Anemic Domain, Service Locator, Shared Database. Признаки, причины, лечение.