The Map of Software Architecture
This site aims to provide a "map" for systematically understanding software architecture. Architecture is not a single concept but a domain where multiple design layers overlap, making it difficult to grasp the big picture. This site organizes them and provides guidelines for understanding their interrelationships.
β Why Architecture is Confusingβ
The reason architectural discussions often become confusing is that designs of different dimensions are frequently discussed in the same context. The following are representative layers, each having independent design axes:
- Internal Application Structure (Layered, MVC, Hexagonal, etc.)
- System Topologies & Granularity (Monolith, Microservices)
- Integration Styles (REST, gRPC, Event-driven)
- Data Structure & Analytics (DWH, Data Lake, Event Sourcing)
- Operations & Organization (DevOps, SRE, Team Topologies)
These are completely different design layersβ"Structure, Deployment, Communication, Data, Operations"βand cannot be integrated into a single diagram or concept.
β Categorization Structure of This Siteβ
The categorization of this site is designed based on historical trends in recent architectural discussions.
- Dependency Rule-based styles (Hexagonal / Onion / Clean Architecture) have become strongly established in practice.
- These deepened as the main topic of internal application structure from the 2000s to the 2010s.
- In contrast, recent evolution has centered on "outer layers" such as Topologies (Monolith to Microservices), Integration, Data, and Socio-technical aspects.
Based on this background, this site adopts a structure that: Finely categorizes Structural Styles (Internal Application Structure) and organizes the outer layers as separate categories.
1. Structural Styles (Internal Application Structure)β
In recent discussions, styles centered on the Dependency Rule (Hexagonal / Onion / Clean) have become strongly established and treated as the central topic of internal application structure. Therefore, Structural Styles are categorized more finely than other categories.
Note that implementation techniques like Vertical Slice / Feature-based are positioned as supplementary specific configuration patterns of existing styles.
2. System Topologies (System Configuration & Granularity)β
This area deals with deployment strategies, ranging from Monolith to Microservices, Serverless, and Edge. It is the category with the most significant evolution in recent years.
3. Integration Styles (Communication & Coordination)β
Deals with service-to-service communication methods and integration patterns, such as REST, gRPC, Event-driven, and Service Mesh.
4. Data & Analytics Architecture (Data Structure & Analytics Platform)β
Organizes the evolution of data design, from traditional DWH and Data Lakes to operation separation with CQRS/Event Sourcing and distributed responsibilities with Data Mesh.
5. Cross-cutting & Socio-technical (Operations, Culture, Quality)β
Deals with areas involving not just technical foundations but also organization, operations, and culture, such as DevOps, SRE, Observability, Zero Trust, and Team Topologies.
π§© Overall Software Architecture Mindmapβ
π§© Relationship Diagram Between Categories (Cross-cutting Edges)β
π§© Guide to Understanding the Overall Architectureβ
Before reading individual categories like internal structure, system configuration, communication methods, and data platforms, supplementary pages are provided to give an overview of the big picture.
β Architecture Principlesβ
Organizes fundamental concepts common to architecture (Dependency Direction, Boundaries, Coupling & Cohesion, Consistency Models, Sync/Async, etc.).
β Architecture Decision Guideβ
A systematic guide on how to select outer structures (Topologies / Integration / Data / Cross-cutting) based on requirements, constraints, and organizational structure.
β Structural Styles Decision Guideβ
A guide on how to select internal application structures (Layered / Clean / Hexagonal / MVC / MVVM / Transaction Script, etc.) based on domain complexity, changeability, and team structure.
Reading these as prerequisites for each category helps in appropriately positioning individual styles while overlooking the entire architecture.
π§ Pages to Read Nextβ
- Structural Styles (Internal App Structure)
- System Topologies (Service Config & Granularity)
- Integration Styles (Communication & Integration)
- Data Architecture (Data Structure & Analytics)
- Cross-cutting & Socio-technical (Ops, Culture, Quality)
Each category is explained from the following perspectives:
- Problems it attempts to solve
- Philosophy and structure of the style
- Suitable application areas