The Secret To PayPal’s Efficiency In Conducting Transactions Daily
PayPal has been a real revolution, in particular on the online business platform. The big question is: How did PayPal take a billion hits a day system that might traditionally run on a 100s of VMs and shrink it down to run on eight VMs? Many people have asked themselves how the transaction conglomerate business has managed to stay responsive even at 90 percent CPU.
PayPal recently moved to an actor model on Akka. Akka is an open-source toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the Java Virtual Machine (JVM). Various online companies use Akka while some use Erlang.
It is important to know what is wrong with the approaches of other VMs. A common problem is many services use small VMs and produce a very low throughput for each VM. On the other hand, actor-based reactive systems are very efficient when using computer systems. Therefore, you can shrink your system instead of relying on the auto-scaling monstrosity. Most VMs put a lot of pressure on routing infrastructure and network. Weight load on system leads to requests going through a lot of hops. In the end, there is increased latency and decreased user experience. Many VMs have high inherent costs regarding management and effective coaching. It takes a long time to install services across hundreds of VMs.
PayPal wanted a system that had low latency and was controllable at very fine grain. The company wanted a system that was resilient to failure, flexible in adjusting their service boundaries, and scalable horizontally and vertically. Horizontal scalability handles hundreds of nodes while vertical scalability handles many processors handling billions of requests a day.
PayPal wanted a thinner stack, one that did not have a lot of moving parts and layers. It is for that reason that they chose Akka over Erlang. Akka and state-based systems combine a good chunk of the stack in one technology. Moreover, Akka has more Java experience than Erlang. Akka has enabled PayPal to write codes that are easy to reason about and test. PayPal can also write faster, simpler, and resilient codes that have streamlined error handling. PayPal is also able to handle errors and failure scenarios more naturally than traditional models used on the JVM.