Monolitos vs Microservicios
Published: 2020-11-17 22:06:22

Es una pregunta que suelen hacerse las empresas al momento de la creación o de algún sistema de información y para comparar estas dos arquitecturas necesitamos saber qué son:

#### Monolitos
Cuando todas las partes de un sistema de información existen en un solo proyecto o solución se le conoce como Monolito. Todos nosotros, en algún momento de nuestra vida como desarrolladores, jefes de proyecto, testers, etc, hemos trabajado en una aplicación Monolito y esto no es más que una aplicación que trabaja con diferentes capas (Datos, Presentación y Controladores por ej.) que luego de compilar se publica en un servidor y queda lista para su uso. A continuación una imagen que representa la arquitectura Monolítica.

![a logo](https://i.ibb.co/bLHnYwL/mon.jpg)

#### Microservicios
Es un estilo de desarrollo arquitectural en el cuál la aplicación está conformada en varias partes que se comunican unas con otras directamente usando protocolos cómo HTTP.

![a logo](https://i.ibb.co/ZV75Qjn/micro.jpg) 

Ahora a lo que vinimos, las diferencias entre estas arquitecturas.

| MONOLITOS                                                                                                                                                                                                                                             | MICROSERVICIOS                                                                                                                                                                                        |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Más Confiable:** Microservicios pueden fácilmente ser distribuidos                                                                                                                                                                                      | **Más Simple:** Monolitos son más simples de administrar pues todo se concentra en un solo lugar                                                                                                          |
| **Menos Recursos:** Al estar distribuidos en muchas partes, se puede asignar recursos solo para aquellos componentes que lo requieran y mantener lo necesario en aquellos que no, cuando en los Monolitos se necesita asignar recursos a todo el conjunto | **Menor Latencia:** Al estar todo en un solo proyecto, en un solo servidor las llamadas entre sus partes son completamente rápidas                                                                        |
| **Fácil Escalamiento:** Los contenedores de microservicios pueden escalar fácilmente. Con menos recursos y una arquitectura diseñada para escalar, destacan en este apartado.                                                                             | **Mayor rendimiento:** Al no encontrarse en diferentes partes y evitarse el uso de contenedores y comunicación, en sistemas donde lo que mas importa es la rápidez destacan por sobre los microservicios. |
| **Más Ágil:** Con despliegues independientes, que son mas pequeños pueden ser puestas en producción de una manera mucho más rápida reduciendo el time to market.                                                                                          |                                                                                                                                                                                                       |
| **Menos comunicación:** Al dividir los componentes, los equipos de trabajo se vuelven mas independientes porque lo que los canales se puede reducir.                                                                                                      |                                                                                                                                                                                                       |