← Previous Chapter: Part 9: Transactional Outbox & Sagas | Series Hub


Answer-first: Architecture Decision Records (ADRs) provide an immutable, version-controlled record of structural choices. This chapter documents all 24 production ADRs covering database selection (PostgreSQL + JSONB), messaging (Kafka), monorepo governance (Rush), framework (Kratos v2), and authentication (BFF + HttpOnly cookies).


Summary of Key Production ADRs

ADR #Decision TitleSelected OptionKey Trade-Off Rationale
ADR-001Primary Backend LanguageGolang 1.25+Sub-millisecond startup, low memory footprint, high concurrency goroutines.
ADR-002Microservice FrameworkKratos v2Native Protobuf annotations, Google Wire compile-time DI, Clean Architecture.
ADR-003Monorepo ToolingMicrosoft Rush + PNPMStrict symlink isolation, phantom dependency elimination, polyglot support.
ADR-004Primary DatabasePostgreSQL (JSONB)ACID compliance, JSONB GIN indexing for dynamic E-Commerce attributes.
ADR-005Event StreamingApache KafkaHigh-throughput durable event log, replayability for new microservices.
ADR-006Inter-Service TransportgRPC / ProtobufBinary payload efficiency, type-safe API contracts, auto-generated SDKs.
ADR-007Client Gatewaygrpc-gatewayZero-maintenance REST/JSON exposure from existing Protobuf definitions.
ADR-008Distributed TransactionsSaga + OutboxEliminates blocking 2-Phase Commit locks while ensuring eventual consistency.