Architecture Patterns
Overview
Procedure for evaluating, choosing, and implementing software architecture patterns
Steps
Step 1: Understand requirements and constraints
Gather the context needed for architectural decisions:
- Document business requirements and drivers
- Identify quality attribute requirements
- Understand current state (if evolving existing system)
- Document constraints (budget, timeline, skills)
- Identify stakeholders and their concerns
- Understand scale and growth projections
Step 2: Identify candidate architectures
Identify architectural patterns that could work:
- Review common patterns (monolith, microservices, etc.)
- Consider hybrid approaches
- Research how similar problems are solved
- Consider team experience and preferences
- Document 2-4 viable candidates
Step 3: Evaluate candidates against requirements
Systematically evaluate each candidate:
- Score each candidate against quality attributes
- Evaluate against team capability
- Assess operational requirements
- Consider total cost of ownership
- Evaluate flexibility and reversibility
- Document tradeoffs for each option
Step 4: Select architecture
Make the architectural decision:
- Review evaluation results
- Discuss with stakeholders
- Consider reversibility and evolution
- Make decision and document rationale
- Identify risks and mitigation strategies
- Get stakeholder buy-in
Step 5: Create Architecture Decision Record
Document the decision formally:
- Write ADR with context and decision
- Document alternatives considered
- Explain consequences and tradeoffs
- Link to supporting analysis
- Get formal approval if needed
- Add to architectural documentation
Step 6: Design component architecture
Design the detailed architecture:
- Identify main components and their responsibilities
- Define interfaces between components
- Design data architecture
- Plan integration patterns
- Address cross-cutting concerns
- Create architecture diagrams
Step 7: Plan implementation roadmap
Create plan to implement the architecture:
- Identify implementation phases
- Define key milestones
- Plan for incremental delivery
- Identify dependencies and sequences
- Plan risk mitigation
- Create timeline
When to Use
- Starting a new project and choosing initial architecture
- Evaluating whether to break apart a monolith
- Scaling challenges require architectural changes
- Adding major new capability to existing system
- Technical debt is causing architectural problems
- Team debating architectural approaches
- Documenting architectural decisions (ADRs)
- Reviewing and evolving existing architecture
Verification
- Architecture addresses key quality requirements
- Decision is documented with rationale
- Tradeoffs are explicitly acknowledged
- Team has skills to implement
- Plan is realistic given constraints
- Stakeholders are aligned
- Architecture can evolve over time
Input: $ARGUMENTS
Apply this procedure to the input provided.