This post summarizes ideas about microservices, that is a type of distributed system.
This post is part of a series of articles about distributed systems.
Description of Microservices
IT microservices is a service-oriented architecture (SOA) where the application is splitted into various independent services that perform the simplest operation possible. Because of the simplicity of these services, they are called microservices.
The services are loosely coupled, it means that each other are very independent.
Communication should be enabled between the different services, that are loosely coupled using lightweight protocols. A service mesh can be used to manage this communication.
Popular communication protocols within microservices are HTTP/REST, gRPC, or messaging (as for example, RabbitMQ or Apache Kafka).
Containerarization is an essential part of microservices as they can be easily exported and imported between different systems. You can read more about containerization on this post.
The more traditional alternative to microservices is monolith architecture.
Advantages of Microservices
Microservices are highly reusable in different projects, because each service solves a very basic problem that may be common to many applications.
This independence between microservices allows to be able to update a microservice without touching the other microservices.
Disadvantages of Microservices
Microservices increases complexity in communications in comparison to monolith architecture because it requires to manage the communication between separate entities.
Though microservices are independent between them, the applications using them are highly dependant on them, so any change on them may affect the application.
Recommendation about Microservices
According to some authors, it is recommended to start with a monolith architecture before tackling with microservice architecture. Starting a project with microservices may not provide the right outcome.
Bibliography about Microservices
This section offers some bibliography and articles about microservices.
Microservices: breaking the monolith
“Microservices: breaking the monolith”
https://dzone.com/guides/microservices-breaking-down-the-monolith
Evolve the Monolith to Microservices with Java and Node
http://www.redbooks.ibm.com/abstracts/sg248358.html?Open
Building Microservices
“Building Microservices”, Sam Newman
Online course: Monoliths to Microservices
“Online Course: Monoliths To Microservices”. Course by Sam Newman offered in O’Reilly Media’s Safari’s platform
Monolith first
“Monolith first” article
https://martinfowler.com/bliki/MonolithFirst.html
You might also be interested in…
External References
- Martin Fowler; “Monolith First“; MartinFowler.com