Saltar al contenido principal

Configuración óptima

Para aprovechar al máximo Midaz en producción, comienza con:
  • Desplegar en múltiples zonas de disponibilidad.
  • Usar al menos 3 nodos worker con autoscaling.
  • Separar cargas de trabajo (aplicación vs. base de datos).
  • Aprovechar servicios administrados como RDS, ElastiCache y MongoDB Atlas.
  • Aplicar las mejores prácticas de Kubernetes para resiliencia, seguridad y observabilidad.
  • Automatizar backups y alertas desde el primer día.

Planificación de infraestructura

Arquitectura del clúster

Para asegurar resiliencia y rendimiento:
  • Despliega en múltiples zonas de disponibilidad.
  • Usa al menos 3 nodos worker para alta disponibilidad.
  • Habilita node autoscaling para absorber picos de carga de trabajo.
  • Separa cargas de trabajo de aplicación y base de datos cuando sea posible.

Dimensionamiento de recursos

  • Ajusta el tamaño de los nodos a las cargas de trabajo esperadas.
  • Prioriza servicios críticos con recursos suficientes.
  • Aplica resource quotas para evitar contención.
  • Monitorea y ajusta continuamente basándote en el uso.

Almacenamiento

  • Usa almacenamiento respaldado por SSD para todos los componentes de base de datos.
  • Define storage classes apropiadas según el proveedor de nube.
  • Aprovisiona volúmenes con margen para crecimiento.
  • Para datos críticos, usa opciones de almacenamiento replicadas o altamente duraderas.

Arquitectura de base de datos y alta disponibilidad

Midaz usa CQRS (Command Query Responsibility Segregation) para separar limpiamente las lecturas de las escrituras. Esto te ayuda a escalar eficientemente y construir servicios tolerantes a fallos.

PostgreSQL

  • Usa un primary dedicado para escrituras y replicas para lecturas.
  • Habilita replicación síncrona para datos críticos.
  • Configura failover automático (por ejemplo, Patroni, AWS RDS).
  • Monitorea replication lag y consistencia.
  • Prefiere servicios administrados como AWS RDS o GCP Cloud SQL para resiliencia y automatización.

Redis / Valkey

  • Despliega en modo cluster a través de múltiples zonas.
  • Habilita failover automático (por ejemplo, Redis Sentinel o clustering nativo).
  • Usa servicios administrados como AWS ElastiCache o GCP Memorystore para simplicidad y uptime.

MongoDB

  • Usa replica sets con miembros a través de zonas.
  • Monitorea transiciones de roles y lag.
  • Programa backups regulares.
  • Evita escribir en secondaries a menos que sea intencional.
  • Usa servicios administrados como MongoDB Atlas o AWS DocumentDB para observabilidad, escalado y resiliencia.

Infraestructura de mensajería

RabbitMQ es esencial para desacoplar servicios y habilitar consistencia eventual en la arquitectura CQRS de Midaz:
  • Los servicios de comando publican eventos después de procesar escrituras.
  • RabbitMQ enruta eventos a consumidores interesados a través de exchanges y queues.
  • Los consumidores actualizan read models, disparan workflows o se integran con sistemas externos basándose en los eventos recibidos.
Recomendamos usar un servicio RabbitMQ administrado (como AWS MQ o CloudAMQP) en producción para optimizar operaciones y mejorar la confiabilidad.

Estrategias de alta disponibilidad

Redundancia de servicio

  • Despliega múltiples réplicas para cada servicio.
  • Usa reglas anti-affinity para distribuir servicios a través de zonas.
  • Aplica Pod Disruption Budgets para reducir el tiempo de inactividad durante actualizaciones.

Balanceo de carga

  • Usa ingress controllers con health checks.
  • Evita session affinity a menos que sea requerido.
  • Habilita connection draining para despliegues suaves.

Consideraciones de seguridad

Seguridad de red

  • Aplica Kubernetes network policies para controlar el tráfico.
  • Asigna permisos mínimos a cada cuenta de servicio.
  • Asegura el acceso externo con TLS.
  • Restringe interfaces de administración con listas de IP permitidas.

Gestión de secretos

  • Usa Kubernetes Secrets para credenciales y tokens.
  • Rota secretos regularmente.
  • Nunca codifiques secretos en duro en contenedores o archivos de configuración.
  • Usa gestores de secretos externos para una postura de seguridad más sólida.

Monitoreo y observabilidad

Métricas

  • Monitorea KPIs clave de aplicación e infraestructura.
  • Establece umbrales de alerta accionables.
  • Usa dashboards para visibilidad en tiempo real.

Registro de logs

  • Centraliza logs a través de servicios.
  • Usa formatos estructurados para mejor filtrado.
  • Aplica políticas de retención y rotación de logs.
  • Define alertas basadas en logs para eventos críticos.

Tracing

  • Habilita distributed tracing a través de servicios.
  • Muestrea traces para balancear rendimiento.
  • Correlaciona traces con logs y métricas para visibilidad completa.

Alertas

  • Crea alertas claras y confiables.
  • Ajusta umbrales para reducir ruido.
  • Enruta alertas a través de los canales correctos.
  • Mantén runbooks para problemas recurrentes.

Estrategia de backup

  • Automatiza backups regulares para sistemas críticos.
  • Almacena backups en múltiples ubicaciones o regiones.
  • Prueba procedimientos de restauración regularmente.
  • Mantén documentación de backup actualizada y accesible.

Notas finales

Midaz está listo para producción por diseño. Cuando alineas tu infraestructura con su arquitectura, obtienes:
  • Separación limpia de lectura/escritura con CQRS.
  • Compatibilidad plug-and-play con servicios administrados en la nube.
  • Soporte incorporado para observabilidad, failover y operaciones seguras.
Revisa tu configuración regularmente, aplica estas mejores prácticas de manera proactiva, y tendrás una base robusta lista para crecer con tu negocio.

¿Qué sigue?

¿Quieres ayuda para escalar, migrar o reforzar tu entorno de producción?