Understanding Software Architecture: Concepts, Classifications, and the COLA Application Architecture
This article explains the definition and purpose of software architecture, outlines various architectural classifications such as business, application, distributed, data, physical, and operational architectures, and introduces typical patterns like layered, CQRS, hexagonal, and onion architectures, culminating in a detailed overview of Alibaba's COLA application architecture and its design principles.
Architecture is an abstract description of the entities in a system and the relationships among them, originating from the need to divide a target system according to principles that enable parallel work by different roles.
Architecture is required wherever a system exists, from large aircraft to a single e‑commerce feature, because it helps control complexity and provides a structured approach to design and development.
The architect’s primary value is to simplify complexity, creating understandable structures so designers, implementers, and operators can easily grasp the system.
Software architecture is a high‑level abstraction of a system’s structure, behavior, and attributes, describing components, their interactions, integration patterns, and constraints, thereby linking requirements to the system’s organization.
The core purpose of software architecture is to control complexity, not to enforce a specific layering or methodology.
Software architecture can be classified into business architecture, application architecture, distributed system architecture, data architecture, physical architecture, and operations architecture, each addressing different concerns and stakeholder needs.
Typical application architectures include layered architecture, CQRS (Command Query Separation), hexagonal (port‑adapter) architecture, and onion architecture, each promoting separation of concerns and testability.
The COLA (Component Oriented Layered Architecture) framework, open‑sourced by Alibaba, refines the classic layered model into four layers—Presentation, Application, Domain, and Infrastructure—adds extension design based on business identity and extension points, and enforces standard design rules for modules, packages, and naming.
Overall, the central mission of application architecture is to separate core business logic from technical details, allowing the business core to remain stable while technical implementations can be swapped or evolved independently.
IT Architects Alliance
Discussion and exchange on system, internet, large‑scale distributed, high‑availability, and high‑performance architectures, as well as big data, machine learning, AI, and architecture adjustments with internet technologies. Includes real‑world large‑scale architecture case studies. Open to architects who have ideas and enjoy sharing.
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.