Cada segundo cuenta en el ecosistema fintech. Un minuto de inactividad puede significar millones en transacciones fallidas. En Pomelo, sabemos que la confiabilidad es clave: nuestra infraestructura tecnológica no solo sostiene nuestras operaciones, sino que también garantiza que cada pago, cada transacción y cada interacción de nuestros clientes y sus usuarios ocurra sin interrupciones.
Más allá de desarrollar tecnología, construimos una infraestructura diseñada para escalar, resistir desafíos y cumplir con las normativas locales de cada país en el que operamos. De esta manera, aseguramos la continuidad operativa y una experiencia de usuario ininterrumpida, sin importar la magnitud del reto.
Este artículo explora las estrategias clave para alcanzar altos estándares de disponibilidad y seguridad a través de una infraestructura escalable y resiliente.
Arquitectura escalable y resiliente
Un indicador clave de confiabilidad es el uptime. Alcanzar un 99.995% de disponibilidad significa que el sistema puede tener un máximo de 2.10 minutos de inactividad al mes (26.05 minutos por año). Este estándar solo es posible con planificación, redundancia, pruebas constantes y estrategias avanzadas de monitoreo y mitigación en tiempo real.
Para garantizar esta estabilidad, nuestra infraestructura se basa en dos principios fundamentales: escalabilidad y resiliencia. Veamoslas en detalle a continuación.
Escalabilidad: crecimiento sin fricciones
La escalabilidad permite que un sistema maneje aumentos de demanda sin afectar su rendimiento. En Pomelo implementamos:
- Escalabilidad horizontal: Incorporamos más instancias de servidores o nodos para distribuir la carga de trabajo eficientemente.
- Escalabilidad vertical: aumentamos los recursos de servidores existentes como CPU, memoria o almacenamiento, cuando sea necesario.
- Arquitecturas elásticas: utilizamos infraestructura en la nube que ajusta dinámicamente los recursos según la demanda.
Contamos con una arquitectura basada en microservicios sobre Kubernetes, con mecanismos de escalado dinámico que optimizan el rendimiento y garantizan una recuperación rápida ante fallos.
Inicialmente, utilizamos Horizontal Pod Autoscaler (HPA) para gestionar el escalado horizontal basado en métricas de CPU y memoria. Sin embargo, encontramos limitaciones cuando quisimos definir estrategias de escalado más personalizadas, como la cantidad de transacciones activas o la latencia de las solicitudes.
Para superar estas restricciones, implementamos KEDA (Kubernetes Event-Driven Autoscaling), lo que nos permitió:
- Escalar dinámicamente en función de eventos específicos como mensajes en colas, métricas personalizadas de Prometheus o actividad en bases de datos.
- Optimizar el uso de recursos ajustando automáticamente la cantidad de pods según la demanda en tiempo real.
- Reducir el consumo innecesario de recursos cuando el tráfico disminuye, mejorando la eficiencia operativa y reduciendo costos.
Resiliencia: resistencia y rápida recuperación
La resiliencia es la capacidad de un sistema para resistir y recuperarse rápidamente ante fallos. Para asegurar la continuidad operativa, nuestra infraestructura incorpora:
- Redundancia multi-región: replicamos datos y servicios en múltiples zonas de disponibilidad.
- Balanceo de carga inteligente: distribuimos el tráfico para evitar la sobrecarga de componentes críticos.
- Pruebas de caos (Chaos Engineering): Simulamos fallos controlados en entornos pre-productivos para fortalecer nuestra arquitectura y anticipar posibles problemas.
- Pruebas de carga: Evaluamos el rendimiento del sistema bajo diferentes niveles de demanda para garantizar que pueda manejar picos de tráfico sin degradación del servicio.
- Automatización de recuperación (auto-healing): implementamos mecanismos que detectan fallos y restauran servicios sin intervención manual.
Utilizamos Canary Deployments como estrategia de despliegue para minimizar el impacto de nuevas versiones en producción. Esta técnica nos permite:
- Liberar actualizaciones gradualmente, enviando tráfico sólo a un porcentaje limitado de usuarios antes de un lanzamiento global.
- Detectar errores en producción con bajo impacto, permitiendo una reversión rápida si se identifican fallos críticos.
- Optimizar la estabilidad de los servicios, asegurando que nuevas versiones sean evaluadas bajo tráfico real sin comprometer la experiencia del usuario.
Para mejorar la resiliencia y la seguridad de nuestras aplicaciones, integramos Istio dentro de nuestro clúster de Kubernetes. Esta implementación nos permite:
- Circuit Breaker: Definir límites en la cantidad de solicitudes fallidas antes de cortar el tráfico a un microservicio problemático, evitando el colapso en cascada.
- Gestión avanzada del tráfico: Control granular sobre cómo se enrutan y manejan las solicitudes dentro del clúster.
- Seguridad adicional con Authorization Policies: Implementamos políticas de autorización en Istio que nos permiten definir a qué dominios y microservicios puede acceder cada aplicación dentro del clúster. Por ejemplo, podemos especificar que solo el microservicio A pueda ejecutar una solicitud GET al PATH /v1/api/ de otro microservicio. Esto agrega una capa adicional de seguridad sin necesidad de modificar el código de la aplicación, reduciendo la superficie de ataque y mejorando la gobernanza del tráfico.
Nuestra infraestructura cloud native multi-región opera en modo activa-activa, distribuyendo el tráfico en dos regiones y tres zonas de disponibilidad por región. En caso de una falla regional, la otra asume la carga sin interrupciones, asegurando una experiencia de usuario estable y sin impacto.
Implementar una arquitectura multi-región activa-activa es un objetivo ambicioso, pero conlleva desafíos técnicos significativos. Coordinar la replicación de datos en múltiples regiones requiere estrategias avanzadas para asegurar consistencia y baja latencia. Algunos de los principales desafíos incluyen:
- Consistencia de datos: Garantizar que todas las regiones tengan información actualizada sin afectar la performance.
- Orquestación de tráfico: Definir reglas inteligentes de balanceo para distribuir la carga sin generar sobrecargas innecesarias.
- Gestión de latencia: Minimizar el impacto en la experiencia del usuario final al enrutar tráfico entre regiones.
- Failover eficiente: Asegurar que, en caso de una falla en una región, la otra pueda asumir la carga sin degradación del servicio.
Estamos ansiosos por implementar un nuevo servicio de bases de datos relacionales diseñado específicamente para arquitecturas multi-región. AWS anunció Aurora DSQL en el AWS re:Invent 2024. Este servicio permite una replicación de datos eficiente entre regiones, con consistencia transaccional y tolerancia a fallos mejorada. Este avance representa una gran oportunidad para optimizar infraestructuras activas-activas en la nube, asegurando que los datos estén siempre sincronizados y accesibles con menor complejidad operativa.
Seguridad en la infraestructura: un enfoque proactivo
La seguridad es un pilar clave en nuestra infraestructura. Para proteger nuestros sistemas, implementamos:
- mTLS (Mutual TLS): autenticación mutua entre servicios para garantizar la integridad y confidencialidad del tráfico.
- Rate Limiting y Whitelisting de IPs: control de acceso y limitación de solicitudes por origen para mitigar abusos y ataques de fuerza bruta.
- Protección avanzada contra DDoS: prevención y mitigación de ataques de denegación de servicio mediante filtrado de tráfico malicioso y escalamiento dinámico de recursos.
Implementamos mTLS (Mutual TLS) en Istio, además de algunas de las funciones que comentamos anteriormente, para garantizar la seguridad en la comunicación entre microservicios dentro de Kubernetes donde:
- Todo el tráfico entre microservicios esté cifrado, evitando ataques de interceptación (MITM – Man In The Middle).
- Solo servicios autenticados pueden comunicarse entre sí, previniendo accesos no autorizados.
- Las políticas de autorización serán aplicadas con seguridad a nivel de red, protegiendo endpoints sensibles.
En nuestra implementación, Istio emite certificados de seguridad automáticamente y los administra mediante su Control Plane, facilitando la rotación y renovación sin impacto en los servicios. Esto nos permite establecer una malla de servicios segura y confiable, sin requerir cambios en el código de nuestras aplicaciones.
Por otro lado, integramos un escaneo continuo de seguridad con herramientas de SAST (Static Application Security Testing) y DAST (Dynamic Application Security Testing) en nuestro pipeline de CI/CD. Esto nos permite:
- detectar vulnerabilidades en el código fuente antes de llegar a producción;
- identificar posibles brechas de seguridad en tiempo de ejecución;
- automatizar la remediación de hallazgos críticos sin afectar la velocidad de despliegue.
Estrategia para un uptime de 99.995%
Para garantizar la máxima disponibilidad y aspirar a los five nines (99.999%), aplicamos una estrategia integral basada en:
- Infraestructura multi-región: evitamos dependencias en un solo proveedor de la nube o centro de datos.
- Arquitectura flexible: utilizamos recursos cloud native con capacidad de autoescalado.
- Monitoreo y observabilidad avanzada: implementamos métricas en tiempo real para detectar anomalías y prevenir fallos.
- CI/CD robusto: ejecutamos despliegues continuos con pruebas automatizadas de carga, caos y seguridad para evitar regresiones en producción.
- Seguridad: protegemos contra ataques DDoS, ciframos datos y mitigamos vulnerabilidades en tiempo real.
Conclusión
En el ecosistema fintech, donde los picos de demanda pueden multiplicarse en eventos como Black Friday o pagos masivos de nómina, una infraestructura escalable y resiliente no es opcional: es la base de la confianza del usuario.
En Pomelo, no solo diseñamos tecnología; construimos infraestructura preparada para los desafíos más exigentes. Nuestra arquitectura multi-región, nuestras estrategias de seguridad proactivas y nuestra capacidad de respuesta ante incidentes nos han permitido consolidarnos como un socio tecnológico confiable en la industria financiera.
Este nivel de resiliencia, elasticidad, escalabilidad y seguridad, respaldado por procesos automatizados, nos diferencia en la industria. Nos permite operar en un entorno altamente regulado con equipos reducidos y autónomos, acelerando los lanzamientos, minimizando riesgos humanos y optimizando el uso de recursos. Con esta arquitectura, no solo garantizamos continuidad operativa, sino que también operamos una infraestructura de clase mundial de forma ágil, segura y eficiente, lo que nos permite escalar con menos riesgo y mayor velocidad.
Seguimos desafiando nuestros propios límites en la búsqueda de los five nines, impulsando la innovación y la confiabilidad en cada capa de nuestra infraestructura. 🚀