Evolutionary Architecture (Ford/Parsons/Kua, 2017, 2nd ed 2022): architecture supports guided incremental change. Fitness functions = automated checks of architectural characteristics in CI. Architectural quanta = independently deployable cohesive units. Strangler Fig pattern (Fowler) for legacy migration. Modular monolith ready for split. Topology: Repo + CI pipeline (lint, unit tests, architecture fitness via dependency-cruiser/ArchUnit, performance fitness via k6, security fitness via gitleaks/Snyk, API contract fitness via Pact, cost fitness via Infracost) -> gate -> canary -> production with continuous SLO + chaos engineering + auto-rollback. Includes Strangler Fig migration setup (facade, legacy, new service, shadow mode, feature flags) and modular monolith (catalog/orders/payments/billing modules with in-process bus) ready to split into 2 architectural quanta with own DB and Kafka. 4 scenarios: (1) fitness function fails CI on cyclic deps blocks PR; (2) Strangler Fig endpoint migration with shadow mode and gradual cutover; (3) modular monolith ready-for-split extracts payments quantum for PCI-DSS compliance without rewriting; (4) continuous + holistic fitness in production with auto-rollback on canary breach.
Ford, Parsons, Kua и Sadalage определяют evolutionary architecture как guided, incremental change across multiple dimensions. Fitness functions делают важные characteristics проверяемыми, но не все качества сводятся к одному automated test. Evolutionary не означает хаотическое изменение и не превращает compliance, reversibility или loose coupling в гарантии.
| Компонент | Ответственность |
|---|---|
| Incremental Change Proposal | Описывает hypothesis, affected dimensions, blast radius и rollback. |
| Source, Schema and Configuration | Изменяются маленькими compatible steps. |
| CI Architecture Fitness Functions | Проверяют dependency, compatibility, security и other automatable constraints. |
| Runtime Fitness Signals | Измеряют SLO, errors, coupling proxies и recovery in operation. |
| Versioned Event Contract | Поддерживает compatibility/replay при incremental evolution. |
| Orders Consumer | Зависит от event contract и объявляет supported versions. |
| Analytics Consumer | Может обновляться независимо в пределах contract window. |
| Cardholder Data Boundary | CDE scope и data/process controls, не обязательный отдельный microservice. |
| Verified Segmentation Controls | Ограничивает paths to CDE и регулярно проверяется. |
| Decision and Rollback Ledger | Хранит hypothesis, evidence, checkpoints, ownership и reversal. |
A proposal names latency, compatibility and dependency characteristics. CI checks automatable rules; review handles contextual trade-offs; rollout stays small and reversible.
Проверяемый исход: A failed fitness function blocks the step without claiming every architecture quality is machine-verifiable.
Producer first supports old and new representation, backfills/validates, then consumers migrate before destructive contract.
Проверяемый исход: Rollback remains possible until compatibility and evidence gates expire.
Producer publishes a compatible/versioned event through the broker contract; consumers dial the topic, declare support and migrate independently.
Проверяемый исход: No reverse duplicate topology edges or direct producer-to-consumer shortcuts; replay policy is explicit.
Scope starts broad, data flows and connected systems are identified, and segmentation controls are tested. A separate service/DB may help, but PCI DSS does not uniquely prescribe that topology.
Проверяемый исход: Compliance claim is tied to verified scope and effective controls, not an architecture label.
Числа здесь — размерностные формулы или явно помеченные учебные inputs. Паттерн архитектуры сам по себе не задаёт SLA, throughput, latency или fault tolerance.
[CONCEPT]architecture-decision-records
Fitness functions provide evidence within their measurement scope. They do not prove every emergent quality, organizational fitness, compliance outcome or reversibility under untested failure modes.
Введите числа или выберите пресет