Skip to content

Software Architecture Terms

Essential terms and concepts related to software architecture, design patterns, and system design.

The principle of hiding complex implementation details and showing only the necessary features of an object or system.

A server that acts as a single entry point for a collection of microservices, handling routing, composition, and protocol translation.

A general, reusable solution to a commonly occurring problem in software architecture within a given context.

The server-side of an application that handles business logic, database interactions, authentication, and server configuration.

A central pattern in Domain-Driven Design (DDD) that defines explicit boundaries within which a particular model is defined and applicable.

A design pattern used to detect failures and prevent cascading failures in distributed systems by temporarily blocking requests to a failing service.

The degree to which elements within a module belong together. High cohesion is desirable as it indicates a well-focused module.

The degree of interdependence between software modules. Loose coupling is preferred as it makes systems more maintainable.

CQRS (Command Query Responsibility Segregation)

Section titled “CQRS (Command Query Responsibility Segregation)”

An architectural pattern that separates read and write operations into different models, optimizing performance and scalability.

A system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages.

An approach to software development that focuses on the core domain and domain logic, using a common language between developers and domain experts.

An architectural pattern where the flow of the program is determined by events such as user actions, sensor outputs, or messages from other programs.

A pattern where all changes to application state are stored as a sequence of events, allowing the state to be reconstructed by replaying events.

A structural design pattern that provides a simplified interface to a complex subsystem.

The capability to switch automatically to a redundant or standby system upon the failure of the currently active system.

The client-side of an application that users interact with directly, typically involving UI/UX design and implementation.

Hexagonal Architecture (Ports and Adapters)

Section titled “Hexagonal Architecture (Ports and Adapters)”

An architectural pattern that aims to create loosely coupled application components that can be easily connected to their software environment.

A characteristic of a system designed to ensure an agreed level of operational performance, usually uptime, for a higher than normal period.

Adding more machines or instances to distribute load, as opposed to vertical scaling (adding more power to an existing machine).

A property of operations where performing the operation multiple times has the same effect as performing it once.

An architectural pattern that organizes code into layers, each with a specific role and responsibility (e.g., presentation, business logic, data access).

A device or software that distributes network or application traffic across multiple servers to ensure reliability and performance.

An architectural style that structures an application as a collection of small, independent services that communicate through well-defined APIs.

Software that acts as a bridge between an operating system or database and applications, especially on a network.

An architectural pattern that separates an application into three interconnected components: Model (data), View (UI), and Controller (business logic).

An architectural style where all components of an application are tightly integrated and deployed as a single unit.

An architectural pattern that separates an application into multiple logical layers (tiers), typically presentation, application, and data tiers.

A messaging pattern where publishers send messages to topics without knowledge of subscribers, and subscribers receive messages from topics they subscribe to.

The duplication of critical components or functions of a system to increase reliability and availability.

A design pattern that mediates between the domain and data mapping layers, providing a collection-like interface for accessing domain objects.

The ability of a system to handle and recover from failures gracefully, continuing to provide service even under adverse conditions.

An API that adheres to REST architectural constraints, using HTTP methods and stateless communication.

The capability of a system to handle increased load by adding resources, either horizontally (more machines) or vertically (more powerful machines).

An architectural pattern where functionality is grouped into distinct services that communicate over a network.

A design principle for separating a computer program into distinct sections, each addressing a separate concern or aspect of functionality.

A design pattern that restricts the instantiation of a class to a single instance and provides global access to that instance.

Five design principles (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) for writing maintainable object-oriented code.

A design where each request from client to server must contain all information needed to understand and process the request.

A client-server architecture with three layers: presentation tier (UI), logic tier (business logic), and data tier (database).

A condition where components are highly dependent on each other, making the system harder to maintain and modify.

A methodology for building software-as-a-service applications that are portable, scalable, and maintainable.

Increasing the capacity of a single machine by adding more resources (CPU, RAM, storage) rather than adding more machines.

A principle of extreme programming that states programmers should not add functionality until it is necessary.


Understanding these architectural terms is essential for designing scalable, maintainable, and robust software systems.