88 lines
3.9 KiB
Markdown
88 lines
3.9 KiB
Markdown
# ADR Triggers Reference
|
|
|
|
## When to Create an Architectural Decision Record
|
|
|
|
### Technology Stack Decisions
|
|
- **Framework Selection**: Choosing React vs Vue vs Angular
|
|
- **Database Technology**: SQL vs NoSQL, specific database vendors
|
|
- **Programming Language**: Primary language for services
|
|
- **Infrastructure Platform**: AWS vs Azure vs GCP vs On-premise
|
|
- **Container Orchestration**: Kubernetes vs Docker Swarm vs ECS
|
|
|
|
### Architectural Patterns
|
|
- **Architecture Style**: Microservices vs Monolith vs Modular Monolith
|
|
- **API Design**: REST vs GraphQL vs gRPC
|
|
- **Event Architecture**: Event Sourcing vs Traditional State
|
|
- **Communication Patterns**: Synchronous vs Asynchronous
|
|
- **Data Patterns**: CQRS, Event Sourcing, Shared Database
|
|
|
|
### Integration Decisions
|
|
- **Authentication Method**: OAuth vs JWT vs Session-based
|
|
- **Service Communication**: Direct API vs Message Queue vs Event Bus
|
|
- **Third-party Services**: Build vs Buy decisions
|
|
- **API Gateway**: Whether to use and which one
|
|
- **External System Integration**: How to connect with legacy systems
|
|
|
|
### Data Architecture
|
|
- **Data Storage Strategy**: Centralized vs Distributed
|
|
- **Caching Strategy**: Redis vs Memcached vs In-memory
|
|
- **Data Partitioning**: Sharding strategy
|
|
- **Backup and Recovery**: Approach and tools
|
|
- **Data Privacy**: Encryption at rest/transit decisions
|
|
|
|
### Performance & Scalability
|
|
- **Scaling Strategy**: Horizontal vs Vertical
|
|
- **Load Balancing**: Algorithm and implementation
|
|
- **Performance Optimization**: Specific techniques adopted
|
|
- **Resource Limits**: Rate limiting, throttling decisions
|
|
- **CDN Strategy**: Whether to use and implementation
|
|
|
|
### Security Architecture
|
|
- **Security Framework**: Zero Trust vs Perimeter-based
|
|
- **Secrets Management**: Vault vs Cloud Provider vs Custom
|
|
- **Encryption Standards**: Which algorithms and key management
|
|
- **Access Control**: RBAC vs ABAC vs Custom
|
|
- **Compliance Requirements**: How to meet specific regulations
|
|
|
|
### Development Process
|
|
- **CI/CD Pipeline**: Tools and deployment strategy
|
|
- **Testing Strategy**: Unit vs Integration vs E2E balance
|
|
- **Code Organization**: Monorepo vs Polyrepo
|
|
- **Branching Strategy**: GitFlow vs GitHub Flow vs Trunk-based
|
|
- **Documentation Standards**: What and how to document
|
|
|
|
### Operational Decisions
|
|
- **Monitoring Strategy**: Tools and what to monitor
|
|
- **Logging Architecture**: Centralized vs Distributed
|
|
- **Alerting Strategy**: What to alert on and how
|
|
- **Disaster Recovery**: RTO/RPO decisions
|
|
- **Deployment Strategy**: Blue-Green vs Canary vs Rolling
|
|
|
|
### Cross-Cutting Concerns
|
|
- **Error Handling**: Global strategy and patterns
|
|
- **Internationalization**: Support strategy
|
|
- **Multi-tenancy**: Isolation approach
|
|
- **Feature Flags**: Implementation approach
|
|
- **Backward Compatibility**: Version strategy
|
|
|
|
## Red Flags - Always Create an ADR When
|
|
|
|
1. **Multiple Valid Options Exist**: The team is debating between approaches
|
|
2. **Significant Cost Implications**: The decision impacts budget substantially
|
|
3. **Hard to Reverse**: Changing later would be expensive or difficult
|
|
4. **Cross-Team Impact**: Decision affects multiple teams or systems
|
|
5. **External Commitments**: Decision creates obligations to customers/partners
|
|
6. **Compliance/Regulatory**: Decision has legal or compliance implications
|
|
7. **Performance Critical**: Decision significantly impacts system performance
|
|
8. **Security Implications**: Decision affects system security posture
|
|
|
|
## When NOT to Create an ADR
|
|
|
|
1. **Implementation Details**: How to name a variable or structure a small module
|
|
2. **Temporary Solutions**: Quick fixes that will be replaced soon
|
|
3. **Team Conventions**: Simple coding standards or naming conventions
|
|
4. **Tool Configuration**: Minor tool settings that are easily changeable
|
|
5. **Obvious Choices**: When there's only one reasonable option
|
|
|
|
## Remember
|
|
> "If someone might ask 'Why did we do it this way?' in 6 months, you need an ADR." |