Skip to main content

Documentación del flujo de trabajo en infraestructura

Flujo de Trabajo

1. Comunicación del Cliente

  • Interfaz de Usuario (HTML/CSS): Los clientes acceden al sistema a través de una interfaz web basada en tecnologías estándar como HTML y CSS.
  • Oracle Cloud Infrastructure (OCI): Este componente representa el entorno de la nube de Oracle que interactúa con el sistema para servicios específicos, como aplicaciones empresariales u otros datos externos.

2. Seguridad y Control de Acceso

  • Web Application Firewall (WAF): Protege la infraestructura frente a ataques de capa de aplicación, como inyecciones SQL o ataques XSS. Aquí se inspeccionan todas las solicitudes provenientes de los clientes antes de ser enviadas a los balanceadores.

3. Balanceo de Carga

  • Balanceador Público: Gestiona el tráfico HTTP/HTTPS de los portales y lo distribuye a los servicios del api manager.
  • Cloud DNS: Resuelve a la ip interna asociada al acceso de ingress privado del cluster.

4. Middleware y API Management

  • WSO2 API Manager: Administra y expone las APIs del sistema, proporcionando capacidades de análisis, seguridad y control del acceso a las APIs.
  • Keycloak: Maneja la autenticación y autorización para los usuarios y aplicaciones, integrándose con otros servicios para el manejo de identidades.

5. Comunicación y Arquitectura Kubernetes

  • Kubernetes: Es el orquestador de contenedores que gestiona múltiples servicios desplegados en diferentes nodos:
    • Nodo 1, Nodo 2, Nodo 3: Representan los recursos físicos/virtuales del clúster.
    • Linkerd: Un service mesh que proporciona observabilidad, seguridad y enrutamiento dentro del clúster.
    • OpenTelemetry: Herramienta para monitoreo y rastreo distribuido.
    • NGINX Ingress Controller: Facilita el acceso a los servicios internos a través de reglas de enrutamiento HTTP.

6. Operación y Monitoreo

  • Prometheus y Grafana:
    • Prometheus recopila métricas de la infraestructura y los servicios.
    • Grafana visualiza estas métricas para análisis y monitoreo en tiempo real.
  • Grafana Loki: Administra y visualiza los logs generados por los servicios.

7. Persistencia de Datos

  • PostgreSQL: Base de datos relacional Google CloudSQL .
  • DataBricks: Plataforma de procesamiento en la nube que actúa como un Data Lake para grandes volúmenes de datos.

8. Mensajería

  • Google PubSub: Sistema de mensajería que permite la comunicación asincrónica entre los diferentes servicios, asegurando la entrega confiable de datos.

9. Integración y Control de Versiones

  • GitLab: Herramienta de control de versiones utilizada por los desarrolladores para administrar el código fuente y los pipelines de CI/CD.
  • Jenkins: Plataforma de integración continua que orquesta el despliegue y las pruebas automáticas.
  • ArgoCD: Plataforma de integración basada en GitOps que orquesta el despliegue y las pruebas automáticas.

10. Liberación y Calidad del Software

  • Maven: Herramienta de construcción y repositorio de dependencia utilizada para compilar, probar y empaquetar el software.
  • SonarQube: Analiza la calidad del código, identificando errores y asegurando el cumplimiento de las mejores prácticas.

11. Sincronización de Fecha y Hora

  • NTP (Network Time Protocol): Garantiza la sincronización de los relojes en todos los componentes del sistema, asegurando consistencia en los registros y eventos.

Flujo General

  1. Los clientes interactúan con el sistema mediante la interfaz web.
  2. Las solicitudes pasan a través del Web Application Firewall (WAF) para validación y protección.
  3. Los balanceadores dirigen el tráfico a los servicios internos según la naturaleza de la solicitud.
  4. Kubernetes orquesta los servicios y garantiza la alta disponibilidad, mientras que herramientas como Prometheus y Grafana monitorean el estado del sistema.
  5. Los datos se almacenan en MySQL, Snowflake o NFS según el caso, y se procesan mediante mensajería con RabbitMQ.
  6. Los desarrolladores utilizan GitLab, Jenkins, SonarQube y Gradle para desarrollar, probar y liberar nuevas versiones del software.

Este flujo permite mantener un sistema escalable, seguro y eficiente, alineado con las mejores prácticas de arquitectura moderna en la nube.