- Documents a decision that addresses a functional or non functional requirement that is architecturally significant
- An Architecturally Significant Requirement is a requirement that has a measurable effect on a software system’s architecture and quality.
- Collection of ADR is referred as ADL (Architecture Decision Log)
- Solution to a problem can start as an RFC to facilitate discussion and collaboration within the community members. The outcome of the RFC must be recorded as an ADR
- ADR can also be used to document patterns/standards that forms naturally. Patterns can be identified when doing code reviews
- Status
- DRAFT
- ACCEPTED
- SUPERSEDED by ADR-xxx
- OBSOLETE
- Add label to confluence pages that has an ADR
Markdown |
---|
# ADR-000001 - Use Kafka as the distributed event streaming platform Date: 2022-05-07 ## Status DRAFT ## Background/Context Explain the need that triggered the usage of a streaming platform ## Assumptions List all assumption that were made when making the decision ## Constraints List any constraints that lead us to make a certain decision ## Decision ## Implications ### Pros ### Cons * Complex to maintain if we are not using a managed service * Monitoring tools * Lack of reliable and cost effective Disaster Recovery Options |
Resources
https://github.com/npryce/adr-tools
Questions
- Is there any value in maintaining a decision log at the repo level ? Won't be an ADR.
- Can we categorize ADRs? DB, Frontend, Spring, Java, Python, CI/CD, Security, Performance