Microservices

 Microservices 

Microservices are a solution, to complex online services, normal services used to have 3 principal parts, the html server, a server dedicated to answer all HTML and javascript requests and a database. This monolithic approach is hard to maintain and fragile, if something happens with a functionality in this monolithic services is probable that parts in this service will fail and the load in the service is hard to balance, many people trying to access to only one part of the service could deny that service to other people.


Micro services consist in dividing everything into different components, it allows to have a more explicit component interface. Microservices are meant to b as decoupled and cohesive as possible, basically consisting in smart endpoints and dumb pipes this takes advantage of http-request-response, microservices also give the option to use based on multiple technologies, not limiting your team to exclusively use C++ or node.js for example. The data is not centralized in a single server and database, they let all services to have their own database, cache their self etc.

An interesting thing about micro services is that the division between all modules allows them to fail without shutting down the entire service. If all services are separated it helps to detect failures easily, monitoring in real time each service If a module is not performing well or is failing constantly is easy to replace that module for a new one without shutting down the entire service, in a monolithic approach you need to replace the module and possibly rewrite a lot of code, shut down the entire service and starting the new one whith the changes made. 

Monolithic services are being replaced fast,  but microservices are new and failures and optimizations will appear in a future, the limits for compartmentalization for example and how to develop hybrid systems.



Comentarios

Entradas más populares de este blog

The Hundred-Year Language

Mother of Compilers

Episode 61: Internals of GCC