Skip to main content

What 15 Years of Building Payment Systems Taught Me About Microservices That Nobody Talks About

Anath Bandhu Chatterjee

A payment gateway fails at 2 AM. Thousands of transactions hang in limbo. Post-mortems reveal failures cascading across dozens of services, each technically sound in isolation. The diagnosis takes hours. The fix requires coordinated deployments across teams.

Most writing on microservices focuses on benefits: clean diagrams, elegant service boundaries, teams shipping independently. Production reality at financial institutions looks different. Messier. More expensive. Often slower than the monolithic systems teams replaced.

The Hidden Complexity Tax

At JPMorgan, a single real-time wholesale payment transaction touched over a dozen services owned by different teams across Payments, Treasury Services, Risk, and Compliance. The API Gateway handled ingress. Customer Onboarding verified KYC data. Account Validation checked for frozen accounts. Funds Availability queried real-time ledgers. Funds Control applied exposure limits and sanctions screening. Compliance Screening ran AML pattern matching. The Messaging Orchestrator formatted ISO 20022-compliant messages for the RTP network. Settlement Confirmation awaited central bank acknowledgment. Ledger Posting recorded entries across nostro and vostro accounts. Audit Trail logged everything for SEC 17a-4 compliance.

What appeared linear in architecture diagrams was actually a web of asynchronous callbacks, saga orchestration via Kafka, and conditional logic based on customer risk scores.

The real cost? Incident resolution.

A 2 AM outage occurred after a Funds Control Service deployment introduced problematic risk scoring thresholds. Transactions queued for 45 minutes. Triage required five engineering teams across three geographies in a war room, digging through distributed traces and hunting through  logs. Eighteen engineer-hours on triage alone. Emergency rollback introduced its own downstream consistency risks. Financial impact: $2.5 billion in delayed settlements, approximately $150,000 in opportunity costs from potential client churn and manual interventions.

In a monolith, this would have been a straightforward debugging session. The invisible coordination cost turned a 15-minute fix into a multi-hour ordeal.

When Monoliths Outperform

In monolithic architectures with centralized code bases, one API can perform the same function that numerous APIs perform with microservices. Payment authorization flows in monolithic systems can complete in under 60 milliseconds. The "modernized" microservices equivalent? Often 300+ milliseconds. The difference: network hops adding latency and failure modes.

Amazon Prime Video moved their monitoring system back to a monolith after finding distributed components too expensive at scale. For workloads requiring tight coordination, monolithic architectures simply perform better.

Database Patterns That Break

Conference talks celebrate the Saga pattern: distributed transactions managed through choreographed local transactions with compensating rollbacks. In production, Saga participants commit changes to their databases, so data can't be rolled back. Compensating transactions might not succeed, leaving systems in inconsistent states.

The pattern treats states as binary (success/fail), but reality introduces "pending" limbo from external latencies. Compensators handling only internal state fail to coordinate with external providers. Without circuit breakers on compensators, chains proceed without retries for partial failures. When regulations demand immediate accuracy, eventual consistency becomes eventual liability.

The Hybrid Pattern That Actually Works

At JPMorgan in 2024, building the real-time merchant-acquiring platform for Chase Pay contactless payments, an eight-step transaction flow required atomicity: identity verification, BNPL credit check, inventory validation, inventory reservation, payment authorization, ledger recording, fulfillment triggering, and invoice generation.

A pure choreographed Saga across five services failed in the first week. What shipped instead: the "Fat Service + Thin Satellites" pattern.

Core atomic operations collapsed into a single bounded context called Payment Execution Service, deliberately "fat." It owned its own CockroachDB database with serializable isolation. Inventory reservation, payment authorization, ledger posting, fulfillment trigger, and invoice generation happened inside a single ACID transaction. Only truly independent, eventually-consistent concerns (customer auth, external BNPL credit checks) remained as separate services.

The orchestration became a small, two-phase mini-saga with only three participants. If the first two checks passed, Payment Execution Service ran the entire block inside one database transaction, returning either COMMITTED or REJECTED. Never a partial state.

Production results: end-to-end p95 latency dropped from 480ms to 165ms. Partial failures requiring manual intervention fell from 1 in 800 to 1 in 42,000. Mean time to resolution went from hours to minutes because 95% of the logic lived in one service with one database.

Observability as the Foundation

At JPMorgan, every payment flow carried a 128-bit Payment Correlation ID (PCID) generated at the edge and propagated everywhere: HTTP headers, Kafka message keys, gRPC metadata, database audit columns, even embedded in SWIFT and FedNow message identifiers. External partners were contractually required to echo it back.

