Takamol: despliegue Kubernetes y microservicios para una plataforma de recursos humanos gubernamental en Oracle Cloud
Para ayudar a emparejar a los ciudadanos en edad de trabajar con los empleadores del sector público y privado, Takamol Holding, con sede en Riad, ejecuta su plataforma de servicios de capacitación laboral, mejora de habilidades y desarrollo de talento en una infraestructura híbrida, donde su entorno en la nube ejecuta varios clusters de Kubernetes en OCI Kubernetes Engine (OKE).
Fundada en 2013 como una división del Ministerio de Recursos Humanos y Desarrollo Social de Arabia Saudita, Takamol ha pasado casi una década modernizando los programas de recursos humanos en todo el reino.
Debido a que la infraestructura local de Takamol resultó demasiado costosa para operar y mantener, Takamol decidió lanzar sus nuevas plataformas de desarrollo laboral y económico utilizando una arquitectura de microservicios basada en contenedores que se ejecutaba en Oracle Cloud Infrastructure (OCI). Hoy en día, cientos de miles de personas utilizan las plataformas de Takamol diariamente, lo que les permite encontrar, solicitar y prepararse para un empleo remunerado. Recientemente, Takamol migró una plataforma de donaciones, que es utilizada tanto por donantes institucionales como individuales.
En la región de Oracle Cloud en Jeddah, la plataforma de Takamol admite 5000 usuarios simultáneos y procesa hasta 10 000 solicitudes por minuto. Takamol utiliza los servicios gestionados de OCI para automatizar las actualizaciones de sus plataformas nativas en la nube de forma rápida y sin tiempo de inactividad. En su arrendamiento de OCI, Takamol puede escalar verticalmente rápidamente durante las horas pico y reducir verticalmente en las horas de menor actividad, proporcionando soporte justo a tiempo al menor costo posible.
Entre los aspectos destacados del despliegue nativo en la nube de Takamol en OCI se incluyen:
- Arquitectura basada en contenedor con OCI Kubernetes Engine
- Escala automática de pod horizontal (HPA) para satisfacer la alta demanda durante las horas pico
- Acceso de red de confianza cero
- Firewall de aplicaciones web NGINX
- Para sus componentes con estado, Takamol utiliza PostgreSQL para su base de datos y RabbitMQ para la cola de mensajes
Arquitectura
Los ingenieros de Takamol Holding se conectan a una herramienta de acceso de red de confianza cero y se autentican a través de su propio inicio de sesión único antes de obtener acceso a la red virtual en la nube (VCN).
Los usuarios de la plataforma se enrutan a través de Oracle Cloud Infrastructure Load Balancing, que administra las solicitudes de los usuarios en tres dominios de errores independientes. A continuación, las solicitudes de usuario se envían al controlador de entrada de Oracle Cloud Infrastructure Kubernetes Engine (OKE), donde se inspeccionan antes de enrutarlas a su destino final.
En el cluster de Kubernetes, Takamol utiliza varias herramientas de código abierto para procesar las solicitudes de los usuarios, como NGINX, un servidor proxy inverso, un equilibrador de carga y un gateway de API. Estos servicios se escalan en el cluster de Kubernetes mediante la escala automática de pod horizontal (HPA) para satisfacer las altas demandas durante las horas pico. Takamol también utiliza una aplicación de capa 7 que protege la denegación de servicio (DoS), junto con una aplicación que protege WAF por F5 NGINX. La mayoría de las aplicaciones de Takamol son sin estado, siguiendo el modelo de 12 factores, por lo que no requieren almacenamiento o cachés en la aplicación. En su lugar, las aplicaciones de Takamol utilizan servicios de almacenamiento externo, lo que las hace fáciles de implementar, escalar automáticamente y gestionar dentro del cluster de Kubernetes.
Takamol también utiliza Argo CD, una herramienta de entrega continua declarativa, GitOps para Kubernetes. Con Argo CD, Takamol puede desplegar sus cargas de trabajo de forma declarativa, sin proporcionar acceso directo al cluster, lo que hace posible que su cluster se despliegue en una subred privada. En lugar de que los desarrolladores actualicen las aplicaciones, Argo CD lee desde un repositorio de Gitlab para implementar nuevos servicios, sin proporcionar acceso directo a Gitlab para actualizar el cluster. Para sus componentes con estado, Takamol utiliza PostgreSQL para su base de datos y RabbitMQ para la cola de mensajes.
El equilibrador de carga, el cluster de Kubernetes y las herramientas de código abierto se encuentran en subredes independientes. Aunque están aislados entre sí, pueden enviar y recibir información a través de puertos de comunicaciones. Con los logs de flujo de VCN de Oracle y un centro de operaciones de seguridad (SOC) SEIM, Takamol puede virtualizar las comunicaciones entre las distintas subredes sin tener que instalar herramientas adicionales. En los próximos meses, Takamol planea enviar sus logs de flujo de VCN a través de Oracle Cloud Infrastructure Functions para entregar logs de red a la solución SEIM.
- Aproximadamente el 90 % de la arquitectura de Takamol se creó utilizando la infraestructura como código (IaC) del proveedor de Terraform de Oracle Cloud Infrastructure de código abierto con sus propios módulos creados internamente. Este enfoque reduce el esfuerzo humano necesario para desplegar y gestionar la infraestructura, lo que permite cambios más rápidos con un riesgo significativamente menor de errores humanos.
- Todos los servicios en los entornos de desarrollo, prueba y preproducción de Takamol se replican como su entorno de producción. Ninguno de estos entornos está interconectado. Esto garantiza la coherencia entre los entornos.
- Las copias de seguridad de bases de datos se realizan mediante pgbackrest, que archiva y almacena copias de seguridad en Oracle Cloud Infrastructure Block Volumes. Esto permite el almacenamiento a largo plazo para la base de datos al tiempo que soporta la recuperación point-in-time (PIT).
- Los microservicios, las métricas, los logs de OKE y los corredores GitLab utilizan Oracle Cloud Infrastructure Object Storage para almacenar en caché los datos. También proporciona copias de seguridad de base de datos rentables a largo plazo de sus bases de datos PostgreSQL.
- Las políticas de Oracle Cloud Infrastructure Registry y Oracle Cloud Infrastructure Identity and Access Management ayudan a Takamol a controlar el acceso de los usuarios a los repositorios. Anteriormente, la compañía utilizaba Docker Hub, que no proporcionaba un control tan detallado como OCI. Además, con OCI Registry, Takamol utiliza la función de exploración de seguridad integrada.
- Takamol utiliza Loki, una base de datos de series temporales para logs, Prometheus para la recopilación de métricas, Tempo para rastreos y Grafana para la visualización, todas centralizadas en el único cluster de OKE.
El siguiente diagrama ilustra esta arquitectura de referencia.
Para un futuro estado y hoja de ruta, Takamol busca trasladar más servicios a servicios gestionados y nativos de la nube:
- Ejecute un sitio de recuperación ante desastres desde la región de Oracle Cloud en Neom.
- Aproveche la búsqueda de Oracle Cloud Infrastructure con OpenSearch para obtener un motor de búsqueda de texto completo distribuido, totalmente gestionado y sin mantenimiento.
- Utilice Oracle Autonomous Data Warehouse para cargas de trabajo de base de datos.
- Utilice Oracle Cloud Infrastructure Vulnerability Scanning Service para buscar vulnerabilidades, en particular en imágenes de docker.
La arquitectura tiene los siguientes componentes:
- Tenancy
Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud dentro de su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un único arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una única suscripción, y una única suscripción normalmente solo tiene un arrendamiento.
- Región
Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes entre sí y puede haber grandes distancias que las separen (entre países e incluso continentes).
- Compartimento
Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar, controlar el acceso y definir cuotas de uso para los recursos de Oracle Cloud. En un compartimento determinado, defina políticas que controlen el acceso y definan privilegios para los recursos.
- Dominio de disponibilidad
Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten infraestructura, como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por lo tanto, un fallo en un dominio de disponibilidad no debería afectar a los otros dominios de disponibilidad de la región.
- Dominio de errores
Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad cuenta con tres dominios de errores con energía y hardware independientes. Al distribuir los recursos entre varios dominios de errores, las aplicaciones pueden tolerar fallos físicos del servidor, mantenimiento del sistema y fallos de energía en un dominio de errores.
- Red y subredes virtuales en la nube (VCN)
Una VCN es una red personalizable y definida por software que puede configurar en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan el control de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.
- Lista de seguridad
Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.
- Tabla de rutas
Las tablas de rutas virtuales contienen reglas para enrutar el tráfico de subredes a destinos fuera de una VCN, normalmente a través de gateways.
- Gateway de Internet
El gateway de Internet permite el tráfico entre las subredes públicas de una VCN y la red pública de Internet.
- Gateway de servicio
El gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico de la VCN al servicio Oracle viaja por el tejido de red de Oracle y no atraviesa Internet.
- Equilibrador de carga
El servicio Oracle Cloud Infrastructure Load Balancing proporciona una distribución automatizada del tráfico desde un único punto de entrada a varios servidores en el backend.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine u OKE) es un servicio totalmente gestionado, escalable y disponible que puede utilizar para desplegar las aplicaciones en contenedores en la nube. Especifique los recursos informáticos que necesitan sus aplicaciones y Kubernetes Engine los provisionará en Oracle Cloud Infrastructure en un arrendamiento existente. OKE utiliza Kubernetes para automatizar el despliegue, la ampliación y la gestión de aplicaciones en contenedores en clusters de hosts.
- Compute
Con Oracle Cloud Infrastructure Compute, puede aprovisionar y gestionar hosts de recursos informáticos en la nube. Puede iniciar instancias informáticas con unidades que cumplan los requisitos de recursos de CPU, memoria, ancho de banda de red y almacenamiento. Después de crear una instancia informática, puede acceder a ella de forma segura, reiniciarla, asociar y desconectar volúmenes y terminarla cuando ya no lo necesite.
- Conectores de servicio
Oracle Cloud Infrastructure Service Connector Hub es una plataforma de bus de mensajes en la nube que organiza el movimiento de datos entre servicios de OCI. Puede utilizar conectores de servicio para mover datos de un servicio de origen a un servicio de destino. Los conectores de servicio también permiten especificar opcionalmente una tarea (como una función) que se debe realizar en los datos antes de que se entreguen al servicio de destino.
Puede utilizar el hub de conector de servicio de Oracle Cloud Infrastructure para crear rápidamente un marco de agregación de registros para sistemas de información de seguridad y gestión de eventos (SIEM).
- Registro
Oracle Cloud Infrastructure Registry es un registro gestionado por Oracle que permite simplificar el desarrollo y el flujo de trabajo de producción. El registro facilita el almacenamiento, el uso compartido y la gestión de artefactos de desarrollo, como imágenes de Docker. La arquitectura altamente disponible y escalable de Oracle Cloud Infrastructure garantiza que pueda desplegar y gestionar sus aplicaciones de forma fiable.
- Identity and Access Management (IAM)
Oracle Cloud Infrastructure Identity and Access Management (IAM) es el plano de control de acceso para Oracle Cloud Infrastructure (OCI) y Oracle Cloud Applications. La API de IAM y la interfaz de usuario le permiten gestionar los dominios de identidad y los recursos dentro del dominio de identidad. Cada dominio de identidad de OCI IAM representa una solución independiente de gestión de identidad y acceso o una población de usuarios diferente.
- Política
Una política de Oracle Cloud Infrastructure Identity and Access Management especifica quién puede acceder a qué recursos y de qué modo. El acceso se otorga en el nivel de grupo y compartimento, lo que significa que puede escribir una política que proporcione a un grupo un tipo específico de acceso dentro de un compartimento específico o al arrendamiento.
- Oracle Cloud Infrastructure Vault
Oracle Cloud Infrastructure Vault permite gestionar de forma central las claves de cifrado que protegen los datos y las credenciales secretas que utiliza para proteger el acceso a los recursos en la nube. Puede utilizar el servicio Vault para crear y gestionar almacenes, claves y secretos.
- Cloud Guard
Puede utilizar Oracle Cloud Guard para supervisar y mantener la seguridad de los recursos en Oracle Cloud Infrastructure. Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de deficiencias de seguridad y para supervisar a los operadores y usuarios para determinadas actividades de riesgo. Cuando se detecta una configuración incorrecta o una actividad no segura, Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones, en función de las recetas de responsable de respuesta que pueda definir.
- LoggingLogging es un servicio altamente escalable y totalmente administrado que proporciona acceso a los siguientes tipos de registros de sus recursos en la nube:
- Logs de auditoría: logs relacionados con eventos emitidos por el servicio de auditoría.
- Logs de servicios: logs emitidos por servicios individuales como API Gateway, eventos, funciones, equilibrio de carga, Object Storage y logs de flujo de VCN.
- Logs personalizados: logs que contienen información de diagnóstico de aplicaciones personalizadas, otros proveedores de nube o un entorno local.
- Almacenamiento de objetos
Oracle Cloud Infrastructure Object Storage proporciona acceso rápido a grandes cantidades de datos estructurados y no estructurados de cualquier tipo de contenido, incluidas copias de seguridad de base de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Puede almacenar datos de forma segura y, a continuación, recuperarlos directamente desde Internet o desde la plataforma en la nube. Puede ampliar el almacenamiento sin experimentar ninguna degradación del rendimiento ni de la fiabilidad del servicio. Utilice el almacenamiento estándar para el almacenamiento al que debe acceder de forma rápida, inmediata y frecuente. Utilice el almacenamiento de archivo para el almacenamiento "frío" al que conserva durante largos períodos de tiempo y al que rara vez accede.
- Análisis
Oracle Analytics Cloud es un servicio en la nube pública escalable y seguro que ofrece a los analistas empresariales funciones de autoservicio modernas y que funcionan con IA para la preparación de datos, la visualización, la generación de informes empresariales, los análisis aumentados y el procesamiento y la generación de lenguaje natural. Con Oracle Analytics Cloud, también obtiene capacidades de gestión de servicios flexibles, como una configuración rápida, una ampliación y aplicación de parches fáciles y una gestión automatizada del ciclo de vida.