Saltar al contenido principal
Midaz está construido para escala, seguridad y claridad operacional. Esta guía te ayuda a configurarlo correctamente desde el principio, para que puedas minimizar el tiempo de inactividad, proteger tus datos y manejar con confianza cargas de trabajo de alto volumen en producción.

Configuración óptima


Para aprovechar al máximo Midaz en producción, comienza con:
  • Implementación en múltiples zonas de disponibilidad.
  • Uso de al menos 3 nodos de trabajo con autoescalado.
  • Separación de cargas de trabajo (aplicación vs. base de datos).
  • Aprovechamiento de servicios administrados como RDS, ElastiCache y MongoDB Atlas.
  • Aplicación de mejores prácticas de Kubernetes para resiliencia, seguridad y observabilidad.
  • Automatización de copias de seguridad y alertas desde el primer día.

Planificación de infraestructura


Arquitectura del clúster

Para garantizar resiliencia y rendimiento:
  • Implementa en múltiples zonas de disponibilidad.
  • Usa al menos 3 nodos de trabajo para alta disponibilidad.
  • Habilita el autoescalado de nodos para absorber picos de carga de trabajo.
  • Separa las cargas de trabajo de aplicación y base de datos cuando sea posible.

Dimensionamiento de recursos

  • Adapta los tamaños de nodo a las cargas de trabajo esperadas.
  • Prioriza los servicios críticos con recursos suficientes.
  • Aplica cuotas de recursos para evitar contención.
  • Monitorea y ajusta continuamente según el uso.

Almacenamiento

  • Usa almacenamiento respaldado por SSD para todos los componentes de base de datos.
  • Define clases de almacenamiento apropiadas por 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 (Segregación de Responsabilidad de Comando y Consulta) para separar limpiamente lecturas de escrituras. Esto te ayuda a escalar eficientemente y construir servicios tolerantes a fallos.

PostgreSQL

  • Usa un primario dedicado para escrituras, y réplicas para lecturas.
  • Habilita replicación sincrónica para datos críticos.
  • Configura conmutación por error automática (por ejemplo, Patroni, AWS RDS).
  • Monitorea retraso de replicación y consistencia.
  • Prefiere servicios administrados como AWS RDS o GCP Cloud SQL para resiliencia y automatización.

Redis / Valkey

  • Implementa en modo clúster en múltiples zonas.
  • Habilita conmutación por error automática (por ejemplo, Redis Sentinel o clustering nativo).
  • Usa servicios administrados como AWS ElastiCache o GCP Memorystore para simplicidad y tiempo de actividad.

MongoDB

  • Usa conjuntos de réplicas con miembros en diferentes zonas.
  • Monitorea transiciones de rol y retraso.
  • Programa copias de seguridad regulares.
  • Evita escribir en secundarios a menos que sea intencional.
  • Usa servicios administrados como MongoDB Atlas o AWS DocumentDB para observabilidad, escalamiento 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 intercambios y colas.
  • Los consumidores actualizan modelos de lectura, activan flujos de trabajo o integran con sistemas externos basándose en los eventos recibidos.
Recomendamos usar un servicio administrado de RabbitMQ (como AWS MQ o CloudAMQP) en producción para optimizar operaciones y mejorar la confiabilidad.

Estrategias de alta disponibilidad


Redundancia de servicios

  • Implementa múltiples réplicas para cada servicio.
  • Usa reglas de anti-afinidad para distribuir servicios entre zonas.
  • Aplica Presupuestos de Interrupción de Pods para reducir el tiempo de inactividad durante actualizaciones.

Balanceo de carga

  • Usa controladores de ingreso con verificaciones de salud.
  • Evita afinidad de sesión a menos que sea necesario.
  • Habilita drenaje de conexiones para implementaciones suaves.

Consideraciones de seguridad


Seguridad de red

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

Gestión de secretos

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

Monitoreo y observabilidad


Métricas

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

Registro

  • Centraliza registros en todos los servicios.
  • Usa formatos estructurados para mejor filtrado.
  • Aplica políticas de retención y rotación de registros.
  • Define alertas basadas en registros para eventos críticos.

Rastreo

  • Habilita rastreo distribuido en todos los servicios.
  • Muestrea trazas para equilibrar el rendimiento.
  • Correlaciona trazas con registros y métricas para visibilidad completa.

Alertas

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

Estrategia de copias de seguridad


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

Idempotencia


En producción, siempre protege las operaciones críticas contra el procesamiento duplicado:
  • Incluye claves de idempotencia en todas las solicitudes de creación de transacciones usando el header X-Idempotency.
  • Usa claves explícitas y determinísticas vinculadas a los IDs de tu proceso de negocio (ej. IDs de pedido, referencias de pago) en lugar de depender de claves autogeneradas.
  • Valida el header de respuesta X-Idempotency-Replayed para distinguir transacciones nuevas de replays en caché.
  • Define valores de TTL apropiados que coincidan con tu ventana de reintentos — 60–120s para flujos síncronos, 300–600s para asíncronos.
Todos los productos de Lerian soportan idempotencia a través de sus propias convenciones de headers. Para detalles de implementación, estrategias de reintento y una comparación entre productos, consulta Reintentos e idempotencia.

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 integrado para observabilidad, conmutación por error y operaciones seguras.
Revisa tu configuración regularmente, aplica estas mejores prácticas proactivamente y tendrás una base robusta lista para crecer con tu negocio.

¿Qué sigue?


¿Necesitas ayuda para escalar, migrar o fortalecer tu entorno de producción?