- 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.
- 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 ## Decision ## Consequences *### Pros *### Cons * Complex to maintain if we are not using a managed service * Monitoring tools |
Resources
https://github.com/npryce/adr-tools
Questions
- Is there any value in maintaining a decision log at the repo level ?
- Can we categorize ADRs? DB, Frontend, Spring, Java, Python, CI/CD, Security, Performance