The trace ID was made identical to the PCID. One click in the tracing tool revealed the entire 20-service waterfall for that exact payment. A "Payment 360" dashboard let engineers paste a PCID and instantly see latency breakdown per service, error rates, and Kafka lag on that exact key.

Result: triage time dropped 40%. The best engineers could debug a failed $500 million payment in under 15 minutes because the PCID gave them a perfect map of reality, no matter how distributed the system had become. The pattern: one ID to rule them all.

What Actually Works

Microservices aren't a default choice. They're a tradeoff made when specific constraints justify complexity. Start with a well-structured monolith. Extract services only when hitting real constraints. Keep the parts that must be atomic together in one service with one database and one team. Only peel off parts that are truly autonomous or have vastly different scaling or compliance needs.

Most organizations would benefit from 80% fewer services than they currently run. In payment systems, correctness and observability beat theoretical purity every time.

About the Author: Anath Bandhu Chatterjee builds scalable reliable fault tolerant distributed payment systems and cloud-native software architectures for some of the world's largest financial and technology companies. He has spent 15 years designing scalable distributed transactional systems across banking, payments, and telecommunications, with deep technical expertise in microservices, API development, and event-driven architectures. An AWS Certified Cloud Practitioner, he specializes in solutions deployed on AWS and Kubernetes environments.

Anath Bandhu Chatterjee is a Staff Software Engineer for one of the world's largest digital payment platforms

Hot Topics

The Latest

Cloud outages are usually described as technical failures. When a service goes down, a dependency breaks, or a region has issues, the focus immediately shifts to infrastructure. But if you look closely at how these incidents actually unfold, the root cause is rarely the technology itself. It is almost always tied to decisions made earlier, during design, implementation, or day-to-day operations. The system behaves the way it was built. The real question is how it was built ...

77% of leaders say their teams need AI skills urgently. 64% say their organization plans to train current employees rather than hire new ones. So far, so reasonable. The part that surprised me is who's been put in charge: 34% of those leaders say IT and engineering own the AI skills mandate. Learning and Development or HR own it at 7% of organizations. That's roughly five-to-one in favor of the people who understand the tools, over the people whose actual job is teaching adults how to learn new ones ...

In the ever-evolving digital landscape, enterprises are increasingly focused on enhancing their observability stacks to gain deeper insights into their IT environments. Observability has become a cornerstone of modern IT operations, enabling organizations to monitor, diagnose, and optimize their systems with unprecedented precision. However, a critical piece of the puzzle often goes unnoticed in this transformation: IBM i ...

We just surveyed 300 frontend and mobile engineers across 16 countries, and the finding that keeps sticking with me isn't the one about AI. It's this: 74% of engineering teams rate themselves in the "middle" of the observability maturity scale. Not reactive, not strategic. Stuck in the middle. They have dashboards, they have tracing, they have alerts. And yet when something goes wrong, they still can't tell you why ...

In MEAN TIME TO INSIGHT Episode 25, Shamus McGillicuddy, VP of Research, Network Infrastructure and Operations, at EMA discusses  AI's impact on the Wide Area Network (WAN) ... 

Application performance monitoring (APM) dashboards are only as useful as what they are configured to measure. The default setup covers obvious failure modes such as downtime, error spikes, and latency breaches, but it does not cover everything. Some failures produce no alerts or anomalies. The dashboard stays green while users experience a broken product. Here are six signs that is happening ...

The race to deploy AI is largely over. Most enterprises have entered it. The question now is not whether artificial intelligence is running inside the organization. The question is whether anyone is genuinely responsible for what it does. That is not a technical question. It is a leadership one. And most organizations are not yet structured to answer it honestly ...

A new analysis of 250 real-world queries across common retail tasks, such as product pricing, availability, ratings, shipping and specifications, reveals systemic inefficiency at the heart of web-based AI agents. On average, 97.9% of the data retrieved by agents from live web pages is irrelevant to the query being answered. Specifically, the average page ingested ran nearly 9,000 characters, while the average answer was just 32 characters, resulting in a noise-to-signal ratio of 278:1. Price queries were the most extreme outlier, with noise rates approaching 99.5%. That's not a rounding error. That's a structural problem ...

The enterprises that will define the next decade are not the ones that deployed the most technology. They are the ones who understood what their technology was actually doing. That distinction is not a philosophical point. It is the central operational challenge facing every organization that has spent the last five years modernizing at speed ...

AI is becoming the operating system of the enterprise. It acts as an invisible coordination layer that understands intent, connects systems, and executes work across complex SaaS environments. Previously, employees had to click through multiple systems — CRM, ERP, support tools, collaboration platforms — to complete a single task. Now, instead of navigating each application manually, they can simply state what they need to accomplish ...

