Blog de Amazon Web Services (AWS)

Evolucionando frente a una pandemia, cómo escalar para atender a todo un país usando tecnologías serverless en AWS

Amazon Web Services trabaja con más de 6,500 agencias de gobierno a nivel mundial, entre ellas instituciones de gobiernos encargadas de mantener y proveer sistemas críticos para la ciudanía.

La División de Gobierno Digital (DGD), perteneciente al Ministerio Secretaria General de la Presidencia de Chile, en conjunto con Amazon Web Services (AWS) trabajaron para modernizar, en tiempo record, la Comisaria Virtual.

Debido a la pandemia, COVID-19, el Gobierno de Chile declaró estado de cuarentena en varias regiones del país. Millones de ciudadanos fueron alcanzados por esta medida, con el objetivo de controlar la pandemia, el gobierno dispuso el control de circulación de la ciudadanía mediante el otorgamiento de permisos temporales. Para optimizar la emisión de dichos permisos, se decidió que los mismos sean otorgados mediante una plataforma web.

Con el estado de emergencia declarado se decidió que ‘Comisaria Virtual’, que ofrecía servicios para realizar denuncias y trámites online: pérdida de documentos, constancias, reclamos y certificados, tomaría la responsabilidad de emitir certificados de circulación para compra de insumos básicos, asistencia a centros médicos, pago de servicios básicos, entre otros para las más de 8 millones de personas que se encontrarían en cuarentena.

Usando como ejemplo el caso de la Comisaría Virtual, esta guía busca dar lineamientos generales de cómo implementar un sistema crítico altamente escalable y eficiente a nivel de costos, pero puede ser modificada de acuerdo con la necesidad de cada institución.

 

Escalando en AWS 

Antes de la pandemia la plataforma atendía en promedio 500 trámites diarios. La arquitectura se componía por: una base relacional MySQL para la gestión de usuarios y el almacenamiento de los permisos otorgados, un servidor de aplicaciones en PHP para el backend y frontend de la aplicación web, un sistema de archivos NFS para el repositorio de los documentos generados y el almacenamiento de recursos estáticos de la aplicación.

 

Comisaria Virtual @ AWS – Arquitectura Original.

 

La pandemia COVID-19 obligó a Comisaria Virtual a escalar y aprovisionar más capacidad para poder soportar la carga. Un conjunto de máquinas virtuales EC2 fue desplegado en paralelo, para poder atender la demanda creciente de tramites.

La plataforma estaba diseñada para manejar la cantidad de usuarios que se tenía prevista inicialmente, sin embargo, esta cantidad incrementó sustancialmente a raíz de la pandemia.

Lo que ocasionó caídas esporádicas en la página web, de esta manera generando indisponibilidad y la imposibilidad de generar certificados de tránsito ciudadano.

Desde AWS, debido a la criticidad de esta plataforma, se tomaron dos líneas de acción, en conjunto con el cliente, para remediar la situación y garantizar la disponibilidad de Comisaria Virtual.

 

Contenedores

El primer paso fue disponibilizar el aplicativo en contenedores utilizando Amazon Elastic Kubernetes Service (EKS) un servicio basado en Kubernetes completamente administrado, altamente disponible, seguro y escalable.

Esta implementación permitió a Comisaria Virtual escalar en paralelo para atender la creciente demanda, pudiendo escalar de las decenas de instancias aplicativas a un total, en su punto más alto, de 300 máquinas virtuales (EC2) alojando más de 3000 contenedores con Comisaria Virtual funcionando en paralelo garantizando así la demanda. Así se logró atender la demanda y agregar funciones de monitoreo, despliegue continuo, balanceo y control de accesos que proporciona Kubernetes en AWS.

Con el objetivo de optimizar el tráfico y reducir la carga que llega a los servidores de aplicación se implemento Amazon Cloudfront: una red de entrega de contenido (CDN) segura, rápida y programable que usa del punto de presencia (POP) que Amazon posee en Santiago de Chile.

A su vez, se implementó AWS WAF: un firewall de aplicaciones web para proteger el sitio de solicitudes no deseadas y maliciosas.

Comisaria Virtual @ AWS – Arquitectura Kubernetes.

 

 Funciones AWS Lambda

La segunda línea de trabajo fue modernizar el aplicativo, construyendo desde cero, una serie de funciones AWS Lambda, cuyo objetivo era reducir la carga del aplicativo original. Las funciones Lambda permiten ejecutar código sin tener que preocuparnos por aprovisionar ni manejar servidores. Adicionalmente se implementó Amazon DynamoDB, una base de datos clave-valor que es capaz de gestionar millones de solicitudes por segundo.

Esta implementación permitió, en menos de una semana, escribir código en Python desde cero para soportar la generación y validación de los documentos más demandados relacionados a la situación de la pandemia COVID-19. Las funciones Lambda, en manera escalable y económica, generan los documentos PDFs que sirven de comprobante de circulación, que posteriormente son almacenados en Amazon S3, nuestro servicio de almacenamiento de objetos altamente escalable.

La información del trámite realizado es almacenada en Amazon DynamoDB para su posterior análisis, el cual se efectúa de manera agregada, segura y anónima, para la posterior toma de las decisiones Gubernamentales correspondientes. Por último, los permisos generados en PDF son enviados a los ciudadanos utilizando Amazon Simple Email Service, nuestro servicio de envio masivo de correo.

Este conjunto de servicios serverless permitió, en menos de una semana, rediseñar el sitio de Comisaria Virtual garantizando la agilidad de la generación de trámites y reduciendo el costo operativo.

Comisaria Virtual @ AWS – Arquitectura Serverless.

 

Conclusiones

Utilizando una arquitectura serverless con AWS Lambda se logró otorgar, hasta el día de la fecha, aproximadamente 50 millones de permisos de circulación. El sitio web de Comisaria Virtual no ha sufrido degradación de servicio y ha entregado con éxito más de 1.200 millones de solicitudes HTTP y más de 100 TB de datos a través de nuestro servicio de CDN, Amazon Cloudfront.

Se logró reducir el tiempo promedio de carga del sitio web de 5 segundos a unos 200 milisegundos. Las funciones Lambda están manejando más del 80% de la carga actual del sitio, avanzando así hacia una arquitectura 100% serverless.

Por ultimo, con esto conjunto de optimizaciones se logro reducir en aproximadamente a la mitad el costo mensual operativo de Comisaria Virtual en AWS.

Junto a la División de Gobierno Digital seguimos trabajando para optimizar la Comisaria Virtual, adoptando servicios serverless, reduciendo así la complejidad, costos operativos y aumentando la performance.

Comisaria Virtual @ AWS – Arquitectura Actual.

Si quieres empezar a construir arquitecturas serverless escalables y costo eficientes, recomiendo que revises el siguiente documento.

 


Sobre el Autor

 

Branko Straub es Arquitecto de Soluciones en Amazon Web Services para Sector Público en Chile. Branko ha ayudado múltiples instituciones de Sector Público y Privado en la adopción tecnológica de nube en los últimos 5 años y ha llevado acabo de manera satisfactoria proyectos que marcan impacto social a nivel de ciudadanos y estudiantes alrededor de América Latina.