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

While organizations want to take control of their telemetry, building telemetry pipelines from scratch can be a very daunting, complicated task, even when leveraging open-source standards like OpenTelemetry. It requires specialized knowledge across distributed systems, data engineering, and security. This fragmented approach across systems causes higher operational costs; it puts a strain on resources and reduces efficiency as teams have to work with different interfaces and processes ...

For decades, enterprise networks were designed around a simple assumption: work happened inside the office. Applications lived in centralized data centers, employees connected through internal infrastructure, and security focused on protecting the perimeter that surrounded everything ... But the way organizations operate today bears little resemblance to that environment. Cloud platforms host critical applications, employees connect from homes and airports as often as they do from offices, and partners collaborate through shared systems that exist far beyond corporate walls. In short, the corporate network no longer resembles the environment it was designed to protect ...

As an analyst who researches how IT organizations design, build, and operate their networks, I find that network data is a constant source of pain. Network teams struggle with data quality, fragmentation, authority, access, and trust. And these issues undermine everything they try to do. Here are the numbers: Only 45% of network teams are completely confident in the accuracy of their network source of truth, which documents the intent of their network ...

The 2026 Global Data Center Survey from Uptime Institute reveals an industry navigating workforce constraints, escalating outage expenses, even as rising costs remain the top concern for management teams ...

The next observability gap may not be in the code. It may be under the rack. That sounds strange until you think about how AI incidents actually feel in the middle of an investigation ... The application dashboard may be accurate. It may also be stopping at the wrong boundary. AI systems depend on software, but they also depend on a dense physical stack: racks, power paths, thermal margin, maintenance activity and, in many environments, liquid cooling. Those physical dependencies can change slowly before they look like a software incident ...

Certificate expiration is the rare outage you can see coming. Every TLS certificate carries the date it stops working, so the moment it will begin breaking connections is knowable in advance. That's what makes an expired certificate such a frustrating way to lose a service. What's changing now is how often that date comes around ...

Enterprises operate different combinations of workloads across cloud, hybrid and multicloud environments. For business-critical workloads, teams need to consider monitoring and observability early so they can detect health issues, investigate failures, and understand operational impact. Organizations place workloads on cloud platforms based on a combination of technical requirements, economics, existing dependencies, organizational standards, and business priorities. Their monitoring priorities therefore depend on what they operate and where those systems run. Those priorities will not look the same for every organization ...

Top-performing businesses prioritize data-driven decision making, enabling leaders to move from intuition and gut feel towards evidence-based judgment. But that judgment is only sound when the data underpinning decisions is accurate. With incident management, data accuracy is particularly important. Long-term revenue, customer trust, and operational stability depend on high-quality data that enables teams to quickly identify and address the root cause of major incidents. Against this backdrop, governance becomes a critical endeavor to ensure the right data drives the right action ...

In MEAN TIME TO INSIGHT Episode 26, Shamus McGillicuddy, VP of Research, Network Infrastructure and Operations, at EMA discusses network compliance ... 

Most production autonomous agents do not run in a vacuum. They run inside cloud infrastructure: virtual machines, containers, pods, managed clusters or private servers. That is where most operations teams start monitoring. Is the VM alive? Is the container running? Did the pod restart? Is memory stable? Is CPU too high? Did the health check pass? Those signals are useful. They tell you whether the shell around the agent is alive. They do not tell you whether the agent inside is actually operational ...

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

While organizations want to take control of their telemetry, building telemetry pipelines from scratch can be a very daunting, complicated task, even when leveraging open-source standards like OpenTelemetry. It requires specialized knowledge across distributed systems, data engineering, and security. This fragmented approach across systems causes higher operational costs; it puts a strain on resources and reduces efficiency as teams have to work with different interfaces and processes ...

For decades, enterprise networks were designed around a simple assumption: work happened inside the office. Applications lived in centralized data centers, employees connected through internal infrastructure, and security focused on protecting the perimeter that surrounded everything ... But the way organizations operate today bears little resemblance to that environment. Cloud platforms host critical applications, employees connect from homes and airports as often as they do from offices, and partners collaborate through shared systems that exist far beyond corporate walls. In short, the corporate network no longer resembles the environment it was designed to protect ...

As an analyst who researches how IT organizations design, build, and operate their networks, I find that network data is a constant source of pain. Network teams struggle with data quality, fragmentation, authority, access, and trust. And these issues undermine everything they try to do. Here are the numbers: Only 45% of network teams are completely confident in the accuracy of their network source of truth, which documents the intent of their network ...

The 2026 Global Data Center Survey from Uptime Institute reveals an industry navigating workforce constraints, escalating outage expenses, even as rising costs remain the top concern for management teams ...

The next observability gap may not be in the code. It may be under the rack. That sounds strange until you think about how AI incidents actually feel in the middle of an investigation ... The application dashboard may be accurate. It may also be stopping at the wrong boundary. AI systems depend on software, but they also depend on a dense physical stack: racks, power paths, thermal margin, maintenance activity and, in many environments, liquid cooling. Those physical dependencies can change slowly before they look like a software incident ...

Certificate expiration is the rare outage you can see coming. Every TLS certificate carries the date it stops working, so the moment it will begin breaking connections is knowable in advance. That's what makes an expired certificate such a frustrating way to lose a service. What's changing now is how often that date comes around ...

Enterprises operate different combinations of workloads across cloud, hybrid and multicloud environments. For business-critical workloads, teams need to consider monitoring and observability early so they can detect health issues, investigate failures, and understand operational impact. Organizations place workloads on cloud platforms based on a combination of technical requirements, economics, existing dependencies, organizational standards, and business priorities. Their monitoring priorities therefore depend on what they operate and where those systems run. Those priorities will not look the same for every organization ...

Top-performing businesses prioritize data-driven decision making, enabling leaders to move from intuition and gut feel towards evidence-based judgment. But that judgment is only sound when the data underpinning decisions is accurate. With incident management, data accuracy is particularly important. Long-term revenue, customer trust, and operational stability depend on high-quality data that enables teams to quickly identify and address the root cause of major incidents. Against this backdrop, governance becomes a critical endeavor to ensure the right data drives the right action ...

In MEAN TIME TO INSIGHT Episode 26, Shamus McGillicuddy, VP of Research, Network Infrastructure and Operations, at EMA discusses network compliance ... 

Most production autonomous agents do not run in a vacuum. They run inside cloud infrastructure: virtual machines, containers, pods, managed clusters or private servers. That is where most operations teams start monitoring. Is the VM alive? Is the container running? Did the pod restart? Is memory stable? Is CPU too high? Did the health check pass? Those signals are useful. They tell you whether the shell around the agent is alive. They do not tell you whether the agent inside is actually operational ...