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

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