Skip to main content

An architectural pattern is a general reusable solution related to the high level structure of software systems. For reusable solutions having a more specific scope (e.g. individual classes/components and their interactions), prefer the tag 'design-patterns'.


Architectural patterns are general reusable solution related to the general structure of software systems, similar to design patterns but with a broader scope:

  • Software architecture refers to the high level structures that make a system.

  • Patterns describes a common problem and the core of a solution in a way that it can be reused.

High level structures are for example applications that make a system, layers that make an application, services or microservices, groups of components. Architectural patterns is about how these structures can be related and used.


The borderline between architectural pattern and design pattern is fuzzy.
For example MVC can be considered as:

  • a design pattern, because in a very small scale it could be about just three classes and how they interact
  • a combination of design patterns, as the "Gang of Four" has pointed out in their pioneering book on design patterns
  • an architectural pattern, because M, V, C can each represent a large group of classes, and their relation between the three is in fact about similar relations between the classes that compose them.

The choice of the right tag requires to take into account the purpose of the question:

  • use if it is about how to organize a system into larger parts and how these parts interact as a whole.
  • use in all other cases, and especially it if is about relations between individual classes.
  • both are not mutually exclusive.