Entendiendo los microservicios

El término microservicios denota un estilo arquitectónico de construcción de aplicaciones que toma la forma de servicios poco acoplados. Estos servicios desplegables de forma independiente son pequeñas aplicaciones que a menudo se crean mediante una tecnología de servicio web.

Si bien un servicio puede comunicarse a través de SOAP, el otro puede hacerlo a través de REST, Apache Thrift u otra cosa.
No hay un estándar para especificar los requisitos firmes aquí. La idea general es tomar una gran aplicación monolítica y dividirla en varias aplicaciones más pequeñas, es decir, servicios, pero hacerlo de una manera que sirva a un objetivo comercial.

El siguiente diagrama intenta visualizar este concepto:

Popularizado por los gustos de Netflix y Amazon, el estilo de microservicios se propone resolver algunos desafíos clave del desarrollo moderno de aplicaciones, algunos de los cuales incluyen lo siguiente:

  • Tamaño del equipo de desarrollo: este es un microservicio único que puede desarrollar un equipo relativamente pequeño
  • Diversidad de habilidades de desarrollo: estos son diferentes servicios que se pueden escribir en diferentes lenguajes de programación
  • Cambio / actualización: estos fragmentos de código más pequeños son más fáciles de cambiar o actualizar
  • Integración e implementación: estos fragmentos de código más pequeños son más fáciles de implementar
  • Más fácil para los recién llegados: estos fragmentos de código más pequeños son más fáciles de alcanzar
  • Enfoque de capacidades comerciales: este código de servicio individual está organizado en torno a capacidades comerciales específicas
  • Escalabilidad: no todo se escala por igual; fragmentos de código más pequeños se pueden escalar más fácilmente
  • Manejo de fallas: este único servicio defectuoso no desactiva una aplicación completa
  • Pila de tecnología: esto depende menos de las pilas de tecnología de cadena rápida

Al mismo tiempo, inducen varios desafíos nuevos, algunos de los cuales incluyen los siguientes:

  • Comunicación de servicio: este es un esfuerzo adicional en torno a la comunicación de servicio
  • Transacciones distribuidas: estos son desafíos causados por requisitos comerciales que abarcan varios servicios
  • Pruebas y monitoreo: son algo más desafiantes que con las aplicaciones de monolitos
  • Latencia de red: cada microservicio introduce un poco más de latencia de red
  • Tolerancia a fallas: estos son microservicios que deben diseñarse para fallas desde cero

Dicho esto, construir microservicios es una tarea fácil. Primero ir a monolito, con una estructura modular y cuidadosamente desacoplada, puede ser un mejor punto de partida para la mayoría de las aplicaciones. Una vez que un monolítico crece hasta el punto en que sus complejidades comienzan a afectar la forma en que lo manejamos, es hora de considerar dividirlo en microservicios.

Comparte