Continuing with the theme of evolution and changes in paradigms and working methods happened in the area of software development, which we recently touched on in the articles called "Software Development: A historical review to the present day", "Interoperability through the Cloud: How to achieve it?" y "XaaS: Cloud Computing - Everything as a Service", today we will talk about Microservices.
Microservices are a modern software architecture, not an API (Application Programming Interface) or a technology itself, which can be installed and used. Software architectures, also known as software patterns, are completely alien to programming languages, since they only establish the way in which technologies should work and not how they are implemented.
Table of Contents
Microservices can be seen as an evolution of the SOA Architecture (Service-Oriented Architecture), which guides developers to create more modular applications, that are functional and autonomous, with a high capacity to be reused in an efficient way, as is done in a similar way, when we optimize the use of some hardware, in which It only unfolds what is really necessary, instead of unfolding its full potential unnecessarily.
The Architecture of Microservices, in practice it has not become as widespread as in theory, that is, it is better known than used. However, every day more, many developers are implementing it because it is a software development model that improves the variables time, performance and stability within the projects where it is applied. Besides, his simple associated scalability makes it especially suitable in developments where cross-platform compatibility (Web, Mobile, Wearables, IoT) is essential.
But while SOA is a higher level Architecture, that is, an Architecture where applications based on services are built, where a service is the smallest and most functional unit of work within a created application, Microservices Architecture also allows us to create services, but these services are designed in a very small and specific way so that they fulfill a very precise and punctual functionality, in such a way that they can be decoupled from the rest of the applications and function in a totally autonomous way from the rest of the application where it was created.
What are Software Architectures (Patterns)?
To understand the Software Architecture of Microservices well, it is good to know a little about all the best known existing Software Architectures. There are many existing, as can be seen on the site of oodesign or simply in Wikipedia, but according to the famous book called «Pattern Design Book» (Design Patterns Book) existing patterns can be classified as:
Those that deal with ways to instantiate objects and whose goal is to abstract the instantiation process and hide the details of how objects are created or initialized. In this class are the following:
- Abstract factory
- Factory Method
Those that describe how classes and objects (simple or compound) can be combined to form large structures and provide new functionality. In this class are the following:
Those that help us define the communication and iteration between the objects of a system. The purpose of this pattern is to reduce the coupling between objects. In this class are the following:
- Chain Of Responsibility
- Template Method
Previous design patterns expressed schemas that define design structures with which to build software systems. But when we want to better express a fundamental organizational and structural scheme for the software systems created, we usually find this other classification:
- Slate architecture
- DAO: Data Access Object
- DTO: Data Transfer Object
- EDA: Event Driven Architecture
- Implicit invocation
- Naked objects
- Layered programming
- SOA: Service Oriented Architecture
- Three levels
There is also the "Controller View Model" which is well known and used, and is divided into:
- Model / View / Controller
- Model / View / Presenter
- Model / View / Presenter with Model Presenter
- Model / View / View-Model
- Model / View / Presenter with Passive View
- Model / View / Presenter with Supervisor Controller
Being the «Model View Controller» one of the best known and implemented today, it is insufficient to provide the required functionalities to a corporate application, and this is one of the main reasons why, Microservices Architecture is replacing the Model-View-Controller (MVC).
Advantages of Microservices Architecture
When a web platform makes use of the Microservices Architecture, it usually has the following advantages:
- Solve easily each problem or problem presented by addressing each small Microservice involved in a specific situation.
- To mitigate General or global failures of the services, since when a Microservice fails it does not affect the others, because they are totally independent.
- Facilitate the launch and incorporation of complete or specific functionalities or services, since each Microservice can be added or removed and updated separately and progressively.
- Improve access to applications or services created from all types of devices and platforms.
- Increase the versatility of the platform, since Microservices can be distributed on different servers and be written in different languages.
Open Source Frameworks
There are many open source options that software developers can use to develop solutions that are part of Microservices Architectures. Specifically for Java, which is a widely used technology for this, there are the following:
- Eclipse MicroProfile
- Payara Micro
- Spring boot
- WildFly Thorntail
Web Examples with Microservices Architectures
Among the large number of websites that provide large-scale application services and have progressively implemented the Microservices Architecture to improve the maintenance and scalability of their services and products platform, making it simple, effective and fast, we can mention three major ones in the industry What are they:
- The Amazon
It is clear that Microservices contribute a lot to Modern Web-based Software DevelopmentBut they also mean tackling many new challenges to solve. Problems that not only have to do with the Framework learning and working efficiently, but also how these new developments are complemented and implemented in the IT departments, who in the end are the ones who put them online and manage, and have a vote of weight in final decisions about each development. But This Architecture is here and it has come to stay for a long time.