HeadlinesBriefing favicon HeadlinesBriefing.com

American Express Payment Architecture at Scale

ByteByteGo •
×

A customer making a card payment expects it to get approved or declined almost instantly. This single requirement shapes everything about how a payment is built, because the entire processing of the payment has to finish within this short window. We recently spoke with Ben Cane, a Distinguished Engineer at American Express, to understand how their platform handles it.

To understand how things work, let us picture what happens when a transaction arrives at American Express. It is routed into one of several independent processing units and moves through a chain of microservices. However, partway through, one of those services begins to fail, and the customer at the checkout terminal is still waiting. Just retrying the transaction inside the failing unit carries obvious risk. Also, moving the transaction to another server is an even harder problem.

The American Express engineering team handles this with a cell-based architecture that helps keep the impact of a disruption to a minimum. In our chat with the engineering team of American Express, we learned that most of the engineering effort goes into keeping that isolation intact under pressure. In a typical payment flow, American Express sits in the middle of a chain. A merchant holds a relationship with an acquiring bank that sends the transaction to American Express, and American Express delivers it to the card issuer that holds the account balance.

In 2018, American Express began modernizing this platform onto cloud-native infrastructure. Immediately, it was clear that one assumption had to change. While the older systems ran on hardware engineered to stay running, the cloud infrastructure behaved differently. The design ultimately chosen was driven by decades of internal thinking. Ben pointed out that back in the SOA era, the patterns were present even before the more formal term of cell-based architecture was coined. In a cell-based architecture, a cell is a complete, self-sufficient copy of the payment processing stack, including microservices, databases, DNS, and supporting infra.