What Is Software Architecture? Core Concepts, Patterns, and the COLA Framework
This article explains the meaning of architecture, why it is essential for any system, the responsibilities of architects, various software architecture classifications, common patterns such as layered, CQRS, hexagonal and onion architectures, and introduces the open‑source COLA framework with its layered, extension, and standard design principles.
What Is Architecture?
Architecture is an abstract description of the entities in a system and the relationships among them. It originated from building design and, as collaboration grew, became a way to split a target system according to principles that enable parallel work by different roles.
Why Is Architecture Needed?
Any system—large or small—requires architecture. A well‑structured design outperforms an unstructured one, and relying solely on “no design, just work” is unrealistic because engineers rarely refactor code that merely works.
Architect’s Responsibilities
The core value of an architect is “simplifying complexity.” Good architecture makes the system easier to understand for designers, implementers, operators, and other stakeholders.
Software Architecture
Software architecture is a high‑level sketch of a system, describing abstract components and their interactions. In implementation, these components become concrete classes or objects, often connected via interfaces. Architecture provides structural, behavioral, and attribute abstractions that link requirements to system organization and guide design decisions.
Software Architecture Classification
Business Architecture : Top‑level design defining business domains; influences organization and technical architecture.
Application Architecture : Designs the application’s layer structure, interfaces, and data‑exchange protocols while controlling complexity.
Distributed System Architecture : Handles load balancing, service registration/discovery, messaging, caching, distributed databases, and CAP trade‑offs.
Data Architecture : Standardizes data definitions, expressions, and governance to build unified big‑data platforms.
Physical Architecture : Concerns hardware placement, data‑center layout, network topology, and server types.
Operations Architecture : Plans, selects, deploys, and standardizes operational systems.
Layered Architecture
Layering separates responsibilities and code units, typically visualized as a stack of layers.
CQRS
CQRS (Command Query Separation) splits object methods into commands (which change state and return void) and queries (which return results without side effects).
Hexagonal Architecture
Proposed by Alistair Cockburn in 2005, hexagonal (port‑adapter) architecture separates the system into an internal core (business logic) and external adapters (UI, infrastructure). Adapters are classified as active (driving) or passive (driven) based on who initiates the interaction.
Onion Architecture
Onion architecture shares the same idea as hexagonal: it isolates the core domain from infrastructure by using adapters, allowing easy replacement of tools and preventing vendor lock‑in. It adds multiple concentric layers (Application, Domain Service, Domain Model, Infrastructure) and enforces dependency direction from outer layers toward the inner core.
Dependencies flow outward‑to‑inward, while inner layers remain unaware of outer ones.
COLA Application Architecture
COLA is an open‑source application architecture developed by Alibaba. It incorporates classic architectural ideas, adds standardized and extensible designs, and uses an archetype to solidify the structure for rapid adoption.
Repository: https://github.com/alibaba/COLA
Layered Design (COLA)
Presentation Layer : Accepts REST requests, routes them to the Application layer, and returns view models (usually DTOs).
Application Layer : Handles input validation, context assembly, invokes the Domain layer, and may send notifications; it can also directly access the Infrastructure layer if 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 (COLA)
COLA introduces two key concepts to manage growing complexity:
Business Identity : A unique identifier for a business or scenario (e.g., ali.tmall.car).
Extension Point : A hook where custom logic can be plugged in.
The combination of Business Identity and Extension Point forms an Extension Coordinate , enabling framework‑level customization for different tenants, businesses, or scenarios.
Standard Design (COLA)
Standardization captures repeatable rules—naming, module structure, package layout—to reduce ad‑hoc complexity and ensure consistency across the codebase.
COLA Overview
COLA adopts port‑adapter decoupling like hexagonal architecture and domain‑centric layering like onion architecture. It separates core business logic from technical details, allowing the core to be easily understood, reused, and swapped out while infrastructure remains replaceable.
The request processing flow uses CQRS to separate command and query responsibilities, leverages extension points and metadata for extensibility, and follows the layered dependency direction described earlier.
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.
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.
