Architectural Patterns
- Layered pattern: When the uses relation among software elements is strictly unidirectional, a system of layers emerges. A layer is a coherent set of related functionality. In a strictly layered structure, a layer can only use the services of the layer immediately below it.

Shared-data (or repository) pattern: This pattern comprises components and connectors that create, store, and access persistent data. The repository usually takes the form of a (commercial) database. The connectors are protocols for managing the data, such as SQL.
Microkernel :The microkernel pattern, or plug-in pattern, is useful when your application has a core set of responsibilities and a collection of interchangeable parts on the side. The microkernel will provide the entry point and the general flow of the application, without really knowing what the different plug-ins are doing.

Client-server pattern: The components are the clients and the servers, and the connectors are protocols and messages they share among each other to carry out the system's work.
Multi-tier pattern: which describes how to distribute and allocate the components of a system in distinct
subsets
of hardware and software, connected by some communication medium. This pattern specializes the generic deployment (software-to-hardware allocation) structure.Microservices: When you write your application as a set of microservices, you're actually writing multiple applications that will work together. Each microservice has its own distinct responsibility and teams can develop them independently of other microservices. The only dependency between them is the communication. As microservices communicate with each other, you will have to make sure messages sent between them remain backwards-compatible. This requires some coordination, especially when different teams are responsible for different microservices.
A diagram can explain.