What 15 Years of Building Payment Systems Taught Me About Microservices That Nobody Talks About

Anath Bandhu Chatterjee

A payment gateway fails at 2 AM. Thousands of transactions hang in limbo. Post-mortems reveal failures cascading across dozens of services, each technically sound in isolation. The diagnosis takes hours. The fix requires coordinated deployments across teams.

Most writing on microservices focuses on benefits: clean diagrams, elegant service boundaries, teams shipping independently. Production reality at financial institutions looks different. Messier. More expensive. Often slower than the monolithic systems teams replaced.

The Hidden Complexity Tax

At JPMorgan, a single real-time wholesale payment transaction touched over a dozen services owned by different teams across Payments, Treasury Services, Risk, and Compliance. The API Gateway handled ingress. Customer Onboarding verified KYC data. Account Validation checked for frozen accounts. Funds Availability queried real-time ledgers. Funds Control applied exposure limits and sanctions screening. Compliance Screening ran AML pattern matching. The Messaging Orchestrator formatted ISO 20022-compliant messages for the RTP network. Settlement Confirmation awaited central bank acknowledgment. Ledger Posting recorded entries across nostro and vostro accounts. Audit Trail logged everything for SEC 17a-4 compliance.

What appeared linear in architecture diagrams was actually a web of asynchronous callbacks, saga orchestration via Kafka, and conditional logic based on customer risk scores.

The real cost? Incident resolution.

A 2 AM outage occurred after a Funds Control Service deployment introduced problematic risk scoring thresholds. Transactions queued for 45 minutes. Triage required five engineering teams across three geographies in a war room, digging through distributed traces and hunting through  logs. Eighteen engineer-hours on triage alone. Emergency rollback introduced its own downstream consistency risks. Financial impact: $2.5 billion in delayed settlements, approximately $150,000 in opportunity costs from potential client churn and manual interventions.

In a monolith, this would have been a straightforward debugging session. The invisible coordination cost turned a 15-minute fix into a multi-hour ordeal.

When Monoliths Outperform

In monolithic architectures with centralized code bases, one API can perform the same function that numerous APIs perform with microservices. Payment authorization flows in monolithic systems can complete in under 60 milliseconds. The "modernized" microservices equivalent? Often 300+ milliseconds. The difference: network hops adding latency and failure modes.

Amazon Prime Video moved their monitoring system back to a monolith after finding distributed components too expensive at scale. For workloads requiring tight coordination, monolithic architectures simply perform better.

Database Patterns That Break

Conference talks celebrate the Saga pattern: distributed transactions managed through choreographed local transactions with compensating rollbacks. In production, Saga participants commit changes to their databases, so data can't be rolled back. Compensating transactions might not succeed, leaving systems in inconsistent states.

The pattern treats states as binary (success/fail), but reality introduces "pending" limbo from external latencies. Compensators handling only internal state fail to coordinate with external providers. Without circuit breakers on compensators, chains proceed without retries for partial failures. When regulations demand immediate accuracy, eventual consistency becomes eventual liability.

The Hybrid Pattern That Actually Works

At JPMorgan in 2024, building the real-time merchant-acquiring platform for Chase Pay contactless payments, an eight-step transaction flow required atomicity: identity verification, BNPL credit check, inventory validation, inventory reservation, payment authorization, ledger recording, fulfillment triggering, and invoice generation.

A pure choreographed Saga across five services failed in the first week. What shipped instead: the "Fat Service + Thin Satellites" pattern.

Core atomic operations collapsed into a single bounded context called Payment Execution Service, deliberately "fat." It owned its own CockroachDB database with serializable isolation. Inventory reservation, payment authorization, ledger posting, fulfillment trigger, and invoice generation happened inside a single ACID transaction. Only truly independent, eventually-consistent concerns (customer auth, external BNPL credit checks) remained as separate services.

The orchestration became a small, two-phase mini-saga with only three participants. If the first two checks passed, Payment Execution Service ran the entire block inside one database transaction, returning either COMMITTED or REJECTED. Never a partial state.

Production results: end-to-end p95 latency dropped from 480ms to 165ms. Partial failures requiring manual intervention fell from 1 in 800 to 1 in 42,000. Mean time to resolution went from hours to minutes because 95% of the logic lived in one service with one database.

Observability as the Foundation

At JPMorgan, every payment flow carried a 128-bit Payment Correlation ID (PCID) generated at the edge and propagated everywhere: HTTP headers, Kafka message keys, gRPC metadata, database audit columns, even embedded in SWIFT and FedNow message identifiers. External partners were contractually required to echo it back.

