Understanding Software Architecture: Concepts, Classifications, and the COLA Application Architecture
This article explains the definition and necessity of software architecture, outlines various architectural categories such as business, application, distributed, data, physical, and operations architectures, describes layered, CQRS, hexagonal and onion models, and introduces the COLA framework with its design principles and extension mechanisms.
Architecture is an abstract description of system entities and their relationships, originating from building design to facilitate division of work among roles.
Every system, from aircraft to e‑commerce components, requires architecture to manage complexity, and well‑structured creation outperforms unstructured approaches.
An architect’s primary value is to simplify complexity, making systems understandable for designers, implementers, and operators.
Software architecture provides a high‑level abstraction of a system’s structure, behavior, and attributes, defining components, their interactions, and integration patterns.
Architectural classifications include business architecture (top‑level design influencing organization), application architecture (layered design, interfaces, and non‑functional requirements), distributed system architecture (addressing load, service discovery, CAP trade‑offs), data architecture (governance, unified data platforms), physical architecture (hardware and network topology), and operations architecture (planning and deployment).
Layered architecture separates responsibilities into common tiers, as illustrated by typical three‑layer diagrams.
CQRS (Command Query Responsibility Segregation) separates methods that change state (commands) from those that retrieve data without side effects (queries).
Hexagonal (port‑adapter) architecture divides a system into an internal core (business logic) and external adapters (driving and driven), promoting decoupling of technology concerns.
Onion architecture extends this idea with multiple concentric layers (application, domain service, domain model, infrastructure), enforcing inward‑only dependencies and facilitating testing via mocks.
The COLA framework, an open‑source Alibaba project, builds on these concepts, employing a refined three‑layer structure (presentation, application, domain, infrastructure) and using ports‑adapters, CQRS, and extension points to achieve high modularity and scalability.
COLA’s extension design introduces business identity (BizCode) and extension points, enabling customizable behavior per tenant or scenario through a coordinated extension mechanism.
Standardized conventions in COLA cover module, package, and naming structures, ensuring consistency across components.
Overall, the core mission of application architecture—whether hexagonal, onion, or COLA—is to separate core business logic from technical details, enhancing maintainability, testability, and adaptability.
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.