Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Challenge Elegido y Por Qué
Elegí Challenge 1 — Payment settlement pipeline.
Este challenge es el que mejor se alinea con las expectativas de un rol tech-lead/staff porque estresa fundamentos de sistemas distribuidos de punta a punta: límites transaccionales, confiabilidad del outbox, idempotencia ante redelivery y recuperación frente a fallas de broker/runtime.
Decisiones Arquitectónicas Clave y Alternativas Rechazadas
PaymentServicepersistepayments+outbox_eventsde forma atómica en una sola transacción local.COMMITde base de datos ysendal broker (son dos sistemas distintos). Eso abre estados inconsistentes: pago confirmado sin evento publicado o evento publicado sin estado durable ante fallos intermedios/reintentos. Además, viola una restricción explícita del challenge.apps/relayque hace polling del outbox y publica en Kafka.setIntervaldentro del proceso API.eventIdconsumerName + eventIdy persistencia de acknowledgements por consumidor.fraud,ledger);notifyes informativo.payment.created.v1ypayment.failed.v1; auto-create deshabilitado.Qué Haría Distinto Con Más Tiempo
Limitaciones / Atajos Conocidos
payment.settled.v1no está implementada; el settlement actualmente se deriva por query desde acknowledgements.Run Locally
Install dependencies:
Start infrastructure:
Run API and relay in separate terminals:
Run tests:
npm test