Nueva Infraestructura
Estas páginas documentan la nueva infraestructura de la plataforma, que se está desarrollando en paralelo a la infraestructura existente. La nueva infraestructura está diseñada para ser más eficiente y escalable, y se busca que para Q4 2025 esté completamente operativa y en condiciones de reemplazar la infraestructura actual.
Introducción
La nueva infraestructura surge de las necesidades de:
- Escalabilidad: La infraestructura actual ha demostrado ser insuficiente para manejar el crecimiento de la plataforma, con constantes problemas de rendimiento, cuelgues y caídas.
- Mantenimiento: La infraestructura actual es difícil de mantener y actualizar, lo que dificulta la implementación de nuevas características y mejoras.
- Eficiencia: Se busca optimizar el uso de recursos y reducir costos operativos.
- Automatización: Se busca automatizar tareas y procesos para mejorar la eficiencia, reducir errores y evitar procesos manuales.
Estructura
La arquitectura base definida para este ambiente es una arquitectura orientada a microservicios. Es posible utilizar arquitecturas orientadas a eventos y/o mensajería. Se plantea un ambiente híbrido, donde se pueden utilizar tanto servicios cloud como on-premise, dependiendo de las necesidades y características de cada servicio a implementar. Actualmente, en el ambiente de staging, se utiliza un cluster en la nube con el proveedor Oracle Cloud, mientras que on-premise se utiliza la distribución de Kubernetes K3s, con Rancher como orquestador de clústeres. Los clústers se encuentran conectados vía VPN site-to-site.
Tecnologías
- Kubernetes: Se utiliza Kubernetes como plataforma de orquestación de contenedores, permitiendo la gestión y despliegue de microservicios de manera eficiente.
- Terraform: Se utiliza Terraform para la gestión de la infraestructura como código, permitiendo la creación, modificación y destrucción de recursos de manera automatizada. Específicamente, se utiliza para crear clusters de Kubernetes, y gestionar recursos que están fuera del universo Kubernetes (por ejemplo, buckets de objetos, bases de datos, discos persistentes, etc.).
- ArgoCD: Se utiliza ArgoCD como herramienta de entrega continua (CD) para la gestión de despliegues en Kubernetes, permitiendo la sincronización automática del estado deseado de las aplicaciones con el estado real del clúster. Esta herramienta se utiliza tanto para los servicios que se van a desplegar, como también para gestionar la infraestructura que corre en el propio clúster de Kubernetes (por ejemplo, cert-manager, Grafana, Prometheus, etc.).
Metodología GitOps
La metodología GitOps se basa en la utilización de Git para la gestión de los recursos de la infraestructura, permitiendo la sincronización automática de los cambios en los recursos con el repositorio de código. Combinando repositorios de GitHub con ArgoCD, obtenemos:
- Control de versiones: Todos los cambios en la infraestructura y aplicaciones se registran en Git, permitiendo un historial completo de cambios, facilitando la auditoría y el rollback en caso de ser necesario.
- Automatización: Los cambios en el repositorio de Git desencadenan automáticamente la sincronización de los recursos en el clúster, eliminando la necesidad de realizar manualmente tareas de despliegue y actualización.