The microservices architecture was invented to solve some of the difficulties caused by large projects because over time IT projects tend to grow and gradually existing functionalities are extended, with many additions and few deletions, we end up with a thousand complicated and difficult to manage functional sheets.
As the amount of code increases, its maintenance becomes more and more complex. Even with a solid software architecture, the interdependencies between the different bricks increase over time.
Micro-service is a method of developing software applications as a suite of modular and independent services, in which each service performs a process that it communicates through a predefined mechanism.
1) Monolithic architecture:
Monolithic applications generally have a fairly large source code, which is often intimidating and even discouraging for some developers. When new developers join the project team, they need to spend a lot of time familiarizing themselves with the application’s source code and understanding the dependencies between modules. With a monolithic architecture, it is difficult to make improvements to the application without taking the risk of affecting other functionalities. Any modification of the application results in several revisions and approvals that increase the time of the deployment cycle.
Problem n°1: How to ensure high availability of applications?
Problem n°2: How to respond quickly to new business functionalities and develop applications in a very frequent way.
Problem n°3: How to be independent of the technologies used while knowing that these technologies evolve very quickly. Microservices ArchitectureA Microservices Architecture :
2) Microservices architecture:
The Microservices architecture is implemented for complex and voluminous software applications.
Composed of one or more services, Microservices can be deployed independently of each other while remaining slightly dependent.
Each of these Microservices focuses on the completion of a specific functionality or module.
The figure above represents a simplified schema of an application based on the Microservices architecture. Every micro-service can be:
Developed independently Have an independent database independently tested deployed independently
(Technology different from others)
Micro-service applications make it easier for developers to break down their work into small, independent teams and integrate this work as they go along.
In summary, micro services offer the following advantages to developers: Small size service:
Basically, a service should not execute more than one feature of the business logic, so it will be easy to manage in relation to a monolithic context.
Targeted: As mentioned above, each microservice is designed to deliver only one feature. When designing a microservice, the architect must be concerned about the service, which will be his deliverable.
Improves deployment and loading times for IDE Facilitates debugging by isolating problems
Allows teams to work independently of each other
Development teams can be quite small using the latest technologies. To be objective, there are also some disadvantages:
With many services, application integration and management can be complex Management of communication mechanisms between all departments Memory consumption often higher than a monolithic architecture
Micro-services are a new model for software developers: they allow them to develop much more complex business applications in the form of a suite of related functional compartments.
This is clearly a powerful idea that offers serious advantages for the design and implementation of enterprise applications.
On the other hand, the Microservice Architecture is expensive in terms of infrastructure, it is necessary to think of this architecture in cases where projects are large and evolve over time.
But we will remember that the major world services that are
PAYPAL, NETFLIX, eBAY, AMAZON, TWITTER, SOUNDCLOUD and others have all moved from monolithic to micro services.