Playbook
Diseño de un motor de pago de producción (Diseno DE Un Motor DE Pago DE Produccion)
Síntesis de la serie de 22 partes: lista de verificación arquitectónica para motor de pagos de producción con orquestador de pago y puerta de enlace de proveedores.
Motor de pago distribuido
Parte 21 de 22
Una serie de arquitecturas de pago distribuidas que cierran la brecha entre la captura y la finalización.
Esta serie comenzó con la abstracción de proveedores y continuó con la confiabilidad del webhook, la idempotencia, la saga, el arrendamiento, el consenso, la observabilidad, el canal de recuperación y el procesamiento efectivo una vez. Esta última sección técnica es la síntesis de ese viaje: si estás diseñando un motor de pagos que se ejecuta en producción, ¿qué decisiones deberías tomar y en qué orden?
La lista de verificación no es una lista de características. Cada ítem es una prueba mensurable de un principio defendido en una o más partes de la serie. No es '¿Existe idempotencia?' La pregunta es "¿Funcionan juntos la API de clave de idempotencia, la deduplicación de webhook y el trío de unicidad de base de datos?"```text Production Payment Engine ├─ Boundaries (orchestrator ↔ gateway) ├─ State & Evidence ├─ Reliability (retry, lease, outbox) ├─ Recovery (reconciliation, runbooks) └─ Observability (payment id, step log, metrics)
## Conceptos en la primera mención```text
📦 Checkout Orchestrator
Ödeme niyetini yöneten, semantik sonuç gören, PSP detayı bilmeyen servis.
📦 Provider Gateway
PSP SDK'sını, webhook çevirisini ve provider'a özgü akışları sahiplenen servis.
📦 Production Readiness
Sistemin sadece happy path'te değil, arıza, yarış ve sürüklenme anlarında da doğru davranması.
📦 Architectural Checklist
Tasarım kararlarının ölçülebilir, evet/hayır testlerine dönüştürülmüş hali.
```El motor de pago de producción no significa que "la API de carga está funcionando"; Es para responder a la pregunta "¿Qué sucede cuando falla la carga, el webhook llega tarde y el trabajador falla?"
## 1. Límites: No hay fugas de SDK
- [] ¿Checkout Orchestrator no importa ningún tipo de SDK de PSP?
- [] ¿Orquestator solo ve la semántica `ChargeRequest` / `ChargeResult`?
- [] ¿El webhook llega hacia abajo como carga útil del proveedor sin procesar o como evento semántico?
- [] ¿Es la puerta de enlace del proveedor el único propietario del evento del proveedor → tabla de mapeo de eventos semánticos?
- [] ¿Agregar una nueva PSP no requiere ninguna línea de cambios en el código del orquestador?
Este episodio es el episodio 9-10 de la serie. es la esencia de sus partes. Si se rompe el límite, cada capa restante se construye sobre esa fuga.
## 2. Estado y evidencia: estado ≠ evidencia
- [ ] ¿Está claramente definida la máquina de estado de pago (Procesando, FinalizarPendiente, Capturado, Fallido, Caducado)?
- [ ] ¿Los estados terminales son irreversibles?
- [ ] ¿La instantánea del pago (monto, moneda, cesta) es inmutable?
- [] ¿La evidencia (webhook, respuesta de sincronización) de PSP se almacena en una tabla de evidencia separada?
- [ ] ¿Las transiciones de estado se basan en evidencia o en suposiciones?
## 3. Fiabilidad: reintento, arrendamiento, bandeja de salida
- [] ¿Está definida la taxonomía de errores (BusinessDecline, Timeout, RateLimited, Infrastructure)?
- [ ] ¿Se aplica una política de reintento diferente para cada categoría?
- [] ¿Los trabajos respaldados por bases de datos se procesan en régimen de arrendamiento?
- [] ¿El controlador de webhook utiliza el token de arrendamiento + versión juntos?
- [] ¿El evento está en la misma transacción que el patrón de la bandeja de salida con el cambio de estado?
- [] ¿Están juntos el trío de API de clave de idempotencia, deduplicación del consumidor y singularidad de base de datos?
## 4. Recuperación: automatización antes, runbook después
- [] ¿La barredora de reconciliación envejece los registros de escaneo Finalizar pendientes/caducados?
- [] ¿Se puede resolver el escenario de carga huérfana con la identificación de correlación?
- [] ¿Existe un bloqueo de carrito para carritos de múltiples intenciones?
- [] ¿El manual del muro de Uniqueness escribe en la cola de revisión?- [] ¿El runbook está basado en evidencia (registro de pasos + consulta de PSP + auditoría)?
- [ ] ¿La decisión de curación/reembolso es un procedimiento y no un reflejo?
## 5. Observabilidad: columna vertebral de identificación de pago
- [] ¿Cada registro, seguimiento y métrica lleva un ID de pago?
- [] ¿El registro de eventos de pasos es solo para agregar y cubre todos los pasos significativos?
- [ ] ¿Están definidas las métricas `deferred_finalize_count` y `deferred_finalize_age_seconds`?
- [ ] ¿El conteo de deriva genera una alerta cuando aumenta repentinamente?
- [] ¿Es posible realizar un seguimiento de la ruta completa desde el pago hasta el estado del terminal con un ID de pago?
## 6. Modelo de consistencia: eventual, moderada, observable
- [ ] ¿Se eligió conscientemente el modelo saga + reconciliación en lugar del 2PC?
- [ ] ¿Está definida la acción de compensación de cada paso de la saga?
- [] ¿Se mide y se comparte con el equipo de producto la ventana de coherencia final?
- [ ] ¿El objetivo de 'consistente en poco tiempo' en lugar de la ilusión de 'consistente en todo momento'?```text
Checklist tamamlandığında sorulacak son soru:
'Bu sistemin en kötü gününde ne olur?'
→ Cevap runbook'ta, metriklerde ve reconciliation'da yazılı olmalı.
Distinciones frecuentemente confusas```text
❌ Checklist = feature tamamlandı demek ✓ Checklist = mimari ilkenin ölçülebilir testi
❌ Production ready = load test geçti ✓ Production ready = arıza anında doğru davranış kanıtlandı
❌ Daha fazla PSP = daha fazla karmaşıklık ✓ İyi sınırlar varsa, yeni PSP yalnızca gateway'i etkiler
| Sección | Episodios de la serie | Pregunta básica |
| --- | --- | --- |
| Fronteras | 9-10 | ¿Conoce Orchestrator PSP? |
| Situación y evidencia | 1-4, 6 | ¿Se basa en evidencia estatal? |
| Fiabilidad | 5, 7-8, 11, 17, 20 | ¿Qué sucede en caso de mal funcionamiento? |
| Recuperación | 12-16, 19 | ¿Cómo captar la deriva? |
| Observabilidad | 18 | ¿Es visible el pago atascado? |
| Consistencia | 3, 16 | ¿2PC o Saga? |
## Evaluación de la preparación para la producción
1. Repase las seis secciones de la lista de verificación una por una en una revisión del diseño; Responda sí/no/parcialmente para cada ítem.
2. Agregar respuestas 'Parcialmente' a la lista de deuda técnica; Priorizar en función del impacto empresarial.
3. Ejecute el peor escenario del día (PSP 5xx, retraso del webhook, accidente laboral, cargo huérfano) como ejercicio teórico.
4. Observe qué elementos de la lista de verificación permanecen en blanco durante el ejercicio: estos son los objetivos de mejora iniciales.
5. Mantener la lista de verificación como un documento vivo; Actualice el artículo relevante después de cada incidente de producción.
## Qué recordar de esta serie
1. El motor de pago por producción se mide por el comportamiento fallido, no por el camino feliz.
2. La lista de verificación es una síntesis mensurable de los 22 episodios de la serie, no una lista de características.
3. Si los límites (orquestador ↔ puerta de enlace) se rompen, todo lo demás se construye sobre esa fuga.
4. La respuesta a la pregunta del peor día debe estar escrita en el runbook, las métricas y la conciliación.
> Diseñar un motor de pago de producción no se trata de 'escribir una API de cobro', sino de hacer que la brecha entre la captura y el total sea controlada, observable y recuperable.
En el episodio final, llevamos la serie a una perspectiva profesional: ¿qué buscan realmente las empresas fintech?
FAQ
Frequently asked questions
¿Qué es el orquestador de pago?
Un servicio que gestiona las intenciones de pago, ve resultados semánticos y no conoce los detalles del PSP.
¿Qué es la puerta de enlace del proveedor?
Servicio propietario del SDK de PSP, traducción de webhooks y transmisiones específicas del proveedor.
¿Es cierto que "lista de verificación = función completa"?
Lista de verificación = prueba medible del principio arquitectónico
¿Qué soluciona esta sección?
La lista de verificación no es una lista de características. Cada ítem es una prueba mensurable de un principio defendido en una o más partes de la serie. No es '¿Existe idempotencia?' La pregunta es "¿Funcionan juntos la API de clave de idempotencia, la deduplicación de webhook y el trío de unicidad de base de datos?" El motor de pago de producción se mide por el comportamiento fallido, no por el camino feliz. Esta serie comenzó con la abstracción de proveedores y continuó con la confiabilidad del webhook, la idempotencia, la saga, el arrendamiento, el consenso, la observabilidad, el canal de recuperación y el procesamiento efectivo una vez. Esta última sección técnica es la síntesis de ese viaje: si estás diseñando un motor de pagos que se ejecuta en producción, ¿qué decisiones deberías tomar y en qué orden?
Principios de ingeniería aprendidos
- La preparación para la producción se mide por el comportamiento fallido, no por el camino feliz.
- La lista de verificación es la síntesis mensurable de la serie; Si se rompen los límites, todo lo demás se filtra.
- La respuesta a la pregunta del peor día debe estar escrita en el runbook, las métricas y la conciliación.
Continuar leyendo
Continuar leyendo
Siguiente en la serie
¿Qué buscan realmente las empresas de tecnología financiera?
Perspectiva profesional: empresas de tecnología financiera, no el SDK de Stripe; Busca el pensamiento del fracaso, la reconciliación, la idempotencia y el…
Siguiente en la serie
Procesamiento de pagos efectivo una sola vez
Enviar mensajes exactamente una vez es una mentira. ¿Cómo lograr resultados comerciales efectivos cuando se combina la defensa en profundidad con…
Misma serie
Runbook y proceso de recuperación de pagos
Antes de la automatización: trabajador de reconciliación y canal de recuperación. Los runbooks humanos basados en evidencia entran en juego cuando los…