¿Qué son los microservicios?

¿Qué son los microservicios?

Los microservicios y sus arquitecturas asociadas están ganando popularidad en empresas de todos los tamaños. Sin embargo, muchos responsables de TI todavía desconocen qué son realmente los microservicios y qué implica un marco de trabajo de microservicios para el desarrollo de soluciones de TI en las empresas actuales. En el ámbito de DevOps, los microservicios también están teniendo un gran impacto. El ágil ciclo de desarrollo está uniendo dos entidades de TI, desarrollo y operaciones, en una filosofía de proyectos ejecutada conjuntamente.

En esencia, los microservicios se pueden entender como una forma de crear aplicaciones corporativas dividiéndolas en servicios independientes más pequeños que no dependen de un lenguaje de código específico. En otras palabras, los equipos de desarrollo pueden utilizar las herramientas de lenguaje que les resulten más convenientes sin perder sinergia en el proceso de desarrollo. Utilizando la filosofía de los microservicios, las aplicaciones más grandes y complejas se pueden dividir en componentes de ejecutables que, una vez recompuestos, ofrecen la funcionalidad completa de una aplicación de gran escala y complejidad.

En la conferencia Connect de MuleSoft de 2016, Katharina Probst de Netflix y el CTO de MuleSoft, Uri Sarid, explicaron que las empresas más exitosas de la actualidad, como McDonalds, Under Armour, Amazon, Tesla y Netflix, no solo compiten con los bienes y servicios que venden, sino también con sus plataformas digitales, ofreciendo a los clientes formas innovadoras de acceder a dichos bienes, servicios y experiencias, a escala y en tiempo real. Esta oferta es posible gracias a la creación de pequeños servicios que componen procesos que evolucionan de manera independiente, pueden desarrollarse en cuanto se necesitan y están optimizados para los cambios y la reutilización. 
 
Adoptar los microservicios permite a las organizaciones alcanzar una mayor agilidad y reducir costes, gracias al nivel de detalle y la capacidad de reutilización inherentes a esta filosofía. El gran número de tecnologías y filosofías compatibles ha hecho realidad el concepto de arquitectura basada en microservicios para empresas de cualquier tamaño, introduciendo un nivel de agilidad y eficiencia en el desarrollo y despliegue de aplicaciones que antes se creía imposible.

Estos conceptos y tecnologías implican una mayor disponibilidad de contenedores, herramientas y procesos, que hace que los procesos basados en SOA sean más asequibles, así como los procesos de diseño basados en dominios. Al combinarlos, se produce un entorno de desarrollo más centrado en la colaboración que en la gobernanza del código, lo que mejora la productividad.

Definición de la arquitectura de microservicios

El estilo de arquitectura de microservicios aprovecha una filosofía consistente en desarrollar aplicaciones individuales como conjuntos de servicios pequeños, específicos y desplegables independientemente. Cada microservicio ejecuta su propio proceso y se comunica con un mecanismo ligero, a menudo una API de recurso HTTP. Estos servicios se engloban según funciones empresariales específicas y se despliegan de manera independiente a través de un mecanismo totalmente automatizado.

Los microservicios se pueden alinear con la transición a ofertas basadas en la nube, donde es posible gestionar múltiples aplicaciones mediante un conjunto compartido de servicios. No obstante, la arquitectura basada en microservicios ha demostrado ser útil en implementaciones de nubes públicas, privadas e híbridas, en las que es posible acceder a una colección de servicios pequeños e independientes mediante una interfaz ligera, como una API RESTful.

Podría decirse que el concepto de arquitectura basada en microservicios se remonta a los inicios de la arquitectura orientada al servicio (SOA), que se centraba en la detección de servicios y el uso anónimo de servicios a partir de UDDI (descripción, detección e integración universales), principios aún válidos hoy en día. Los microservicios, no obstante, van varios pasos más allá, al utilizar APIs RESTful junto con plataformas y contenedores virtualizados para crear una integración de servicios híbrida que reemplaza las aplicaciones monolíticas de una sola base de código. Es la composición de estos servicios independientes lo que produce la experiencia asociada a una aplicación monolítica. La arquitectura SOA, en su concepción original, fracasó simplemente porque los componentes adecuados para su ejecución no eran fácilmente accesibles.

