AUTORES
Martino Zito
Director @Bip xTech
En los últimos tiempos se habla mucho de los “microservicios”, pero ¿qué son en realidad y cómo pueden utilizarse de forma eficaz y rentable?
En los últimos tiempos se habla mucho de los “microservicios”. Este repentino aumento de la popularidad es en sí mismo notable: nunca se había prestado tanta atención a un estilo/práctica de arquitectura de software. De hecho, el tema de las arquitecturas de software siempre ha sido una prerrogativa de los especialistas del sector, y ver que un tema así se hace eco en varios medios de comunicación nos deja ciertamente sorprendidos.
Las arquitecturas de microservicios (también conocidas como MSA) se utilizan para la creación de capas de servicios de aplicación de sistemas o plataformas. La arquitectura, a nivel elemental, consiste en un conjunto de procesos (microservicios) que interactúan entre sí. Cada microservicio se comporta de forma independiente de los demás y es capaz de comunicarse a través de la red mediante interfaces de software estructuradas sincrónicas o asincrónicas (por ejemplo, REST, cola de mensajes, …). Cada microservicio se ocupa de gestionar un recurso o una función de negocio, y tiene su propia independencia tecnológica (lenguajes, marcos) y su propia capa de persistencia. Un buen diseño en contextos de microservicios también permite dividir el trabajo de implementación entre varios equipos potencialmente independientes.
Por lo tanto, visto desde esta perspectiva, cualquier microservicio individual no es muy diferente de una capa de servicio de aplicación clásica en un perímetro limitado de funcionalidad. Entonces, ¿cómo puede un artefacto técnico como este MSA crear tantas oleadas? ¿Es realmente innovador? ¿Es realmente un “actor de cambio”? ¿O es simplemente otra reinterpretación de conceptos que ya son mejores prácticas o comunes?
Desde un punto de vista puramente técnico, y en relación con el microservicio único, la respuesta a la última pregunta es “no hay gran diferencia”.
La clave del éxito radica básicamente en que las arquitecturas de microservicios son el vértice evidente de toda una serie de otras metodologías y tecnologías: Agile, API First Design, Behavior Driven Development, Code Infrastructures y DevOps sólo por nombrar algunas.
De hecho, cuando se evalúa junto con estas últimas tecnologías y metodologías, las MSA asumen, a todos los efectos, las características de ser un “actor de cambio”.
¿Por qué adoptar una solución basada en MSA?
En Internet es frecuente encontrarse con interminables listas de ventajas y desventajas derivadas de la implantación de una arquitectura de microservicios; tantas, de hecho, que el lector acaba confundido y, a veces, abrumado. En este artículo, resumo algunas de las ventajas significativas que pueden justificar la adopción de MSA.
Empecemos por hacer una distinción entre la compra de una solución basada en MSA y la construcción de una. Evidentemente, las ventajas que se obtienen en el caso de la “compra” también se aplican en el segundo caso -construir el MSA- después de haber realizado el esfuerzo necesario para la primera realización.
En el primer caso (compra) la solución tiene las siguientes características “out-of-the-box”:
Independencia del entorno. Las soluciones se basan en “contenedores”. Por lo tanto, siempre que se disponga de un orquestador (ej: Kubernetes, OpenShift, Mesos), se puede instalar “on-client-premises” o en cualquier proveedor de nube pública y se puede reubicar si es necesario.
Escalabilidad independiente. Cada microservicio puede ser escalado (replicado) independientemente de los demás adaptando toda la solución a la carga requerida. Eventualmente, para cargas impulsivas, el microservicio único puede reducirse a cero y activarse sólo cuando sea necesario.
Decaimiento funcional limitado. Dado que los microservicios son independientes entre sí, el fallo de uno de ellos no provocaría el mal funcionamiento de todo el sistema, sino que el mal funcionamiento se limita únicamente al microservicio afectado.
Actualización rápida y “en caliente”. Cada microservicio puede actualizarse independientemente de los demás de forma “plug & play”. También es posible actualizar toda la solución muy rápidamente con una interrupción nula o limitada (minutos frente a horas).
Sin embargo, si se decide crear una solución desde cero (o migrar una solución existente a un MSA), la arquitectura en este segundo caso tiene las siguientes características:
Realización en paralelo. Dado que los microservicios son independientes entre sí, es posible paralelizar su realización disminuyendo así el Time to Delivery, y en consecuencia, el Time To Market.
Independencia tecnológica y poliglotismo. Los micro-servicios individuales pueden ser creados con diferentes lenguajes, frameworks y tecnologías. Esto permite utilizar la tecnología más acorde con la necesidad impuesta por la función de negocio a la que da soporte el microservicio, y explotar las habilidades ya disponibles en los distintos equipos.
Reutilización de artefactos. Algunos microservicios que presentan funciones estándar (por ejemplo: registro, auditoría, contabilidad, almacenamiento de archivos) pueden estar ya disponibles y pueden utilizarse en una lógica “plug & play” en el contexto de la implementación.
Mantenibilidad. Cada microservicio es reemplazable por una versión diferente y mejorada siempre que respete su interfaz de servicio. Además, como su código fuente suele ser relativamente pequeño, es fácil de mantener y probar.
Capacidad de ampliación. Si fuera necesario ampliar la funcionalidad del sistema, bastaría con añadir micro-servicios adicionales.
¿Es siempre ventajoso construir arquitecturas de microservicios? No siempre. Se ha demostrado que este tipo de arquitectura es eficaz para los sistemas con muchas funciones o que se prevé ampliar en el futuro. Si la implantación fuera pequeña y su perímetro estuviera perfectamente definido, otras arquitecturas serían más rentables.
Habilidades necesarias para introducir el MSA en su empresa:
Las MSA, como todas las arquitecturas distribuidas, requieren la presencia de un Arquitecto de Software para su implementación. Esta figura está cada vez más flanqueada por figuras, hasta ahora escasamente presentes, como los Ingenieros de DevOps, los Ingenieros de Pruebas y los Arquitectos de Infraestructura de la Nube.
La complejidad del trabajo pasa de la codificación (relativamente sencilla una vez definidas las interfaces y funcionalidades) a la planificación y el diseño. Es necesaria una revisión de los patrones de diseño para hacer frente a problemas antes sorteables o inexistentes.
La llegada de las MSA ha hecho que se reinterpreten algunos términos existentes e incluso que se acuñen otros nuevos. Algunos ejemplos destacables son: Event Sourcing, CQRS, Circuit Breaking, Saga, Eventual Consistency, API Gateway, Service Mesh.
La creación de una plataforma basada en esta arquitectura introduce dos temas importantes que hay que tener en cuenta: el cambio cultural y la mejora y recualificación de los recursos.
Los principales factores de éxito de una implantación de MSA son el enfoque y la metodología, más que las tecnologías en sí.
Casos de éxito en la aplicación de la MSA:
Desde una perspectiva global, las MSA surgieron a nivel empresarial hace unos 6 años. Uno de los precursores internacionales de la implantación de MSA fue la plataforma de streaming de vídeo Netflix, seguida casi simultáneamente por el servicio de streaming de audio Spotify, la plataforma de reservas AirB&B y el sitio de comercio electrónico de ropa Zalando. Cada uno de ellos ha contribuido al éxito de MSA compartiendo sus experiencias y “lecciones aprendidas”.
Quizá el caso más emblemático de éxito empresarial gracias al uso de la arquitectura de microservicios sea el de Amazon[1]. El sitio web original para la compra de libros en línea era, de hecho, una aplicación monolítica, en la que añadir nuevas funcionalidades para el usuario final era muy complejo tanto desde el punto de vista técnico como organizativo, y que ofrecía una escalabilidad limitada en caso de picos de solicitudes. Por lo tanto, Amazon ha emprendido un camino de reingeniería de la aplicación con microservicios dedicados a funcionalidades individuales del negocio (como el carrito de la compra), cada uno gestionado por un único equipo de desarrollo, y procesos de lanzamiento estandarizados y automatizados con prácticas de CI / CD. Esto ha permitido a Amazon crear millones de nuevas características cada año, y reunir nuevas e importantes habilidades en la creación de infraestructuras altamente escalables, lo que llevó a la fundación de AWS en 2006, generando un nuevo negocio para la empresa.
Siguiendo estos ejemplos exitosos, actualmente hay innumerables empresas en los sectores B2C / B2B que están creando nuevas plataformas que son “MSA-by-design” o están migrando de diferentes estilos arquitectónicos a uno más orientado a MSA.
Desde hace algunos años, las grandes empresas italianas también están migrando algunos de sus sistemas de negocio orientados al uso B2C o B2B hacia un estilo MSA reconociendo su aplicabilidad y beneficios, e impulsados por las presiones del mercado como la Transformación Digital y la migración a la Nube.
Los MSA, hoy en día, se han convertido casi en el estándar de facto para construir la capa de servicio de los sistemas y plataformas.
Microservicios @Bip xTech: una oferta end-to-end:
Bip xTech lleva años acompañando a sus clientes en la introducción e implementación de tecnologías innovadoras. Entre ellas, en relación con las arquitecturas de software, se encuentran las arquitecturas de microservicios (MSA), las arquitecturas sin servidor (BaaS, FaaS) y las arquitecturas basadas en eventos (EDA).
Nuestra lista de figuras profesionales incluye arquitectos de software, arquitectos de infraestructura, ingenieros de DevOps, ingenieros de pruebas y desarrolladores que son capaces de cubrir de principio a fin cualquier ciclo de implementación.
Desde hace 4 años, casi desde la aparición de MSA, Bip ha estado apoyando a nuestros clientes en el diseño e implementación de aplicaciones empresariales basadas en MSA, principalmente en el sector B2B.
Hacia el futuro, juntos
El conocimiento de la tecnología y la capacidad de entrega son los ingredientes necesarios e indispensables para cualquier logro tecnológico, pero no son los únicos.
Bip siempre ha guiado y acompañado a sus clientes en el desarrollo de su negocio y ayuda a gobernar proyectos en todas las escalas de complejidad.
El conocimiento del ámbito y la capacidad de gestión de proyectos, combinados con las competencias técnicas, son la clave del éxito de los proyectos, siempre orientados al máximo beneficio para nuestros clientes.
Si está interesado en obtener más información sobre nuestra oferta o desea mantener una conversación con uno de nuestros expertos, envíe un correo electrónico a [email protected] con el asunto “Microservicios” y nos pondremos en contacto con usted lo antes posible.
¡Nos vemos con el próximo artículo, que tratará el campo de las “arquitecturas sin servidor”!
[1] Werner Vogels “Modern applications at AWS”, https://www.allthingsdistributed.com/2019/08/modern-applications-at-aws.html