Каноническая программа чтения

19 работ, покрывающих ~80% содержания курса. Читать в любом порядке.

  • статья · 2005
    Hexagonal Architecture

    Alistair Cockburn

    Оригинальная статья. Формулировка Ports & Adapters. Один текст, но столько всего вытекает.

    hexagonalports-adapters
  • книга · 2018
    Microservices Patterns

    Chris Richardson

    Каталог микросервисных паттернов. Transactional Outbox, Saga, API Composition. Дополняется microservices.io.

    microservicessagaoutbox
  • книга · 2004
    Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design

    Craig Larman

    Классика с формулировкой GRASP-паттернов. Дополнение SOLID более прикладной оптикой.

    graspooad
  • книга · 2003
    Domain-Driven Design: Tackling Complexity in the Heart of Software

    Eric Evans

    Основополагающая работа по DDD. Читается тяжело, но переопределяет весь язык проектирования сложного домена.

    dddaggregateubiquitous-languagebounded-context
  • работа · 2010
    CQRS Documents

    Greg Young

    PDF от автора паттерна. Формулировки CQRS и связь с event sourcing.

    cqrsevent-sourcing
  • доклад · 2014
    Event Sourcing (talks and articles)

    Greg Young

    Талки Грега Янга — самое ясное объяснение ES. Особенно "8 lines of code" talk.

    event-sourcing
  • книга · 2003
    Enterprise Integration Patterns

    Gregor Hohpe, Bobby Woolf

    Каталог messaging-паттернов: pipes and filters, message routing, transformation, endpoints. Библия интеграции.

    messagingintegrationeip
  • книга · 2020
    Architecture Patterns with Python (Cosmic Python)

    Harry Percival, Bob Gregory

    Практическое DDD + Hexagonal на Python. Бесплатно на cosmicpython.com. Обязательно для Python-разработчиков.

    pythondddhexagonalrepository
  • статья · 2017
    DDD, Hexagonal, Onion, Clean, CQRS: how I put it all together

    Herberto Graça

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

    architecture-synthesishexagonalcleanonionddd
  • книга · 2019
    Dependency Injection Principles, Practices, and Patterns

    Mark Seemann, Steven van Deursen

    Точное определение Composition Root, критика Service Locator, всё о Pure DI. .NET-примеры, но принципы универсальные.

    dicomposition-rootservice-locator
  • книга · 2002
    Patterns of Enterprise Application Architecture

    Martin Fowler

    PoEAA — каталог enterprise-паттернов. Repository, Unit of Work, Data Mapper, Query Object — оригинальные формулировки здесь.

    patternsrepositoryunit-of-workdata-mapperactive-record
  • книга · 2017
    Designing Data-Intensive Applications

    Martin Kleppmann

    Библия распределённых систем. Chapter 11 (streams) — критично для понимания Outbox и event-driven архитектур.

    datastreamsdistributed-systems
  • блог · 2012
    The Clean Architecture

    Robert C. Martin

    Первая формулировка Clean Architecture, ставшая канонической. Компактно, до книги 2017.

    clean-architecture
  • книга · 2017
    Clean Architecture: A Craftsman's Guide to Software Structure and Design

    Robert C. Martin

    Синтез Hexagonal, Onion, DCI и BCE. Четыре слоя, правило зависимостей, SOLID детально.

    clean-architecturesoliddependency-rule
  • книга · 2021
    Building Microservices (2nd Edition)

    Sam Newman

    Практическая книга о микросервисах. Вопросы декомпозиции, sync/async, security, testing.

    microservicesdecompositionddd
  • книга · 2018
    Domain Modeling Made Functional

    Scott Wlaschin

    DDD через типы (F#), но идеи применимы к любому языку с типами. Illegal states unrepresentable.

    dddfunctionaltypes
  • книга · 2016
    Domain-Driven Design Distilled

    Vaughn Vernon

    Компактное введение в DDD — 150 страниц вместо 500. Хорошая точка входа.

    dddstrategicbounded-context
  • книга · 2013
    Implementing Domain-Driven Design

    Vaughn Vernon

    Практическое дополнение к Evans. Chapter 12 (Repositories) — обязательное чтение по паттерну.

    dddaggregaterepositorytactical
  • книга · 2020
    Unit Testing: Principles, Practices, and Patterns

    Vladimir Khorikov

    Классификация тестов по школам (лондонская / классическая), правила Repository, критика over-mocking. Обязательная книга.

    testingmocksrepository

Дополнительно

26 источников для углубления в конкретные темы.

  • книга · 2019
    The Pragmatic Programmer (20th Anniversary Edition)

    Andy Hunt, David Thomas

    Оригинальная формулировка DRY. Обновлено к 2019, но идеи из 1999 всё ещё центральные.

    dryprinciplescareer
  • книга · 1997
    Object-Oriented Software Construction (2nd Edition)

    Bertrand Meyer

    Оригинальная формулировка Open/Closed Principle и Design by Contract. Тяжёлая, но фундаментальная.

    ooaddesign-by-contractopen-closed
  • книга · 2016
    Site Reliability Engineering

    Betsy Beyer et al. (Google)

    Бесплатно на sre.google. Timeout, retry, circuit breaker, load shedding — практика с продакшена.

    srereliabilityobservability
  • работа · 1997
    Big Ball of Mud

    Brian Foote, Joseph Yoder

    Классическая работа об архитектуре, которую никто не проектировал. До сих пор актуальна.

    anti-patternarchitecture
  • курс
    Microservices.io — Pattern Catalog

    Chris Richardson

    Онлайн-каталог микросервисных паттернов от автора Microservices Patterns.

    microservicespatternssagaoutbox
  • книга · 2007
    xUnit Test Patterns: Refactoring Test Code

    Gerard Meszaros

    Определения dummy, stub, spy, mock, fake. Референс для разговора о тестовых двойниках.

    testingmockstest-doubles
  • работа · 2012
    PEP 3156 — Asynchronous IO Support Rebooted

    Guido van Rossum

    Оригинальный PEP asyncio. Мотивация и дизайн event loop в Python.

    pythonasyncio
  • работа · 1987
    Sagas

    Hector Garcia-Molina, Kenneth Salem

    Оригинальная работа. Длинные транзакции разбиваются на локальные с compensating actions.

    sagatransactionsdistributed
  • блог · 2008
    The Onion Architecture (Part 1–4)

    Jeffrey Palermo

    Серия постов, определившая Onion как альтернативу Hexagonal с явным domain-центром.

    onionlayers
  • доклад · 2018
    Vertical Slice Architecture

    Jimmy Bogard

    Feature-first организация вместо layer-first. Хорошо ложится на MediatR/CQRS.

    vertical-slicecqrsmediator
  • книга · 2002
    Test Driven Development: By Example

    Kent Beck

    Каноническая книга по TDD. Red — Green — Refactor как метод, а не догма.

    tddtesting
  • книга · 2023
    Tidy First? A Personal Exercise in Empirical Software Design

    Kent Beck

    Beck о том, когда прибираться до и когда — после. Rule of three, экономика refactoring.

    refactoringdesignempirical
  • статья · 2003
    Anemic Domain Model

    Martin Fowler

    Оригинальная статья, назвавшая паттерн антипаттерном. Короткая, но переопределила разговор о rich domain.

    anemicanti-patterndomain
  • статья · 2011
    CQRS

    Martin Fowler

    Fowler о CQRS: короткое, точное определение и трезвая позиция «not everywhere».

    cqrs
  • статья · 2005
    Domain Event

    Martin Fowler

    Определение domain event как «объекта, представляющего интересный факт».

    domain-events
  • статья · 2005
    Event Sourcing

    Martin Fowler

    Ранняя формулировка Event Sourcing с примерами и trade-offs.

    event-sourcing
  • книга · 2018
    Refactoring: Improving the Design of Existing Code (2nd Edition)

    Martin Fowler

    Каталог code smells и refactoring-приёмов. Второе издание с JavaScript, но paradigm-independent.

    refactoringcode-smells
  • курс
    Pact — Contract Testing

    Pact Foundation

    Consumer-driven contract testing — стандарт де-факто для микросервисов.

    testingcontract-testingmicroservices
  • доклад · 2022
    Fear and Awaiting in Async: Beyond the Basics

    Raymond Hettinger

    Хеттингер как всегда — ясно и по делу. Про подводные камни asyncio.

    pythonasyncioconcurrency
  • книга · 2008
    Clean Code: A Handbook of Agile Software Craftsmanship

    Robert C. Martin

    Спорная, но обязательная к прочтению для понимания SRP и naming.

    clean-codenamingfunctions
  • блог · 2011
    Screaming Architecture

    Robert C. Martin

    Идея о том, что структура папок должна «кричать» о бизнесе, а не о фреймворке.

    screamingfoldersuse-cases
  • книга · 2012
    Practical Object-Oriented Design in Ruby (POODR)

    Sandi Metz

    Метис пишет об ООП понятно и практично. Ruby-примеры, но идеи универсальные.

    ooaddesignrefactoring
  • книга · 2009
    Growing Object-Oriented Software, Guided by Tests

    Steve Freeman, Nat Pryce

    Каноническая книга «лондонской школы» TDD. Активное использование mock-объектов.

    testingtddmocksooad
  • книга · 2019
    Get Your Hands Dirty on Clean Architecture

    Tom Hombergs

    Пошаговый пример Clean Architecture на Java. Хорошо дополняет теорию Uncle Bob практикой.

    clean-architecturehexagonaljava
  • доклад · 2010
    Sagas (talks, articles)

    Udi Dahan

    Дахан о том, почему race conditions — иллюзия и как их разрешать через сагу.

    sagadddmessaging
  • работа · 2011
    Effective Aggregate Design

    Vaughn Vernon

    Три статьи, сформулировавшие правила: small aggregates, reference by ID, eventual consistency. Читается за час, окупается годами.

    dddaggregatedesign-rules