The Capital One Serverless Architecture for Peer-to-Peer Payments

U.S. bank Capital One has introduced a serverless architecture to help manage its peer-to-peer payments system. In the United States, banks and the Visa/MasterCard network have collaborated to provide a peer-to-peer payments network. Based on the Clear xChange network, Zelle is the bank industry’s competitive answer to Venmo and in its rebranded state has been around since the middle of 2017. Capital One is part of this effort.
While Zelle is available as a standalone app, it is also integrated into most U.S. banks’ mobile apps, so that customers from any bank can send money to a friend or relative with a phone number or email, much like they can in Paypal’s popular Venmo. According to the Tearsheet, peer-to-peer payments (P2P) is a huge and growing transaction market, Paypal’s Venmo reported $9.4 billion in transactions in the third quarter of 2017, while Zelle has processed over 60 million transactions, valued at a total of $17.5 billion.
Peer-to-peer payments are expected to grow and become a core offering from a variety of tech giants: Facebook, for example, could offer its own payments infrastructure on top of its platform as well as in its chat apps Messenger and WhatsApp.
At its core, P2P is a digital tech, which often leaves banks at a significant disadvantage in being able to build and provide a workable solution that integrates with its legacy stack.
Like many banks, Capital One struggled with a monolithic application that their Zelle system was meant to sit on top of, said Srini Uppalapati, vice president of retail and direct technology at Capital One, speaking at the recent Serverlessconf event in New York
“We had lots of legacy services on perm, which were large, clunky SOAP services with a new REST layer on top,” Uppalapati described. But in addition to the old school tech, their organizational infrastructure added to the complexity: “Ownership of data models belonged to different teams and different lines of business within the bank.”
Uppalapati said this created a number of challenges that would be familiar to any traditional enterprise: it took lots of time to ship new features because of shared data ownership, coordination was “a nightmare to manage,” any problems in implementing new features would require massive rollbacks, and teams had to do manual integration testing to release new features.
As a result, Capital One looked to serverless architecture design patterns to help overcome much of these challenges and to create a more instant payments service for customers.
Uppalapati pointed to a wide range of Amazon services that were used in combination with the Amazon Web Services’ Lambda to make the serverless architecture possible, including:
- RDS Aurora, using over 15 RDS Aurora instances
- Cloud front for website content
- Route 53 and elastic load balancer
- KMS for predefined keys for encryption and decryption of credentials for APIs
- Amazon ECS to run and manage Docker containers in Amazon EC2 instances
- Amazon Cloud Watch and Amazon Cloud Trail for metrics and monitoring.
Uppalapati described a typical workflow in the new serverless payments architecture, where reporting is required on the use of credit and debit cards to process Zelle payments.
That requires some checking of transaction data for whether those payments match the customer’s accounts and to process as part of the bank’s global finance work. Uppalapati walks through the process:
“CapitalOne receives file feeds from MasterCard and Visa. As these are received into Simple Storage Service [S3], CloudWatch looks through them and triggers Lambda to filter the data for analysts, then invokes a microservice to match transactions from Zelle, categorize them as either a match or mismatch or whether they should be sent to global finances.”
These separate lists are then added to a database, with Lambda triggering reports at a scheduled time each day, at a time when all the day’s processing is expected to have been completed. “This then creates three files: all matches, all mismatches, and all global finance resettlement, and Lambda puts those three files in an S3 bucket,” Uppalapati described. “Then Lambda queries the bucket, and makes it downloadable for registered associates. A proxy maps the input parameters and has a front-end for associates to be able to download or manually process the report data, for example, funds transfer.”
Other major serverless use cases include reporting and analytics systems, and Capital One’s open source project BeamlineJS, an open source CI/CD pipeline for Lambda functions.