En cambio, los microservicios, que han evolucionado a partir de los principios de SOA, son ahora una realidad gracias a la introducción de nuevas tecnologías que constituyen los tres componentes principales de una arquitectura de microservicios. Una vez que estos componentes se consolidan y son fácilmente accesibles, emergen las siguientes ventajas:

  • Contenedores: los contenedores de software han creado un marco estandarizado para todos los servicios abstrayendo el código de sistema operativo esencial del hardware subyacente.  La estandarización en forma de contenedores elimina lo que antes era un proceso de integración complicado en un mundo de infraestructuras heterogéneas. Gracias a proveedores como Docker, los contenedores han revolucionado la forma en que los desarrolladores crean y despliegan aplicaciones.
  • APIs: la adopción y las funciones potenciadas que ofrecen las API han creado un formato sólido y estandarizado para las comunicaciones entre aplicaciones, servicios y servidores. Las API de REST (transferencia de estado representacional) en particular son clave en la arquitectura de microservicios: una API de RESTful desglosa una transacción para crear una serie de pequeños módulos en la que cada uno aborda una parte subyacente concreta de la transacción. Esta modularidad ofrece una gran flexibilidad a los desarrolladores para la creación de API ligeras, que son más adecuadas para las aplicaciones de navegador.
  • Infraestructuras de nube escalables: las infraestructuras de nube públicas, privadas e híbridas ahora son capaces de abastecer recursos bajo demanda y escalarse eficazmente para prestar servicios, independientemente de las cargas o el tráfico asociado. Esta posibilidad aporta elasticidad a los microservicios y los hace más adaptables y eficientes.

Los riesgos de una arquitectura de microservicios

El peligro que presenta esta nueva tendencia de arquitectura es que se puede concebir como una panacea para todos los problemas de TI e implementarse como "lo más novedoso" sin tener en cuenta requisitos previos como el modelo operativo de TI, la infraestructura y las competencias de los desarrolladores.

Las estrategias de arquitectura de microservicios deberían tener un enfoque cuidadoso y mesurado para obtener el máximo beneficio: recomendamos encarecidamente diseñar y desarrollar los microservicios de forma que engloben funciones de dominios empresariales determinados y siempre con la seguridad en mente. El riesgo de no hacerlo es terminar con un conjunto monolítico de microservicios porque los desarrolladores han trabajado cada uno por su cuenta. En otras palabras, las organizaciones podrían acabar con una gama dispar de microservicios que presente todas las desventajas del modelo monolítico, la complejidad añadida de la distribución y una reducción en el retorno de la inversión general. Las empresas que buscan adoptar los microservicios deben hacer que sus equipos de desarrollo se coordinen en sus esfuerzos y sigan planes bien trazados. 

También se recomienda que establezcan una estricta disciplina de entrega continua y cuenten con las herramientas necesarias para automatizar el flujo de lanzamiento. Y es que la falta de automatización y coordinación al estilo DevOps en los equipos puede hacer que las iniciativas de microservicios acaben siendo contraproducentes. 

Una plataforma para la arquitectura de microservicios

Los microservicios son claramente una tendencia importante y aceptada en el sector del desarrollo de software, y ofrecen numerosas ventajas respecto a enfoques de arquitectura anteriores. Sin embargo, hay diferentes aspectos a tener en cuenta al implementar una arquitectura de microservicios en una organización. Las empresas deben adoptar los microservicios por su facilidad de despliegue y su naturaleza ágil, pero, si no se gestionan adecuadamente, la arquitectura puede provocar problemas de organización y gobernanza. Los productos desarrollados con arquitecturas de microservicios también deberán integrarse con las pilas tecnológicas heredadas; si este proceso no se realiza adecuadamente, puede generar deuda técnica y costes operativos al equipo de TI. Por tanto, una implementación de microservicios que genere ventaja competitiva y ayude a las empresas a innovar más rápido va más allá de una mera selección de productos y software. También hay que considerar a las personas, los procesos y la cultura de la organización.
Por eso, recomendamos un enfoque holístico de plataforma para los microservicios, con la conectividad API-led en su centro. La conectividad API-led no solo crea el componente de integración esencial para el correcto funcionamiento de las pilas tecnológicas, también permite a desarrolladores dentro y fuera del equipo central de TI crear nuevas soluciones de forma gestionable, reutilizable y gobernada, eliminando así las preocupaciones de control asociadas al exceso de aplicaciones. El enfoque de plataforma de MuleSoft ofrece un modelo operativo único que capacita a los equipos de líneas de negocio y de TI para crear, innovar y entregar nuevas soluciones dondequiera que se necesiten en la empresa, sin renunciar a la visibilidad y la capacidad de gobernanza necesarias. 

En el entorno empresarial hipercompetitivo de la actualidad, es importante destacar y ofrecer una experiencia excelente a clientes, empleados y partners. Los microservicios son clave para lograrlo. Con un enfoque holístico y gestionable, no cabe duda de que la arquitectura de microservicios se convertirá en un estándar tecnológico para las empresas.