The trace ID was made identical to the PCID. One click in the tracing tool revealed the entire 20-service waterfall for that exact payment. A "Payment 360" dashboard let engineers paste a PCID and instantly see latency breakdown per service, error rates, and Kafka lag on that exact key.

Result: triage time dropped 40%. The best engineers could debug a failed $500 million payment in under 15 minutes because the PCID gave them a perfect map of reality, no matter how distributed the system had become. The pattern: one ID to rule them all.

What Actually Works

Microservices aren't a default choice. They're a tradeoff made when specific constraints justify complexity. Start with a well-structured monolith. Extract services only when hitting real constraints. Keep the parts that must be atomic together in one service with one database and one team. Only peel off parts that are truly autonomous or have vastly different scaling or compliance needs.

Most organizations would benefit from 80% fewer services than they currently run. In payment systems, correctness and observability beat theoretical purity every time.

About the Author: Anath Bandhu Chatterjee builds scalable reliable fault tolerant distributed payment systems and cloud-native software architectures for some of the world's largest financial and technology companies. He has spent 15 years designing scalable distributed transactional systems across banking, payments, and telecommunications, with deep technical expertise in microservices, API development, and event-driven architectures. An AWS Certified Cloud Practitioner, he specializes in solutions deployed on AWS and Kubernetes environments.

Anath Bandhu Chatterjee is a Staff Software Engineer for one of the world's largest digital payment platforms

Hot Topics

The Latest

Cloud outages are usually described as technical failures. When a service goes down, a dependency breaks, or a region has issues, the focus immediately shifts to infrastructure. But if you look closely at how these incidents actually unfold, the root cause is rarely the technology itself. It is almost always tied to decisions made earlier, during design, implementation, or day-to-day operations. The system behaves the way it was built. The real question is how it was built ...

77% of leaders say their teams need AI skills urgently. 64% say their organization plans to train current employees rather than hire new ones. So far, so reasonable. The part that surprised me is who's been put in charge: 34% of those leaders say IT and engineering own the AI skills mandate. Learning and Development or HR own it at 7% of organizations. That's roughly five-to-one in favor of the people who understand the tools, over the people whose actual job is teaching adults how to learn new ones ...

In the ever-evolving digital landscape, enterprises are increasingly focused on enhancing their observability stacks to gain deeper insights into their IT environments. Observability has become a cornerstone of modern IT operations, enabling organizations to monitor, diagnose, and optimize their systems with unprecedented precision. However, a critical piece of the puzzle often goes unnoticed in this transformation: IBM i ...

We just surveyed 300 frontend and mobile engineers across 16 countries, and the finding that keeps sticking with me isn't the one about AI. It's this: 74% of engineering teams rate themselves in the "middle" of the observability maturity scale. Not reactive, not strategic. Stuck in the middle. They have dashboards, they have tracing, they have alerts. And yet when something goes wrong, they still can't tell you why ...

In MEAN TIME TO INSIGHT Episode 25, Shamus McGillicuddy, VP of Research, Network Infrastructure and Operations, at EMA discusses  AI's impact on the Wide Area Network (WAN) ... 

Application performance monitoring (APM) dashboards are only as useful as what they are configured to measure. The default setup covers obvious failure modes such as downtime, error spikes, and latency breaches, but it does not cover everything. Some failures produce no alerts or anomalies. The dashboard stays green while users experience a broken product. Here are six signs that is happening ...

The race to deploy AI is largely over. Most enterprises have entered it. The question now is not whether artificial intelligence is running inside the organization. The question is whether anyone is genuinely responsible for what it does. That is not a technical question. It is a leadership one. And most organizations are not yet structured to answer it honestly ...

A new analysis of 250 real-world queries across common retail tasks, such as product pricing, availability, ratings, shipping and specifications, reveals systemic inefficiency at the heart of web-based AI agents. On average, 97.9% of the data retrieved by agents from live web pages is irrelevant to the query being answered. Specifically, the average page ingested ran nearly 9,000 characters, while the average answer was just 32 characters, resulting in a noise-to-signal ratio of 278:1. Price queries were the most extreme outlier, with noise rates approaching 99.5%. That's not a rounding error. That's a structural problem ...

The enterprises that will define the next decade are not the ones that deployed the most technology. They are the ones who understood what their technology was actually doing. That distinction is not a philosophical point. It is the central operational challenge facing every organization that has spent the last five years modernizing at speed ...

AI is becoming the operating system of the enterprise. It acts as an invisible coordination layer that understands intent, connects systems, and executes work across complex SaaS environments. Previously, employees had to click through multiple systems — CRM, ERP, support tools, collaboration platforms — to complete a single task. Now, instead of navigating each application manually, they can simply state what they need to accomplish ...