Understanding Software Architecture and the COLA Application Architecture
This article explains the concept of software architecture, why it is needed, the responsibilities of architects, various architectural classifications and patterns such as layered, CQRS, hexagonal and onion architectures, and introduces the COLA framework with its layered design, extension mechanisms, and specification guidelines.
Architecture is an abstract description of the entities in a system and the relationships among them, originating from the need to split a target system according to principles that enable parallel work by different roles.
Every system, from aircraft to a single e‑commerce feature, requires architecture to control complexity; a well‑structured design is superior to an unstructured one, and relying solely on "no design" is unrealistic in practice.
An architect’s primary value is to simplify complexity, making the system understandable for designers, implementers, and operators.
Software architecture provides a high‑level abstraction of a system’s structure, behavior, and attributes, describing components, their interactions, and design decisions that guide integration.
The core purpose of software architecture is to control complexity, not to enforce a specific layering or methodology.
Architectural classifications include business architecture, application architecture, distributed system architecture, data architecture, physical architecture, and operations architecture, each addressing different concerns such as domain modeling, interface design, scalability, data governance, hardware deployment, and operational processes.
Typical architectural patterns covered are:
Layered architecture – separating responsibilities into distinct layers.
CQRS (Command Query Responsibility Segregation) – separating commands that change state from queries that read state.
Hexagonal (port‑adapter) architecture – isolating the core business logic from technical details via ports and adapters.
Onion architecture – extending hexagonal ideas with multiple domain‑driven layers and strict dependency direction (outer layers depend on inner layers).
The COLA (Component‑Oriented Lightweight Architecture) framework, open‑sourced by Alibaba, builds on these patterns. It refines the three‑layer model into presentation, application, domain, and infrastructure layers, introduces a unified extension mechanism using business identities and extension points, and defines strict module, package, and naming conventions.
COLA’s extension design separates business identity (e.g., ali.tmall.car ) from extension points, allowing customized implementations per tenant or scenario.
Specification design in COLA enforces consistent component structures and naming to reduce ad‑hoc complexity.
Overall, the core mission of application architecture, exemplified by hexagonal, onion, and COLA, is to separate core business logic from technical details, enabling easier understanding, maintenance, and replacement of the technical layer.
Architects' Tech Alliance
Sharing project experiences, insights into cutting-edge architectures, focusing on cloud computing, microservices, big data, hyper-convergence, storage, data protection, artificial intelligence, industry practices and solutions.
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.