Why Architecture Matters: From Basics to the COLA Framework
This article explains what software architecture is, why it is essential, the responsibilities of architects, various classification types, typical architectural patterns such as layered, CQRS, hexagonal and onion architectures, and introduces Alibaba's open‑source COLA framework with its layered design, extension and specification concepts.
What is Architecture?
Architecture is an abstract description of the entities in a system and the relationships among them, providing a high‑level view that guides parallel work across different roles.
Why Architecture is Needed?
Any system—whether an aircraft or a single e‑commerce component—requires architecture to manage complexity, ensure maintainability, and support rapid iteration while preserving performance, security, and stability.
Responsibilities of an Architect
An architect’s primary value is to simplify complexity, creating understandable structures so designers, implementers, and operators can work with the system efficiently.
Software Architecture
Software architecture is a system’s blueprint that describes abstract components and their connections; during implementation these components become concrete classes or objects, often linked via interfaces.
The core value of software architecture is controlling complexity, not a specific layering or methodology.
Software Architecture Classification
Key categories include:
Business architecture – top‑level design influencing organization and technical structure.
Application architecture – designs the application’s layer structure, interfaces, and non‑functional requirements.
Distributed system architecture – addresses load balancing, service discovery, messaging, caching, and CAP trade‑offs.
Data architecture – standardizes data definitions, formats, and builds unified big‑data platforms.
Physical architecture – maps software components onto hardware, networks, and servers.
Operations architecture – plans, selects, and deploys operational systems.
Typical Application Architectures
Layered Architecture
Separates responsibilities into layers such as presentation, application, domain, and infrastructure. Diagram:
CQRS
Command‑Query Separation divides methods into commands (state‑changing, no return) and queries (read‑only, return results).
Command : does not return a result (void) but changes the object’s state.
Query : returns a result without side effects.
Hexagonal Architecture
Also called Ports‑Adapters, it separates the core business logic (inside the hexagon) from external drivers such as UI, databases, or other services (outside adapters).
Onion Architecture
Extends the hexagonal idea by adding multiple concentric layers—Application, Domain Service, Domain Model, Infrastructure—ensuring outer layers depend on inner ones while inner layers remain unaware of outer details.
COLA Application Architecture
COLA is an open‑source application architecture from Alibaba that incorporates classic ideas and adds specification and extension design, using an Archetype to solidify the structure for rapid development.
Layered Design
COLA refines the traditional three‑layer model into four layers: Presentation, Application, Domain, and Infrastructure.
Presentation Layer
Accepts REST requests, routes them to the Application layer, and returns view models (typically DTOs).
Application Layer
Handles input validation, assembles context, invokes domain services, and may directly access infrastructure when needed.
Domain Layer
Encapsulates core business logic via domain services and entities.
Infrastructure Layer
Provides tunnels for data sources (databases, search engines, files, SOA services), configuration, and common utilities.
Extension Design
Introduces two concepts: Business Identity (BizCode) uniquely identifies a business scenario, and Extension Points where custom behavior can be plugged in. The combination forms an Extension Coordinate, enabling multi‑tenant, multi‑business extensibility.
Specification Design
Defines conventions for modules, packages, and naming to reduce randomness and maintain consistency across the codebase.
Core Idea of Application Architecture
The unifying principle across all discussed architectures is the separation of core business logic from technical details, allowing the business core to be clear, reusable, and testable while technical components remain replaceable.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
ITFLY8 Architecture Home
ITFLY8 Architecture Home - focused on architecture knowledge sharing and exchange, covering project management and product design. Includes large-scale distributed website architecture (high performance, high availability, caching, message queues...), design patterns, architecture patterns, big data, project management (SCRUM, PMP, Prince2), product design, and more.
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.
