15 Timeless Architecture Principles Every Engineer Should Follow
This article outlines how to create solid software architectures by presenting a process for forming design principles, detailing fifteen universal architecture guidelines, and explaining service‑splitting and key design rules that together help build scalable, maintainable, and resilient systems.
Designing a good architecture is not a strict formula but a set of wisdom‑driven trade‑offs that meet system requirements; leveraging past experience helps us stand on the shoulders of giants.
Forming Architecture Principles
Architecture principles should be SMART, as illustrated in the accompanying diagrams.
15 Universal Architecture Principles
1. N+1 Design : Ensure at least one redundant instance exists for fault tolerance.
2. Rollback Design : Enable backward compatibility and timely rollback after failures.
3. Disable Design : Provide switches to turn off risky features for safe recovery.
4. Monitoring Design : Incorporate monitoring from the design phase to enable self‑diagnosis and potential self‑healing.
5. Multi‑Active Data Center Design : Avoid single‑point data concentration and consider read/write separation.
6. Use Mature Technologies : Prefer proven technologies for critical components; adopt new tech gradually.
7. Fault Isolation : Separate resources and services to prevent cascading failures.
8. Horizontal Scaling : Expand capacity by adding hardware (X‑axis), splitting databases (Y‑axis), or separating functions (Z‑axis).
9. Buy Non‑Core Components : Outsource non‑differentiating parts to reduce development effort.
10. Commodity Hardware : Use low‑cost, interchangeable hardware to keep total cost low.
11. Fast Iteration : Small builds and releases reduce risk and accelerate feedback.
12. Asynchronous Design : Avoid single‑point bottlenecks caused by synchronous dependencies.
13. Stateless Design : Stateless services improve scalability and load balancing.
14. Forward‑Looking Design : Plan for current, next‑generation, and future system capabilities.
15. Automation : Automate processes to eliminate human error.
Application Service Splitting Principles
Define clear goals—team efficiency, business modularity, and architectural needs—then split services based on organizational changes, security, replaceability, delivery speed, technical constraints, and business requirements.
Splitting guidelines include high cohesion, appropriate service granularity, layered business architecture, reusability, stability separation, low coupling, lightweight communication, performance‑driven partitioning, and security‑driven partitioning.
Key Architecture Design Principles
Good design solves current problems, respects realistic timelines, and anticipates future needs without over‑designing.
Focus on separation of concerns, high cohesion, low coupling, minimal knowledge, avoiding duplication, minimal upfront design, and non‑intrusive components.
Non‑Intrusive Design
Avoid designs that tightly bind the system to a specific framework or component; aim for interchangeable, low‑intrusion solutions.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
ITFLY8 Architecture Home
ITFLY8 Architecture Home - focused on architecture knowledge sharing and exchange, covering project management and product design. Includes large-scale distributed website architecture (high performance, high availability, caching, message queues...), design patterns, architecture patterns, big data, project management (SCRUM, PMP, Prince2), product design, and more.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
