> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Mejores prácticas de producción de Midaz

> Configura Midaz para producción con despliegue multi-AZ, autoescalado, servicios administrados y los patrones de resiliencia en Kubernetes recomendados.

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.

<Note>
  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](/es/reference/retries-idempotency).
</Note>

## 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?

* Lee la [guía de implementación de Midaz](/es/midaz/deployment).
* [Contacta a nuestro equipo](https://lerian.studio/contact) para soporte personalizado.
