Architecture decision records¶
Format: MADR. One record per decision that is expensive to reverse. Records are immutable once accepted; a change of mind is a new record that supersedes the old one.
| # | Decision | Status |
|---|---|---|
| 0001 | Minimal APIs over MVC controllers | Accepted |
| 0002 | Service Bus scheduled messages for SLA timers instead of polling | Accepted |
| 0003 | Azure SignalR Service for real-time updates | Accepted |
| 0004 | Azure Container Apps over App Service and AKS | Accepted |
| 0005 | Bicep over Terraform | Accepted |
| 0006 | CloudEvents 1.0 envelope for integration events | Accepted |
| 0007 | Python for the analytics and RCA service | Accepted |
| 0008 | Tactical DDD with rich aggregates and value objects | Accepted |
| 0009 | Transactional outbox for integration events | Accepted |
| 0010 | Monorepo with path-filtered pipelines and CODEOWNERS | Accepted |
When to write one¶
- It changes a contract in contracts.md.
- It picks a managed service, a framework or a hosting model.
- Reversing it would take more than one sprint.
Review¶
An ADR is proposed as a pull request with status Proposed. It is discussed in the weekly architecture review (30 minutes, async comments first). It merges as Accepted with at least one reviewer from a team that consumes the decision.