The new fr-tech APIs being built to support the iOS In-App donations flow outlined here and here requires the AppPaymentSessionStore data to be shared across all payment hosts to work as proposed. Otherwise, we'll run into issues if the first API call originates on a different backend host to the one hit during the second API call. More specifically, the second API call will fail as it won't find the session created during the first API call if it happens on a different backend host.
Currently, traffic received at payments.wikimedia.org is distributed across the four payments-wiki backend host servers and managed via standard load balancing.
As it stands, payments-wiki's general cache store is the ObjectCache::getLocalClusterInstance(), and that's currently configured to use APC as the backend on a per-host basis. To switch to a distributed cache shared across all payment hosts, we need to use Memcached as the backend. The good news is we do have a production Memcached cluster that we discovered buried in our puppet config, so to try this out, we need to update the payments-wiki config to use Memcached as the backend and see how that performs with our existing components using that cache storage, e.g. the IP Velocity filter. If nothing breaks, we should be good!