Cada día más proyectos se centran en los microservicios como enfoque para su arquitectura del software, sobretodo en el ámbito de las aplicaciones empresariales. Los microservices están de moda.

En su artículo, Martin Fowler y James Lewis nos explican los orígenes del Microservices, las características de esta arquitectura y cómo estos pueden ayudar en el desarrollo, la entrega y despliegue de software en contraposición de las aplicaciones “monolíticas”.  Te recomiendo que lo leas.

¿Qué son los Microservicios?

Los Microservicios son servicios de pequeñas dimensiones y autónomos que trabajan conjuntamente. Entendamos pequeñas dimensiones como algo que puede ser gestionado por un equipo pequeño, y autónomo como algo que sea una entidad separada, algo que se pueda desplegar como un servicio aislado, o independiente.

Estos servicios se basan en la filosofía Unix, que te anima a escribir programas que hagan “una cosa y lo hagas bien” y a escribir “programas que trabajen conjuntamente”.

¿Por qué los Microservicios para tu organización?

porque …

  • Hay un equipo de desarrolladores trabajando en la aplicación
  • Nuevos miembros del equipo tienen que ser productivos cuanto antes
  • La aplicación tiene que ser fácil de entender y modificar
  • La entrega continua de la aplicación es obligatoria
  • Por temas de escalabilidad y disponibilidad necesitas ejecutar diferentes copias de la aplicación en diferentes máquinas
  • Quieres aprovechar los frameworks, bibliotecas y lenguajes de programación emergentes

¿Qué ventajas te pueden traer los microservicios?

Entre muchas ventajas creo que se destacan:

  • La libertad de lenguaje. Como los servicios colaboran entre sí, podemos decidir qué tecnologías utilizar en cada servicio. Esto nos dá la libertad de escoger la “herramienta correcta para cada tarea”. Imagina por ejemplo, gestionar las publicaciones de tu red social con Ruby y las fotos con JAVA
  • Escalabilidad. Con servicios más pequeños, solo escalamos aquellos servicios que necesitan ser escalados, sin tener que alterar las otras partes del sistema
  • Facilidad de despliegue. Puedes realizar un cambio en un servicio y desplegarlo independientemente del resto del sistema. Al contrario de las aplicaciones monolíticas en que tendrías que desplegar toda la aplicación, con Microservices tu código puede ser desplegado más rápidamente. Puedes realizar entregas más rápidas de esta forma.
  • Alineación organizativa. Microservices permite reducir el número de personas trabajando en el mismo código y eso puede ser clave en el momento de alinear la arquitectura con la organización. ¿Equipos pequeños trabajando en porciones de código más pequeños generan más productividad?

¿Desventajas?

  • Las diferencias filosóficas entre los desarrolladores pueden ser desastrosas para el proyecto. ¿Entienden tus desarrolladores como deben comunicar los servicios? , cómo testearlos, desplegarlos o incluso monitorearlos?
  • Los microservicios requieren un buen equipo DevOps para lidiar con toda la “carga”. Es importante tener un equipo que sabe cómo utilizar la integración continua, la entrega continua,y el despliegue continuo. Esto tendrá un coste añadido.
  • Los diferentes servicios necesitarían su propio almacenamiento, su propio monitoreo y su propio mantenimiento.
  • Si el microservicio falla el usuario se queda sin aquél servicio, y muchas veces es necesario desarrollar un sistema complejo para responder a los errores.

Ejemplos de organizaciones que utilizan microservices:

Conclusión

La velocidad gana en el mercado y la idea de Microservicios es ganar en velocidad, también. Microservicios me parece un estilo muy potente e interesante, sobretodo para aplicaciones enterprise, o proyectos que sabes seguro que van a escalar. Pero Microservicios no es para todos, y no tengo dudas de que necesitas un equipo preparado para la tarea. Si vas a usar microservicios, puede que sea buena idea integrar primero DevOps y las herramientas de DevOps en tu organización.

Fuentes:

¿Y tú qué dices?

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.