microservicios
Tiempo de lectura: 4 minutos

El Cloud ha cambiado para siempre el mundo de la computación y ha favorecido la proliferación de las aplicaciones basadas en microservicios en detrimento de las arquitecturas monolíticas. Veamos juntos cómo la arquitectura de microservicios está ayudando a empresas innovadoras a crear aplicaciones más agiles y escalables.

Según el consorcio Open Group, un microservicio es un servicio que se implementa con un único propósito, y que además es autónomo e independiente de otras instancias y otros servicios. Los microservicios son los principales componentes arquitectónicos de una Arquitectura de Microservicios.

Romper el monolito en microservicios

Los microservicios surgen como una alternativa a la manera tradicional de desarrollar aplicaciones, lo que se denomina arquitectura monolítica. Este tipo de aplicaciones es muy dependiente del hardware sobre el que se instala, y se configura como un “bloque” único – el monolito, precisamente – compuesto por tres niveles: el front end, la lógica de business y los datos. Esta gran dependencia del hardware se materializa en largos tiempos de inactividad a la hora de realizar actualizaciones del software o despliegues de nuevo hardware para añadir más capacidad.

Un modelo de este tipo es totalmente incompatible con la gran velocidad de los ciclos de desarrollos y con los requerimientos de disponibilidad actuales. Hoy en día, sería impensable tener que pasar por un ciclo entero de integración y testing de una aplicación entera cada vez que se modifique una de sus partes. Un e-commerce cuya web no esté disponible 24/7 perdería un gran número de clientes, que se pasarían a la competencia. De la misma manera, cada vez es menos aceptable que la web de un banco sufra unas ventanas de mantenimiento, lo que hasta hace poco era la norma.

Frente a esto, los microservicios permiten “romper” los bloques del monolito en unidades funcionales concretas e independientes, que trabajan juntas para ofrecer la funcionalidad general de la aplicación. Cada microservicio puede ser actualizado o escalado sin que esto afecte a la disponibilidad de los demás unidades y de la aplicación en su conjunto.

Los microservicios se adaptan perfectamente a los requerimientos de agilidad, escalabilidad y confiabilidad de las aplicaciones modernas en la nube.

Servicios inteligentes y tuberías tontas

Martin Fowler describe los microservicios como una arquitectura con “puntos finales inteligentes y tuberías tontas”. Esto permite un alto nivel de desacoplamiento, manteniendo cada microservicio su propio dominio lógico, comunicándose y compartiendo datos con los demás utilizando sencillos protocolos RESTful.

Además, los microservicios propician un modelo enfocado a producto, que permite a un equipo de desarrollo seguir vinculado al servicio que ha desarrollado a lo largo de todo su ciclo de vida – en contraposición con el modelo enfocado a proyecto, donde el equipo es únicamente responsable del desarrollo del software que a continuación se traslada a otro equipo para su mantenimiento.

Casos de éxito

Abrazar los microservicios ha ayudado a grandes empresas a ser tan ágiles e innovadoras como startups. Es el caso de Netflix, que hace ya unos años acometió un gran cambio, transformándose de una aplicación monolítica de alquiler de DVD a una arquitectura de microservicios que le permite ofrecer servicios de streaming digital de calidad en distintas pantallas y dispositivos a millones de clientes en todo el mundo.

Amazon también tuvo que adoptar los microservicios, como parte de su transición desde una tienda de libros online a un proveedor de servicios en la nube. Lo miso hizo Twitter para poder soportar el trafico que estaba recibiendo. Y así, casi todas las grandes compañías de Internet como Ebay o el mismo Google.

¿Son los microservicios para mi?

Hemos visto como la arquitectura enfocada a microservicios es una magnifica respuesta a las necesidades actuales de desarrollo y oferta de servicios, y como empresas la han adoptado con éxito. Aún así, se trata de un concepto reciente y que va a madurar más con el tiempo. Por otro lado, es un modelo que introduce más complejidad, al existir más componentes que administrar y monitorizar. Definitivamente, los microservicios pueden dar lo mejor de sí mismos en empresas que hayan adoptados prácticas modernas de ingeniería del software, como DevOps. Muchos expertos, desaconsejan abordar desde cero la complejidad de los microservicios, llevando a cabo más bien un cambio gradual. En este sentido, IBM ha publicado una interesante guía que detalla las decisiones clave que tiene que tomar una organización antes de abrazar una arquitectura de microservicios.

¿Y tu empresa, está lista para el cambio?