Architecture Principles
Introduction
Architecture Principles are a set of general rules and guidelines, derived from business goals and agreed upon by the organisation, that guide the development of enterprise architecture.
These principles serve as a decision-making framework for Solutions and Enterprise Architects, as well as other technical roles, during the design of systems, architectures, and features. While these principles provide essential guidance, architects will continue to analyse problems, provide solutions, and justify their decisions by considering the defined principles alongside specific context and constraints.
Governance
All significant architectural decisions SHOULD be evaluated against these principles, documented in Architecture Decision Records, consulted with Architecture where applicable, and updated as the business and technology landscape evolves.
Core Principles Overview
- Simplicity: Minimize complexity in design, implementation and operation without sacrificing functionality
- Disposability: Design components to be removable, updatable, or replaceable without causing system instability
- Consistency: Maintain uniformity in design, patterns, technologies, conventions, and interactions
- Resiliency: Enable systems to recover from failures and continue operating effectively under adverse conditions
- Observability: Provide insight into system internal state through logs, metrics, and traces
- Security: Prioritize confidentiality, integrity, and availability of data and services
- Performance Efficiency: Optimize resource utilization while ensuring good user experience and managing costs
- Technology Independence: Minimize dependencies on underlying technologies to enable flexibility and reduce vendor lock-in
- Modularity: Design systems as a set of independent, interchangeable modules that can operate in isolation, integrate with diverse providers, and be distributed across various platforms
- Enterprise Value Focus: Align all architectural decisions with enterprise goals and deliver tangible business value
Principles
1. Simplicity
Statement: The architecture SHOULD aim for simplicity, minimising complexity in design, implementation and operation without sacrificing functionality.
Rationale:
- Reduces cost of development, integration, and maintenance
- Enables faster time-to-market
- Easier to understand, reducing learning curve and cognitive load for teams
- Simple solutions are more agile, enabling faster adaptation to change and easier addressing of technical debt over time
Key Patterns: Minimal abstractions, YAGNI principle, single responsibility, well-established frameworks, automation.
2. Disposability
Statement: A software component SHOULD be designed so it can be removed, updated, or replaced without causing system instability.
Rationale:
- Allows for fast scaling, robust failover, and frequent updates
- Supports rapid pace of changes in business and technology with minimal impact on the broader system
- Limits the “blast radius” of changes
- Enables cloud-ready, elastic infrastructure
Key Patterns: Graceful shutdown, interface-based design, containerisation, loose coupling, event-driven communication, stateless services.
3. Consistency
Statement: Maintaining uniformity and coherence in the design, patterns, technologies, conventions, and interactions within a system prevents conflicts, improves reliability, and ensures the system operates predictably.
Rationale:
- Reduces complexity and errors, enabling easier and more effective maintenance
- Enables consistent technologies and standards for testing, delivery, and operational activities
- Improves developer productivity, reduces learning curve, increases adoption and facilitates collaboration
Key Patterns: Coding standards, automated linting, shared configurations, uniform API design, standardised technology stack, Infrastructure-as-Code.
4. Resiliency
Statement: The ability of a system to recover from failures and continue operating effectively, even under adverse conditions.
Rationale:
- Minimises the risk of failures affecting user experience and business operations
- Ensures long-term stability and sustainability
- Incorporates fault tolerance, graceful degradation, and self-healing mechanisms
- Disruptions are isolated and do not cascade across the system, allowing continuous operation
Key Patterns: Circuit breakers, retry with exponential backoff, bulkheads, health checks, auto-scaling, chaos engineering.
5. Observability
Statement: The ability of a system to provide insight into its internal state by collecting and analysing external outputs such as logs, metrics, and traces.
Rationale:
- Prevents unexpected issues by providing real-time monitoring, diagnostics, and troubleshooting
- Reduces downtime and enhances user experience
- Teams can make data-driven decisions regarding resource allocation, scaling, and optimization
Key Patterns: Structured logging, distributed tracing, metrics collection (golden signals), health endpoints, centralised log aggregation, SLO/SLI monitoring.
6. Security
Statement: All systems MUST be designed with security as a priority, ensuring the confidentiality, integrity, and availability of data and services.
Rationale:
- Critical to protecting sensitive information and maintaining stakeholder and customer trust
- Essential for complying with regulations (GDPR, HIPAA, PCI-DSS, etc.)
- Prevents data breaches, unauthorised access, and security incidents
Key Patterns: OAuth2/OIDC, centralised IAM, encryption in transit and at rest, least privilege, security scanning, immutable audit logs.
7. Performance Efficiency
Statement: Systems perform well and optimally utilise available resources to meet current and future demands, ensuring a good user experience while minimising inefficiency and excess cost.
Rationale:
- Optimises resource utilisation without unnecessary consumption
- Systems can scale to meet future growth in workload demands
- Minimises response times and maximises throughput
- Achieves optimal performance without incurring unnecessary operational costs
- Systems adjust to varying load conditions without significant degradation
Key Patterns: Caching, CDN usage, query optimisation, horizontal scaling, auto-scaling, resource right-sizing, async processing.
8. Technology Independence
Statement: Applications minimise dependencies with underlying technologies.
Rationale:
- Enables applications to be developed, maintained and operated with minimal restrictions and dependencies
- Provides ability to move to alternative technologies with lower effort and risk in response to open source or vendor technology obsoletion
- Reduces vendor lock-in and promotes technological sovereignty
Key Patterns: Abstraction layers, open standards (REST, AMQP, SQL), interface-based design, containerisation, configuration-driven technology choices.
9. Enterprise Value Focus
Statement: All architectural decisions MUST align with the broader enterprise goals and deliver tangible business value.
Rationale:
- Ensures architecture supports the company’s strategic objectives
- Maximises ROI and encourages resource optimization
- Drives alignment between technology investments and business outcomes
Key Patterns: Architecture Decision Records (ADRs), cost-benefit analysis, business capability mapping, iterative value delivery.
10. Modularity
Statement: Systems are designed as a set of independent, interchangeable modules that can operate in isolation (Autonomous), integrate with diverse providers (Integrative), and be distributed across various platforms (Distributability).
Rationale:
- Enables products to run in isolation, reducing dependencies and cascading failures
- Allows for flexible integration with both internal and external products and vendors
- Supports offering products on external platforms, creating new market opportunities
- Simplifies development, testing, and deployment by creating clear boundaries
- Allows for market-specific configurations and adaptations without code forks
Key Patterns: API as a product, abstracted integrations, standard IAM, data as a product, configuration-driven features, containerisation, independent testability, runtime autonomy, decoupled integration testing, well-defined product scope.
Implementation Requirements
The architecture principles are implemented through the following domain-specific requirement categories. Each category contains detailed, actionable requirements that support multiple principles:
-
API Design & Contract Requirements Supports: Simplicity, Consistency, Disposability, Technology Independence, Modularity
-
Service Modularity & Autonomy Requirements Supports: Simplicity, Disposability, Resiliency, Modularity
-
Data Management & Ownership Requirements Supports: Simplicity, Technology Independence, Enterprise Value Focus, Modularity
-
Integration & Communication Requirements Supports: Disposability, Technology Independence, Resiliency, Modularity
-
Configuration & Feature Management Requirements Supports: Simplicity, Disposability, Enterprise Value Focus, Modularity
-
Deployment & Runtime Requirements Supports: Disposability, Consistency, Performance Efficiency, Modularity
-
Security, IAM & Auditing Requirements Supports: Security (Core), Consistency, Technology Independence, Modularity
-
Observability, Logging & Monitoring Requirements Supports: Observability (Core), Resiliency, Performance Efficiency, Modularity
-
Testing & Quality Requirements Supports: Simplicity, Consistency, Resiliency, Modularity
-
Performance, Scalability & Resiliency Requirements Supports: Performance Efficiency (Core), Resiliency, Enterprise Value Focus, Modularity
-
Distributability Requirements Supports: Technology Independence, Enterprise Value Focus, Disposability, Modularity
Using These Requirements
For Architects
- Use these principles to evaluate architectural decisions and alternatives
- Document alignment in Architecture Decision Records (ADRs)
- Balance trade-offs between principles based on context and constraints
For Development Teams
- Reference domain-specific requirements when implementing features
- Use requirements as validation criteria in code reviews and quality gates
- Ensure all work supports the principles and requirements, otherwise document trade-offs as ADRs
For Coding Agents
- Requirements are structured with
<span data-cite>tags for machine parsing - Each requirement can be validated independently
- Citations enable traceability from code to principle