Pasar al contenido principal

ES / EN

Microservicios: lo que debes saber de esta creciente tendencia
Jueves, Octubre 27, 2016 - 10:22

Con la ayuda de dos expertos, te explicamos en qué consisten y por qué son cada vez más importantes en la industria al punto de ser transversales en diversas empresas.

Si bien no acostumbramos concentrarnos en temáticas que sean muy técnicas o complejas en materia digital y tecnológica, esta vez nos pareció importante destacar una tendencia que viene desarrollándose desde hace un par de años y que está ganando fuerzas progresivamente. Hablamos del mundo del software, en particular de los microservicios.

A continuación, y con la ayuda de dos expertos, te explicamos en qué consisten y por qué son cada vez más importantes en la industria al punto de ser transversales en diversas empresas.

Lo primero a considerar es que los microservicios es un concepto relacionado esencialmente con la arquitectura de software. La idea es diseñar la herramienta de tal forma que permita optimizar el rendimiento y los requerimientos específicos de tal software.

“Es un término usado para describir una arquitectura de software en la que los diversos subsistemas de una aplicación son independientes, o tienen entre sí una interdependencia muy débil. Esto contrasta con las arquitecturas de software monolíticas, en las que todos los servicios están estrechamente interconectados”, explica Dave Recktenwald, territory sales manager en Interactive Intelligence.

“Microservicios es una manera de diseñar aplicaciones de software como conjuntos de servicios de implementación independiente... promociona la descomposición de las aplicaciones en funciones para un solo propósito. La estrategia define que estos servicios deben estar débilmente acoplados y gestionados por equipos funcionales organizados horizontalmente, permitiendo desarrollar y mantener sistemas complejos con velocidad y calidad”, apunta Sergio Zambrano, Director de Servicios Profesionales para el Cono Sur de Dell EMC.

En esta línea, la idea central con la que nos podemos quedar es que bajo esta lógica, cada servicio es responsable de una sola parte de la funcionalidad y logra resolverlo correctamente; así, cada servicio puede ser implementado, actualizado, reemplazado y ampliado en forma independiente.

Un proceso evolutivo

Todo cambió desde que comenzó a expandirse el modelo del cloud computing. Este nuevo paradigma obligaba a encontrar nuevas soluciones, servicios y métodos. Así, Sergio Zambrano de Dell EMC nos explica que los microservicios se pueden entender como una  evolución de la arquitectura SOA, que irrumpió hace unos cuatro años como parte de la evolución requerida para aplicaciones nativas en Cloud.

Dave Recktenwald, representante de Interactive Intelligence, cuenta que anteriormente, gran parte de las aplicaciones empresariales (correo electrónico, CRM, comunicaciones unificadas/contact center) eran construidas bajo un concepto monolítico. Eso quiere decir que todos los diversos subsistemas (como los que manejan los inicios de sesión, el enrutamiento, el reporting, la recuperación de datos / almacenamiento, etc.) en general están diseñados para funcionar estrechamente en un mismo servidor. “Típicamente, si uno de esos subsistemas falla, todos fallan. Si alguno de ellos debe ser parchado o actualizado, todos se ven afectados. Y si queremos redundancia y escalabilidad, todos deben ser replicados”, apunta Recktenwald.

El mismo directivo de Interactive Intelligence propone una ilustración para graficar cuán bien funciona esta manera de concebir las aplicaciones.

“En lugar de iniciar sesiones, rutear objetos y enviar/recibir datos, los cocineros deben preparar distintos tipos de pedidos como aperitivos, platos principales y postres.

En una arquitectura monolítica, existe un único chef que prepara cada plato específicamente para ti. Si tiene la mala suerte de cortarse un dedo al confeccionar una ensalada, la producción de los demás pedidos también se interrumpe. Si el chef debe aprender una nueva receta de sopa, toda la producción se detendrá también.

