Первоисточники
Библиотека
45 канонических работ, на которых стоит курс. Каноническая программа чтения помечена особо.
Каноническая программа чтения
19 работ, покрывающих ~80% содержания курса. Читать в любом порядке.
- Hexagonal Architecture
Оригинальная статья. Формулировка Ports & Adapters. Один текст, но столько всего вытекает.
hexagonalports-adapters - Microservices Patterns
Каталог микросервисных паттернов. Transactional Outbox, Saga, API Composition. Дополняется microservices.io.
microservicessagaoutbox - Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design
Классика с формулировкой GRASP-паттернов. Дополнение SOLID более прикладной оптикой.
graspooad - Domain-Driven Design: Tackling Complexity in the Heart of Software
Основополагающая работа по DDD. Читается тяжело, но переопределяет весь язык проектирования сложного домена.
dddaggregateubiquitous-languagebounded-context - CQRS Documents
PDF от автора паттерна. Формулировки CQRS и связь с event sourcing.
cqrsevent-sourcing - Event Sourcing (talks and articles)
Талки Грега Янга — самое ясное объяснение ES. Особенно "8 lines of code" talk.
event-sourcing - Enterprise Integration Patterns
Каталог messaging-паттернов: pipes and filters, message routing, transformation, endpoints. Библия интеграции.
messagingintegrationeip - Architecture Patterns with Python (Cosmic Python)
Практическое DDD + Hexagonal на Python. Бесплатно на cosmicpython.com. Обязательно для Python-разработчиков.
pythondddhexagonalrepository - DDD, Hexagonal, Onion, Clean, CQRS: how I put it all together
Синтез всех архитектурных подходов. Показывает, что они говорят об одном и том же разными словами.
architecture-synthesishexagonalcleanonionddd - Dependency Injection Principles, Practices, and Patterns
Точное определение Composition Root, критика Service Locator, всё о Pure DI. .NET-примеры, но принципы универсальные.
dicomposition-rootservice-locator - Patterns of Enterprise Application Architecture
PoEAA — каталог enterprise-паттернов. Repository, Unit of Work, Data Mapper, Query Object — оригинальные формулировки здесь.
patternsrepositoryunit-of-workdata-mapperactive-record - Designing Data-Intensive Applications
Библия распределённых систем. Chapter 11 (streams) — критично для понимания Outbox и event-driven архитектур.
datastreamsdistributed-systems - The Clean Architecture
Первая формулировка Clean Architecture, ставшая канонической. Компактно, до книги 2017.
clean-architecture - Clean Architecture: A Craftsman's Guide to Software Structure and Design
Синтез Hexagonal, Onion, DCI и BCE. Четыре слоя, правило зависимостей, SOLID детально.
clean-architecturesoliddependency-rule - Building Microservices (2nd Edition)
Практическая книга о микросервисах. Вопросы декомпозиции, sync/async, security, testing.
microservicesdecompositionddd - Domain Modeling Made Functional
DDD через типы (F#), но идеи применимы к любому языку с типами. Illegal states unrepresentable.
dddfunctionaltypes - Domain-Driven Design Distilled
Компактное введение в DDD — 150 страниц вместо 500. Хорошая точка входа.
dddstrategicbounded-context - Implementing Domain-Driven Design
Практическое дополнение к Evans. Chapter 12 (Repositories) — обязательное чтение по паттерну.
dddaggregaterepositorytactical - Unit Testing: Principles, Practices, and Patterns
Классификация тестов по школам (лондонская / классическая), правила Repository, критика over-mocking. Обязательная книга.
testingmocksrepository
Дополнительно
26 источников для углубления в конкретные темы.
- The Pragmatic Programmer (20th Anniversary Edition)
Оригинальная формулировка DRY. Обновлено к 2019, но идеи из 1999 всё ещё центральные.
dryprinciplescareer - Object-Oriented Software Construction (2nd Edition)
Оригинальная формулировка Open/Closed Principle и Design by Contract. Тяжёлая, но фундаментальная.
ooaddesign-by-contractopen-closed - Site Reliability Engineering
Бесплатно на sre.google. Timeout, retry, circuit breaker, load shedding — практика с продакшена.
srereliabilityobservability - Big Ball of Mud
Классическая работа об архитектуре, которую никто не проектировал. До сих пор актуальна.
anti-patternarchitecture - Microservices.io — Pattern Catalog
Онлайн-каталог микросервисных паттернов от автора Microservices Patterns.
microservicespatternssagaoutbox - xUnit Test Patterns: Refactoring Test Code
Определения dummy, stub, spy, mock, fake. Референс для разговора о тестовых двойниках.
testingmockstest-doubles - PEP 3156 — Asynchronous IO Support Rebooted
Оригинальный PEP asyncio. Мотивация и дизайн event loop в Python.
pythonasyncio - Sagas
Оригинальная работа. Длинные транзакции разбиваются на локальные с compensating actions.
sagatransactionsdistributed - The Onion Architecture (Part 1–4)
Серия постов, определившая Onion как альтернативу Hexagonal с явным domain-центром.
onionlayers - Vertical Slice Architecture
Feature-first организация вместо layer-first. Хорошо ложится на MediatR/CQRS.
vertical-slicecqrsmediator - Test Driven Development: By Example
Каноническая книга по TDD. Red — Green — Refactor как метод, а не догма.
tddtesting - Tidy First? A Personal Exercise in Empirical Software Design
Beck о том, когда прибираться до и когда — после. Rule of three, экономика refactoring.
refactoringdesignempirical - Anemic Domain Model
Оригинальная статья, назвавшая паттерн антипаттерном. Короткая, но переопределила разговор о rich domain.
anemicanti-patterndomain - CQRS
Fowler о CQRS: короткое, точное определение и трезвая позиция «not everywhere».
cqrs - Domain Event
Определение domain event как «объекта, представляющего интересный факт».
domain-events - Event Sourcing
Ранняя формулировка Event Sourcing с примерами и trade-offs.
event-sourcing - Refactoring: Improving the Design of Existing Code (2nd Edition)
Каталог code smells и refactoring-приёмов. Второе издание с JavaScript, но paradigm-independent.
refactoringcode-smells - Pact — Contract Testing
Consumer-driven contract testing — стандарт де-факто для микросервисов.
testingcontract-testingmicroservices - Fear and Awaiting in Async: Beyond the Basics
Хеттингер как всегда — ясно и по делу. Про подводные камни asyncio.
pythonasyncioconcurrency - Clean Code: A Handbook of Agile Software Craftsmanship
Спорная, но обязательная к прочтению для понимания SRP и naming.
clean-codenamingfunctions - Screaming Architecture
Идея о том, что структура папок должна «кричать» о бизнесе, а не о фреймворке.
screamingfoldersuse-cases - Practical Object-Oriented Design in Ruby (POODR)
Метис пишет об ООП понятно и практично. Ruby-примеры, но идеи универсальные.
ooaddesignrefactoring - Growing Object-Oriented Software, Guided by Tests
Каноническая книга «лондонской школы» TDD. Активное использование mock-объектов.
testingtddmocksooad - Get Your Hands Dirty on Clean Architecture
Пошаговый пример Clean Architecture на Java. Хорошо дополняет теорию Uncle Bob практикой.
clean-architecturehexagonaljava - Sagas (talks, articles)
Дахан о том, почему race conditions — иллюзия и как их разрешать через сагу.
sagadddmessaging - Effective Aggregate Design
Три статьи, сформулировавшие правила: small aggregates, reference by ID, eventual consistency. Читается за час, окупается годами.
dddaggregatedesign-rules