Skip to main content

Arquitectura basada en eventos y microservicios

Raquel Serradilla| 9 de octubre de 2020

No es oro todo lo que reluce. Una arquitectura robusta y funcional basada en eventos y microservicios.

Una de mis grandes obsesiones en el campo profesional ha sido la de ayudar a los directivos a tomar decisiones con criterio en el campo tecnológico. En tecnología, se tiende a utilizar una terminología de difícil comprensión. Si a eso le añadimos la tendencia a hacer las cosas complejas (parece que si el tema no es complejo pierde valor), la toma de decisiones se convierte en un auténtico dolor de muelas .

Aunque parecía que la democratización de la tecnología iba a acabar con esta realidad, el día a día ha venido a demostrar que no. Desgraciadamente, seguimos utilizando un vocabulario que sólo está al alcance de unos pocos. Es por ello que me aventuro a escribir este artículo y los que, estoy segura, vendrán, buscando hacer más asequible la tecnología a cualquier profesional.

El principal objetivo de cualquier compañía que desarrolle aplicaciones es que el desarrollo resultante sea fácil de mantener, flexible y capaz de hacer frente a los aumentos repentinos de la demanda sin que ello le suponga un agujero en su cuenta de resultados.

Afortunadamente, la tecnología ha evolucionado para que esto sea posible. A través de este artículo, quiero acercar al lector al mundo de las arquitecturas basadas en eventos y microservicios. Una arquitectura que, bien entendida e implementada, te coloca en una posición más que competitiva frente a tus iguales cuando lo que buscas es adaptabilidad y escalabilidad en tiempo récord.

En ingeniería de software, una de las arquitecturas más utilizada de todos los tiempos, han sido las arquitecturas monolíticas: una estructura fácil, desarrollos simples, despliegues sin mucha complejidad … una hilera de código que en contextos estáticos nos aportaba muchas ventajas, pero ya no estamos ahí, y el hecho de que una sola aplicación concentre toda la funcionalidad de origen y las subsecuentes adiciones trae consigo costes de propiedad importantes que a medio y largo plazo no son asumibles. Además, al tratarse de un código único, cualquier modificación, por pequeña que sea, afecta a la totalidad. Te suena ¿verdad? Llevándolo a un contexto cercano, ¿te imaginas que toda la web de Amazon dejase de funcionar porque el proceso de envío de emails de notificación da errores?

Nos encontramos situaciones en las que agregar una nueva funcionalidad o incluso corregir errores existentes en esta arquitectura podría llevar meses en completarse. Ahora entiendes por qué las soluciones tecnológicas que fueron punteras en su momento pierden tracción al no poderse adaptar a los tiempos de sus iguales más jóvenes.

Antes de entrar en harina, debemos entender bien qué son los microservicios y qué son las arquitecturas dirigidas por eventos. Una arquitectura basada en el microservicio se rige por la filosofía del divide y vencerás. Está formada por varias aplicaciones más pequeñas que trabajan juntas para lograr el objetivo principal. Cada uno de estos componentes es capaz de funcionar por sí solo. Sin embargo, es el trabajo conjunto lo que marca la diferencia.

Una arquitectura dirigida por eventos es aquella que ayuda a tu aplicación a adaptarse a circunstancias cambiantes. Imagínate que de repente sufres una avalancha repentina de tráfico hacia tu aplicación. Te suena, ¿verdad? Son situaciones que se están viviendo mucho en el contexto del covid-19. Pues bien, tu aplicación debería poder reaccionar adecuadamente a este cambio.

Cuando estas dos arquitecturas se unen, el resultado es una aplicación que, no sólo es modular, sino que también tiene una elevada adaptabilidad y escalabilidad.

Aterrizándolo a un ejemplo cercano, Google Maps. Todos lo hemos usado como navegador para dirigirnos de un lugar a otro. A simple vista, podría parecer que es una sola aplicación con muchas funcionalidades. Sin embargo, utiliza una arquitectura basada en eventos y microservicios.

En Google Maps, tenemos la funcionalidad principal que determina la ruta más rápida desde el punto A al B, además de otras muchas funcionalidades. La navegación por voz en sí misma, puede ser un microservicio independiente.

Mientras conducimos, podría darse el caso en el que llegados a un punto el mapa, nos desvía. Esto puede deberse a alguna congestión de tráfico en la ruta por la que viajamos. Un microservicio independiente está supervisando la ruta que seguimos, tan pronto como detecte una ruta alternativa más rápida se activará un evento que indicará al servicio principal que se redireccione a la ruta más rápida. Este tipo de arquitectura ayuda a reducir la carga de un solo servicio.

Un estudio reciente realizado por O’REILLY viene a corroborar que muchos de los incumbentes en la industria del software están sufriendo intentando adaptar sus soluciones a arquitecturas más livianas y alineadas con la nueva realidad. No es casualidad que empresas como Amazon, Netflix, Bestbuy, Spotify, Uber o Zalando hablen maravillas de lo que ha supuesto para ellos el pasar a estas arquitecturas.

Para entender mejor qué ha desencadenado este movimiento echemos un vistazo a los beneficios que obtenemos al usar esta arquitectura.

  1. Mantenimiento: al dividir una sola aplicación monolítica en varios microservicios, resulta muy fácil mantener el software, agregar nuevas funcionalidades
  2. Baja latencia: la latencia es clave cuando hablamos de conexiones a internet y de tiempo real. La carga distribuida, ayuda a reducir la latencia general de tu aplicación, con lo cual los tiempos de respuesta se reducen tremendamente.
  3. Adaptable: Esta arquitectura ayuda a crear software que cambia según las situaciones, en tiempo real. Aumenta así la sostenibilidad de la aplicación evitando caer en la obsolescencia.
  4. Alta escalabilidad y disponibilidad: Con esta arquitectura, escalar tu software para manejar más tráfico es más fácil. Cuando se trata de disponibilidad, esta arquitectura pasa por la izquierda a las arquitecturas tradicionales.

Son muchas las organizaciones que han comenzado a avanzar hacia la arquitectura de microservicios debido a los numerosos beneficios que tiene. Tener un software con alta sostenibilidad y altos niveles de adaptabilidad ciertamente ayuda a aumentar los ingresos y a reducir costes a medio y largo plazo, al tiempo que respondes a las necesidades cambiantes de un mercado cada vez más exigente.

La clave, como siempre, es hacerse con un buen compañero de viaje que disponga del conocimiento y la actitud necesaria para hacer llevadera esta transición.

OTROS ARTÍCULOS DE ESTE AUTOR
NOTICIAS RELACIONADAS

Suscríbete ahora

LO MÁS DESTACADO