Software Architecture
Definition
The high-level structure of a software system — the decisions about how components are organised, how they communicate, and how data flows between them.
Use Cases
- Netflix: Streaming platform reliability and rapid feature delivery at global scale — Evolved from a monolithic application to a microservices-oriented architecture on AWS, using many independently deployable services and strong automation/observability practices to support frequent releases. (Improved scalability and resilience, faster deployment cycles, and the ability for teams to ship features independently.)
- Amazon: Scaling a large e-commerce platform with many business domains (catalog, checkout, payments, fulfillment) — Adopted a service-oriented approach where teams own services aligned to business capabilities, enabling independent development and deployment with well-defined APIs between components. (Greater organizational agility and the ability to scale different parts of the system independently as demand changes.)
- Uber: Coordinating real-time ride matching, pricing, and trip management across many regions — Moved from a monolithic architecture toward a microservices architecture, separating core capabilities into services and using internal platform tooling to manage service communication and operations. (Better scalability and team autonomy, enabling faster iteration across multiple product areas.)
Frequently Asked Questions
- What's the difference between software architecture and system design?
- Software architecture focuses on the overall structure and long-term decisions of a software system (components, boundaries, communication patterns, data flow, and quality attributes like reliability and security). System design is often used to describe the process of designing a specific solution (for example, designing a URL shortener) and may include architecture, but also detailed choices like database schema, API endpoints, and capacity estimates.
- When should I define software architecture for a cloud application?
- Define (or revisit) the architecture early—before major development—when you need to make decisions that are hard to change later, such as service boundaries, data ownership, security model, and deployment approach. It’s especially important when you expect rapid growth, multiple teams, strict compliance requirements, high availability needs, or when migrating from on-premises/monolith to cloud.
- How much does software architecture cost?
- Architecture itself is mostly a people/time cost (architects, senior engineers, reviews, prototyping). The implementation choices driven by architecture affect cloud spend: number of services, environments, networking (NAT gateways, load balancers), data stores, messaging, observability, and redundancy across zones/regions. Costs rise with higher availability, stronger security controls, more automation, and more operational tooling, but good architecture can also reduce costs by right-sizing, avoiding over-engineering, and improving reliability.
Category: architecture
Difficulty: intermediate
Related Terms
See Also