Today, We will discuss the Micro-services Architecture, SOLID, DDD, Onion Architecture, Clean Architecture concepts as well;
Micro-service architectures have evolved into a popular method for building multi-platform applications over the past few years. A well-known example is Netflix, who offers applications for several platforms, including mobile devices, smart TVs and gaming consoles . Service-oriented architectures are the foundation of micro-service architectures, but micro-services have unique properties. A micro-service is autonomous and provides a limited set of (business) functions. In service-oriented architectures, designing services and selecting boundaries are fundamental problems.
First and foremost, The SOLID Principles are five principles of Object-Oriented class design. They are a set of rules and best practices to follow while designing a class structure. SOLID is an acronym that stands for five key design principles: single responsibility principle, open-closed principle, Leskov substitution principle, interface segregation principle, and dependency inversion principle. All five are commonly used by software engineers and provide some important benefits for developers.
Besides ,Onion Architecture is based on the inversion of control principle. It's composed of multiple concentric layers interfacing with each other towards the core. This architecture doesn't depend on the data layer, as in traditional multi-layer architectures, but rather on domain models. DDD is an approach where the main focus is on real business values more than on technologies, frameworks, etc. There are five qualities which all of the predecessor architectures and Clean Architecture possess:
- Framework independence: the architecture is decoupled from third party frameworks.
- Testable: the architecture is easy to write unit tests against.
- UI independence: the architecture can be unplugged from the user interface
- Database independence: the architecture is decoupled from the underlying data store.
- External agency independence: the business rules of the architecture are isolated and know nothing about the outside world.
Last but not least, Micro-services architecture (often shortened to micro-services) refers to an architectural style for developing applications. Microservices allow a large application to be separated into smaller independent parts, with each part having its own realm of responsibility. Microservices-based application architecture represents a collection of small, autonomous, and self-contained services which are built to serve a single business functionality/capability. The following is a sample microservices-styled application landscape representing a set of microservices. Pay attention to different microservices accessed through the API gateway.