blog
Artículos Desarrollo Microservices

Microservicios

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 avaliabilidad 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 testarlos, 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 importante.
  • Los diferentes servicios necesitarían su propio almacenamiento, su proprio 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:

El ‘Customer Journey’ con Apache JMeter

Artículo anterior

Los 5 Frameworks Web más valorados

Siguiente artículo
I help Organizations to use Technology to improve people's lives

También te puede interesar

¿Por qué debo mantener mi sitio web?

¿Qué problema hay en utilizar TDD?

La innovación en Pokémon Go

La tecnología no es la innovación, pero…