SERVICIOS Y MICROSERVICIOS
A partir
de los siguientes conceptos rescatados de lo que se entiende por servicio, se resolverá
una definición concreta de su significado:
Un servicio:
- Cumple una funcionalidad
- Cubre una necesidad
- Puede ser accedido (Descubierto)
- Tiene estados
- Expone sus funcionalidades a través de INTERFACES (Contrato)
- Tiene una capacidad de comunicación
- Puede ser integrable (Composición)
- Cuenta con un contrato y este es medible
Definición: Un servicio es una unidad funcional de negocio, que tiene un contrato definido y capacidad de composición
Ahora
bien, teniendo esto claro, podemos decir que un microservicio a diferencia el
servicio, no está asociado a una generación de valor y aunque resuelve una
funcionalidad, esta no es de negocio.
Para
comprender esto, se pueden ver la generación de valor desde 3 tipos de sistemas
distintos:
- Monolítico: Una misma entidad cumple todas las funcionalidades que general el valor.
- Orientado a servicios: Cada uno de los elementos genera un valor al negocio
- Orientado a microservicios: La solución al problema (Valor) es generada por el trabajo en equipo de muchos microservicios.
El
enfoque tradicional sobre el desarrollo de aplicaciones se centró en el monolítico
Esto tiene sus desventajas ya que cuanto más grande es la aplicación, más
difícil resulta solucionar nuevos problemas rápidamente y agregar nuevas
funciones. Un enfoque basado en microservicios para la creación de aplicaciones
ayuda a resolver estos problemas y a impulsar el desarrollo y la capacidad de
respuesta.
Los
microservicios son una arquitectura y un enfoque sobre la escritura de software
en el que las aplicaciones se dividen en componentes más pequeños e
independientes entre sí. Los microservicios están separados y funcionan
conjuntamente para llevar a cabo las mismas tareas. Este enfoque sobre el
desarrollo de software valora la granularidad por ser liviana y la capacidad de
compartir un proceso similar en varias aplicaciones.
Pros / Contras de los microservicios.
Conociendo
ya qué son los microservicios y sus características, veremos algunos pros y
contras de esta tecnología:
Pros:
- Otorga a los desarrolladores libertad de desarrollar y desplegar servicios de forma independiente.
- Un microservicio se puede desarrollar con un equipo de trabajo mínimo.
- Se pueden usar diferentes lenguajes de programación en diferentes módulos.
- Fácil integración y despliegue automático.
- Fácil de entender y modificar, por lo que la integración de nuevos miembros al equipo de desarrollo será muy rápida.
- Los desarrolladores podrán hacer uso de las tecnologías más actuales.
- El uso de contenedores hará el desarrollo y despliegue de la app mucho más rápido.
- Funcionalidad modular, con lo que la modificación de un módulo no afectará al funcionamiento del resto.
- Fácil de escalar e integrar con aplicaciones de terceros.
Contras:
- Las pruebas o testeos pueden resultar complicados debido al despliegue distribuido.
- Un gran número de servicios puede dar lugar a grandes bloques de información que gestionar.
- Será labor de los desarrolladores lidiar con aspectos como la latencia de la red, tolerancia a fallos, balanceo de carga, cantidad de formatos admitidos, etc…
- Sistema distribuido puede llegar a significar doble trabajo.
- Si se cuenta con un gran número de servicios, integrarlos y gestionarlos puede resultar muy complejo.
- Esta tecnología suele incurrir en un alto consumo de memoria.
- Fragmentar una aplicación en diferentes microservicios puede llevar muchas horas de planificación (y casi podría considerarse un arte).
Comentarios
Publicar un comentario