Infraestructura autoescalable en servicios de verificación de identidad
Cuando eres un actor relevante en el sector de la verificación de identidad se espera que ofrezcas una experiencia de usuario cómoda y sobretodo fluida. Es por ello que la capacidad de respuesta y la escalabilidad son imprescindibles para garantizar que tus servicios sean capaces de responder en todo momento, manejar un mayor tráfico o responder a picos de carga de trabajo si así se requiere.
En Alice usamos una arquitectura basada en microservicios que corren sobre Kubernetes. Los microservicios son piezas de código desarrolladas por Alice con el objetivo de que sean autónomas y cada una de ellas realice una tarea especifica. Kubernetes por otro lado, es una tecnología diseñada para automatizar, escalar, gestionar de manera eficiente estos microservicios.
El autoescalado tiene como objetivos principales:
- Asegura que tus aplicaciones siempre tengan suficientes recursos para funcionar sin problemas, incluso cuando la demanda cambia.
- Previene la degradación del rendimiento durante picos de tráfico y mantiene bajos los tiempos de respuesta.
- Con el escalado automático, solo usas lo que necesitas en cada momento, lo que ayuda a ahorrar dinero al evitar recursos innecesarios.
- Mejora la fiabilidad distribuyendo la carga de trabajo entre varios puntos. Si algo falla, Kubernetes agrega automáticamente más recursos para mantener todo funcionando sin interrupciones.
- Kubernetes simplifica el proceso de escalado automatizado, permitiéndote definir reglas y luego encargándose del trabajo pesado. Esto libera de carga a tu equipo para enfocarse en otras tareas.
En este contexto, el desafío principal es encontrar un modelo de autoescalado que permita establecer la correcta relación entre los diferentes microservicios, la infraestructura sobre la que corren y los modelos de inteligencia artificial que emplean nuestros servicios.
¿Que pasos hay que seguir?
Hay una serie de pasos necesarios para poder establecer un modelo válido que permita responder a los objetivos antes mencionados y son los siguientes:
- Conocimiento del contexto a través de la Monitorización: Uno de los desafíos iniciales radica en establecer una monitorización precisa de la carga de trabajo. Identificar patrones de uso, umbrales críticos y puntos de referencia. Esto es esencial para definir el modelo de escalado que Kuberrnetes debe aplicar para tomar decisiones informadas sobre cuando y cuanto escalar.
- Configuración de Métricas y Umbrales: Definir métricas relevantes y establecer umbrales adecuados es un arte en sí mismo. El escoger las métricas adecuadas o crear unas métricas que respondan a tu modelo de escalado es crucial. Una configuración incorrecta puede resultar en escalamientos innecesarios o, peor aún, en la falta de respuesta frente a picos de demanda dando una experiencia al cliente no deseada.
- Definición de estrategias de Escalado: La elección de estrategias de escalado adecuadas es crucial. Es importante comprender las distintas opciones y seleccionar la más apropiada para cada situación. ¿Escalamos horizontalmente? ¿Verticalmente? ¿Por eventos? ¿Por metricas?
- Manejo de la Desescalada: El autoescalamiento no solo implica crecer, sino también reducir. Gestionar eficazmente la desescalada de recursos es vital para optimizar costos y mantener la eficiencia operativa en todo momento.
¿Como lo hemos hecho?
En Alice determinamos que una estrategia mixta de uso de métricas y de eventos era la más adecuada para la definición de nuestro modelo de autoescalado.
Kubernetes permite el uso de metricas propias para autoescalar, sin embargo nativamente no es capaz de escalar por eventos. Para resolver esta necesidad empleamos KEDA. KEDA es un componente que hemos desplegado en nuestros clusters y que ayuda a autoescalar tus aplicacioneen base a eventos.
Con esta forma sencilla de gestionar con Kubernetes y KEDA, aseguramos que nuestra aplicación se ajuste automáticamente a la demanda, brindando así una experiencia fluida a los usuarios sin necesidad de intervención técnica constante.
Conclusión
En el ecosistema tecnológico actual en el que nos movemos, rodeados de servicios de los que se espera inmediatez, la automatización del autoescalamiento con Kubernetes emerge como una solución fundamental para garantizar la agilidad y la eficiencia operativa. A pesar de los desafíos inherentes, superarlos conlleva a una infraestructura resiliente, capaz de adaptarse a las demandas fluctuantes de un servicios SaaS como el nuestro ofreciendo un rendimiento y una experiencia de usuario que responda a las expectativas de nuestros clientes.