Escalado de la Plataforma IIoT

Estrategias de escalado vertical y horizontal para la Plataforma IIoT: orquestación de contenedores, optimización de la base de datos, caché y escalado del frontend.

A medida que crecen el número de usuarios, el volumen de datos y la cantidad de dispositivos, la Plataforma IIoT necesita escalar. La arquitectura sobre la que está construida y su potencial de escalado subyacente se describen en Escalabilidad del sistema; esta página se centra en las estrategias prácticas para escalar un despliegue en producción.

Estrategias de escalado de la plataforma

flowchart LR
subgraph subGraph0["IIoT Platform Scaling Strategies"]
F["Vertical Scaling"]
A["Application Servers (Ruby on Rails)"]
G["Horizontal Scaling"]
B["Data Collection Servers (GO)"]
C["PostgreSQL Database"]
H["Database Optimization"]
D["Docker/Kubernetes"]
E["Frontend Scaling"]
end
A --> F & G
B --> F & G
C --> F & G & H
D --> B & A
E -- Efficient_Distribution --> D

Escalado vertical y horizontal

La plataforma admite dos enfoques de escalado complementarios: el escalado vertical añade recursos a los servidores existentes, mientras que el escalado horizontal añade más servidores.

Escalado vertical

  • Ampliación de los recursos del servidor:

    • Añadir CPU, RAM y almacenamiento SSD a los servidores de aplicaciones (Ruby on Rails) y a los servidores de recolección de datos (Go).
    • Aumentar el rendimiento de PostgreSQL mediante matrices de discos más potentes y la optimización de índices.
  • Ventajas: Sencillo de implementar, con cambios mínimos en la arquitectura.

  • Limitaciones: Los límites físicos de cada servidor y el alto coste.

Escalado horizontal

  • Adición de nuevos servidores:
    • Ruby on Rails: desplegar instancias de aplicación adicionales detrás de un balanceador de carga (por ejemplo, Nginx o HAProxy).
    • Servidores Go: escalan con facilidad gracias al multihilo y al soporte integrado para el escalado horizontal.
    • PostgreSQL: replicar y fragmentar los datos para equilibrar la carga.
  • Ventajas: Alta tolerancia a fallos y escalabilidad prácticamente ilimitada.
  • Limitaciones: La mayor complejidad de gestionar un sistema distribuido.

Uso de Kubernetes/Docker Compose para la orquestación de contenedores

Migración a Kubernetes/Docker Compose

  • Contenerización de las aplicaciones:
    • Los servidores Ruby on Rails y Go se empaquetan en contenedores Docker.
    • Kubernetes/Docker Compose gestiona el despliegue, el escalado y la supervisión de esos contenedores.
  • Escalado automático:
    • El Horizontal Pod Autoscaler (HPA) aumenta automáticamente el número de pods en función de la carga.
    • El Cluster Autoscaler añade nuevos nodos al clúster cuando los recursos escasean.
  • Ventajas: Gran flexibilidad, automatización y tolerancia a fallos.

Ejemplo de arquitectura en Kubernetes

  • Ingress Controller: enruta las solicitudes hacia los servidores Ruby on Rails y Go.
  • StatefulSets: gestionan las réplicas con estado de PostgreSQL.
  • Service Mesh: utiliza Istio o Linkerd para gestionar el tráfico y mejorar la seguridad.

Optimización de la base de datos

El nivel de base de datos escala mediante una combinación de replicación, fragmentación (sharding) y caché.

Replicación y fragmentación de PostgreSQL

  • Replicación:
    • Configurar la replicación maestro-esclavo para distribuir la carga de lectura.
    • Utilizar herramientas como Patroni para gestionar la replicación de forma automática.
  • Fragmentación (sharding):
    • Repartir los datos entre varios clústeres de PostgreSQL para distribuir la carga de escritura.
    • Utilizar Citus para escalar PostgreSQL horizontalmente.

Caché

  • Redis o Memcached:
    • Almacenar en caché los datos solicitados con frecuencia para reducir la carga de la base de datos.
    • Integrar con Ruby on Rails mediante ActiveSupport::Cache.

Escalado del frontend

  • Caché en el lado del cliente:

    • Utilizar Service Workers y la Cache API para almacenar en caché los recursos estáticos.
  • CDN (Content Delivery Network):

    • Distribuir los archivos estáticos a través de una CDN para reducir la carga de los servidores.

Ventajas de la solución propuesta

  • Alta tolerancia a fallos: gracias a Kubernetes/Docker Compose y a la replicación de PostgreSQL.
  • Flexibilidad: es fácil añadir nuevos servidores y microservicios.
  • Automatización: el escalado requiere una intervención humana mínima.
  • Rentabilidad: el uso de recursos se optimiza mediante el escalado automático.

El escenario de escalado descrito anteriormente permite que el sistema de telemetría gestione cargas crecientes de forma eficaz, proporcionando un alto rendimiento, tolerancia a fallos y flexibilidad. Al adoptar estas tecnologías modernas, la plataforma está preparada para los retos del futuro.

Temas relacionados

Última actualización el

¿Te resultó útil esta página?