Teniendo en cuenta que las interrupciones de tal tipo son inaceptables, el restaurante deberá tener otro chef, con idénticas aptitudes, esperando en el banquillo listo para tomar el relevo. Este escenario es problemático para varias razones. Para empezar, tener dos chefs altamente calificados dedicados a una sola cocina es bastante caro, en particular teniendo en cuenta que sólo estará utilizando uno a la vez. En segundo lugar, la transición entre un chef y otro nunca es tan suave como se espera. Inevitablemente, cuando el segundo jefe de cocina se hace cargo, algunas órdenes se perderán, se cometerán errores y la producción de platillos terminará siendo más lenta. ¿Y qué ocurrirá cuando surjan esas grandes cenas dos o tres veces al año? Su chef no será capaz de mantenerse al día...

Ahora imagine una cocina que utiliza microservicios. En lugar de tener uno (o dos) chefs que lo saben todo, tenemos una gran cantidad de micro chefs. Cada uno de ellos sabe hacer una sola cosa, pero la hacen muy bien. Tenemos uno que sabe hacer sopa, otro que hace pan, uno que asa carne a la parilla, otro que hace postres. Ahora bien, si uno de  los micro chefs se lastima, o necesita entrenamiento, sólo una pequeña área de la cocina se ve afectada.

Claro que tener muchos cocineros no parece algo fácil de manejar, ni eficiente en cuanto a los costos, ¿no es cierto? Bueno, no hasta que mueves la cocina a la nube y tienes varios comensales que consumen sus platos.

Una vez que vinculamos los microservicios con las tecnologías en la nube para que sean capaces de balancear las cargas y auto-escalar si es necesario, recién entonces vemos el beneficio real.

Si no has ordenado sopa probablemente alguien más lo hará, de modo que el micro chef de sopa se pondrá a trabajar seguramente utilizando el balanceo de carga. Pero si varias personas piden sopa al mismo tiempo, las herramientas de auto-escala van a proveer más micro chefs de sopa sobre la marcha, y los enviará a casa después de la cena para garantizar que no estemos pagando personal de más. Si se agrega una nueva receta de sopa al menú, será enseñada únicamente a los micro chefs de sopa, para evitar distraer al resto. A su vez, los balanceadores de carga distribuirán el menú actualizado con la nueva sopa entre los nuevos clientes, sin generar ningún retraso cuando el menú cambia”.

En tanto, el ejecutivo de Dell EMC aterriza estos conceptos para llevarlos a la práctica. Sergio Zambrano explica:

“Como ejemplo podemos tomar un clásico sistema de ventas de los que habitualmente utilizamos en la web. Como todo sistema está compuesto por funciones de negocio que habitualmente están integradas desde una perspectiva monolítica. La propuesta es desarrollar estas funciones en forma independiente como ser un microservico para la función lista de deseos, otro microservicio para productos recomendados, otro microservicio para la función selección de compra, otro microservicio para procesamiento de la orden de compra, y así sucesivamente. Cada uno de estos microservicios se comunica por interfaces definidas acordemente y comúnmente esta comunicación no requiere estados. Así también cada uno de estos microservicios está federado, es decir cada uno es responsable por su modelo de datos y los datos respectivos”.

PROYECCIÓN

Considerando los beneficios que otorga este sistema: escalar servicios, ampliar el equipo de desarrollo en paralelo, implementaciones constantes y rápidas, y acelerar la adopción de nuevas tecnologías, entre otros- las proyecciones para los microservicios son alentadoras. “La tendencia indica un crecimiento importante en arquitectura de microservicios en el corto y mediano plazo, fuertemente apalancado por las inversiones en transformación de IT que diversas compañías están abordando en pos de lograr el objetivo de transformación digital”, comenta Zambrano.

Recktenwald lo ve de manera similar. A su juicio, las plataformas basadas en microservicios “experimentan un tiempo de actividad extremadamente alto, son infinitamente escalables y no requieren ningún tiempo de inactividad por mantenimiento”, lo cual las vuelve sumamente atractivas.

Autores

Héctor Cancino