Skip to content

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.