R&D Management 15 min read

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.

IT Architects Alliance
IT Architects Alliance
IT Architects Alliance
What Is Software Architecture? Core Concepts, Patterns, and the COLA Framework

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.

Layered Architecture Diagram
Layered Architecture Diagram

CQRS

CQRS (Command Query Separation) splits object methods into commands (which change state and return void) and queries (which return results without side effects).

CQRS Diagram
CQRS Diagram

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.

Hexagonal Architecture Diagram
Hexagonal Architecture Diagram

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.

Onion Architecture Diagram
Onion Architecture Diagram

Dependencies flow outward‑to‑inward, while inner layers remain unaware of outer ones.

Dependency Direction Diagram
Dependency Direction Diagram

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.

COLA Layered Design
COLA Layered Design

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.

Extension Coordinate Diagram
Extension Coordinate Diagram

Standard Design (COLA)

Standardization captures repeatable rules—naming, module structure, package layout—to reduce ad‑hoc complexity and ensure consistency across the codebase.

Component Structure Standard
Component Structure Standard

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.

COLA Component Relationship
COLA Component Relationship

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.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Software ArchitectureSystem Designlayered architectureCQRSHexagonal Architectureonion architectureCOLA framework
IT Architects Alliance
Written by

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.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.