Below are some key architectural concepts to take into account while building systems. I borrowed most of these concepts from the book “think like amazon by John Rossman” who had borrowed these from “Paul Tearnen”. The explanations of these concepts are mine.
- Scalability: Ability to quickly increase system throughput and capacity.
- Security: Manage authentication and data security.
- Flexibility: Multipurpose and transformable to handle multiple use cases.
- Interoperability: Ability to easily integrate with external systems via well defined APIs.
- Observability (my own):
- Monitoring: Monitor the health of the system to identify issues before they arise. And also report monitoring traces so system behavior over a period can be observed.
- Traceability: Ability to explain system behavior via event logs and audits that help link the distributed flow of data.
- Extensibility: Ability to extend the system to cater to future business needs with low cost and time.
- Reusability: Reusability of sub components for multiple scenarios across systems. Inside system code reuse via modularization.
- Reliability (my own): Ensure consistency of data in a distributed architecture. Consistency can be serializable or eventual based on use case. Based on the use case appropriate system consistency should be guaranteed.
- Modularity: Creating modular systems with low coupling and high cohesion.
- Testability (my own): System should have good unit test , integrated tests and regression tests coverage to ensure high quality.
- Deployability (my own): Code release processes should be engineered to have systematic code review, testing and regression processes to enable simple and verifiable deployments.
- Stability: The ability of the core architecture to withstand new requests and changes. On an infrastructure side stability entails ensuring redundancy and failover.
- Availability: Ability to respond immediately via low latency.
See various articles on system design below.
- Distributed System Design Patterns
- Consistent Hash Design
- Unique Id Generation In Distributed Systems
- Design Tiny Url
- Design Rate Limiter
- Search And Realtime Log Alert System
- Recommendation System
- Designing Web Crawler
- Design Search Auto Complete
- Designing A Slack Like Chat System
- Designing News Feed
- Design Box / Dropbox / Google Drive
- System Design YouTube
- System Design TicketMaster
- System Design of Uber
- Design A Wide Column NoSql Data Store (Cassandra)
- Security And Authentication Design