Blog de Amazon Web Services (AWS)

Migrando una aplicación monolítica para la arquitectura serverless y microservicios

Por Igor Oliveira, DevOps Engineer de Solvimm

 

 

Como profesionales, siempre buscamos entender a fondo los desafíos de nuestros clientes y ofrecer la mejor solución posible. Con Atende Simples, cliente de Solvimm y de AWS, no fue diferente. La empresa ofrecía una solución empresarial basada en un modelo monolítico de aplicación, que no se mostraba eficiente a largo plazo. La aplicación era poco escalable y flexible, lo que estaba en contra de su crecimiento.

En este post, comparto con ustedes como Solvimm, usando diferentes servicios de AWS, consiguió ayudar a Atende Simples con una nueva arquitectura.

Atende Simples es una solución empresarial de relación telefónica. Las herramientas ofrecidas permiten que pequeñas, medianas y grandes empresas presten atención a automatización, inteligencia e integración con diversos sistemas. La empresa inicio sus actividades en 2012 y hoy atiende a más de 1.500 empresas, entre ellas Banco Neon, Baterias Moura, Braspag, Trigg y Lojas Melissa.

Delante del crecimiento acelerado de la solución, ellos decidieron buscar alternativas al modelo monolítico usado. Así, se esperaba aumentar el desempeño, flexibilidad y escalabilidad de la aplicación, además de optimizar costos. De acuerdo con esas expectativas, Solvimm fue escogida para construir la nueva aplicación basada en serverless y microservicios.

 

El desafío

La capa física de la solución de Atende Simples está constituida por equipos en dos data centers distintos en São Paulo y diversos links redundantes de conexión con las operadoras y la capa de aplicación, donde está el centro de procesamiento de llamadas. Con el modelo de aplicación monolítico usado, los recursos no eran bien aprovechados, ya que era necesario asignarlos, aunque solo una pequeña parte de la aplicación fuese utilizada.

Además de eso, conforme el código de la aplicación aumentaba, la etapa de desarrollo también llevaba más tiempo para ser concluida, siendo que solamente las pruebas automatizadas para despliegue llevaban casi una hora. La agilidad es una necesidad de la solución de Atende Simples, que tiene características específicas, como complejidad e imprevisibilidad del volumen de procesamiento.

Como la cantidad de llamadas oscila a lo largo del día y de la semana, de centenas por segundo a pocas conexiones (en algunos horarios, como durante la madrugada, son hechas pocas o ninguna llamada), la elasticidad de la aplicación, de acuerdo con la demanda real del sistema, impactaría la reducción de costos en los momentos ociosos. Pero uno de los principales desafíos encontrados por Atende Simples era adaptar la aplicación monolítica para esa realidad.

 

La solución

La migración de una aplicación monolítica para la arquitectura de microservicios es compleja. Por eso, se adoptó la estrategia de desarrollar nuevas funcionalidades y recursos en la nueva arquitectura, y, en paralelo, migrar las refactorizaciones del código. Eso inicio el proceso de cuello de botella de la aplicación monolítica.

 

 

 

 

 

 

 

 

Figura 1. Arquitectura de la solución propuesta.

 

La arquitectura propuesta contó con un ambiente serverless usando el servicio AWS Lambda para la ejecución de las funciones. Lambda tiene la capacidad de aplicar diferentes reglas de negocios para cada evento, de manera altamente disponible y escalable. Diversos eventos de diferentes fuentes accionan las funciones, que aplican reglas de negocios y transforman los datos para consumo de la aplicación monolítica legada.

El API Gateway y el AWS AppSync son usados como proxy de llamada de las funciones Lambda y demás recursos de AWS que necesitan ser accedidos por la aplicación monolítica. Esos recursos son DynamoDB, como banco de datos, y SQS y SNS como mensajería y envío de mensajes. DynamoDB permite almacenar los eventos generados por las llamadas con rapidez en la escritura y la recuperación en milisegundos en la lectura, posibilitando reportes casi en tiempo real.

La aplicación consume los eventos leyendo una fila del SQS, que cuida automáticamente de aumentos súbitos en el número de eventos, siendo que otra fila fue preparada para los eventos que puedan dar error en el consumo por la aplicación.

 

El Resultado

El uso de la arquitectura serverless permitió la entrega de nuevas características con agilidad. Además de eso, la integración con la aplicación monolítica fue hecha con el mínimo de alteración en la aplicación.

Con la utilización de microservicios en AWS, se paga solo por lo que realmente está siendo utilizado de los servicios. Eso difiere de una infraestructura tradicional, donde el cliente necesitaría tener una cantidad de servidores que aguantaran los momentos de pico y que mantuvieran los recursos ociosos en períodos en que el número de llamadas fuera bajo.

En un mes, son hechas cerca de 10 millones de requisiciones Lambda a la aplicación de Atende Simples, 5 millones de requisiciones al Amazon SQS, 32 millones de requisiciones de lectura y 9.9 millones de requisiciones de escritura a Amazon DynamoDB. El poder computacional exigido para soportar esa carga es enorme, lo que difícilmente seria hecho en un ambiente en-sitio.

Figura 2. Total de requisiciones de lectura a DynamoDB.

 

Figura 3. Total de requisiciones Lambda a aplicación del Atende Simples.

 

Figura 4. Total de requisiciones a Amazon SQS.

 

Solvimm está desde hace seis años en el mercado de computación en nube. Es una empresa Asociada de Consultoría Avanzada de AWS Partner Network y es parte de los programas AWS Public Sector Partner: Education, Non-Profit, AWS Solution Provider y AWS Public Sector Solution Provider. Además de eso, Solvimm es reconocida por el Programa AWS Service Delivery en lo que trata respecto a la entrega de soluciones con AWS Lambda.