Todas las personas que lleváis años trabajando en proyectos del sector IT, ya conocéis el concepto de arquitectura monolítica. En esta, todos los procesos y componentes están asociados, y por lo tanto no se puede modificar uno sin alterar el resto.
Esta característica de las arquitecturas monolíticas en el desarrollo de aplicaciones provoca que simples cambios circunstanciales como un aumento puntual de demanda en una aplicación, obligue a los desarrolladores a escalar la arquitectura en su totalidad. Debido a esto, la experimentación y la implementación de nuevas ideas se convierte en una labor complicada, y este problema se hace más grande a medida que crece la base de código.
El principal problema de todo esto radica en uno de los aspectos clave de cualquier aplicación; su disponibilidad. Esto se debe a que existe un alto nivel de dependencia entre los distintos procesos, de manera que si existe un error en un proceso en concreto, este afectará de inmediato al resto.
Características:
Entre los aspectos que caracterizan los microservicios, destacamos:
Autonomía:
Todos y cada uno de los componentes de la aplicación se pueden desarrollar, implementar, operar y escalar de forma completamente independiente. Es decir, cualquier error o modificación en un servicio componente no afecta el funcionamiento de otros servicios.
Los servicios no necesitan compartir ninguno de sus códigos o implementaciones con otros servicios. Las comunicaciones entre componentes individuales se llevan a cabo a través de API.
Especialización:
Cada servicio está dotado de una serie de capacidades específicas, y está enfocado en la resolución de un problema concreto. Cuando el equipo de desarrolladores incluye código a un servicio a lo largo del tiempo y el servicio se complica, es posible dividirlo en pequeños microservicios.
Ventajas:
- Agilidad: Los tiempos del ciclo de desarrollo se reducen considerablemente debido a que los microservicios potencian la organización de equipos pequeños e independientes que actúan en un contexto pequeño y bien delimitado.
- Escalado flexible: Cada servicio se escala de manera independiente con el objetivo de satisfacer la demanda de la característica de la aplicación en cuestión.
- Implementación sencilla: Los microservicios facilitan la integración y las entregas contínuas.
- Libertad tecnológica: Con los microservicios, se rechaza el modelo de “diseño único”, y cada equipo tiene libertad total para elegir la herramienta que mejor solución ofrezca a cada problema en particular.
- Código reutilizable: Debido a la división de software en módulos pequeños y bien delimitados, se pueden utilizar determinadas opciones para distintos fines (por ejemplo, un servicio diseñado para una labor en concreto, se puede incluir como componente básico para otra característica.
- Resistencia: La independencia de los componentes incrementa la resistencia de cualquier aplicación a los errores.
Ahora ya tienes unas nociones básicas sobre microservicios. Si quieres saber más o quieres hacer alguna consulta en referencia a tu arquitectura, escríbenos a través de nuestra página de contacto.