Replatforming to Scala Ecosystem
Apache Spark, Scala, Akka, PostgreSQL, Redis, ZooKeeper, Spray
ServiceSource partners with industry-leading companies to improve their recurring revenue performance. It has a very successful Renew On Demand platform, which allows Fortune 50 organizations to increase the rate of their renewals significantly. It allows a business to grow by delivering growth from an existing customer base, where Most businesses prioritize new customer acquisition. But creating customers for life means shifting your focus from the initial sale to post-sale engagement. If done correctly, 90% of customer revenue will come from renewals, cross-sells, and up-sells.
Service Source product “Renew On Demand” was already very successful and was being used by most fortune 50 clients. The problem was that the core system was built on node.js Though the current system could scale to the needs of the business, growth was impossible since the system was deployed on 100s of Amazon nodes. DevOps was a nightmare. Further interprocess communication between multiple node.js processes slowed down the system’s responsiveness. Multiple node.js processes were required to harness all cores on the machine. The platform required a daily restart in the wee hours to ensure stability.
Knoldus was approached to understand the current product and transform the product from node.js to the Scala ecosystem. We worked with the engineering team at Service Source to understand the pain points and converted the product to be cluster aware with Akka. The entire logic was ported to Scala, which allowed the product to run on the stable JVM. The big data analytics and the renewals strategy were implemented with Spark Streaming and machine learning. The services were distributed as microservices and were made available through REST endpoints. The final solution was running on a cluster of 23 nodes instead of 100s which were used earlier.
The devops operations for the product were reduced significantly. The Number of servers required to host the product came down a lot, thus translating into huge fixed cost savings. The stability and responsiveness of the product increased manifold. As per the current day data, the product is handling 3.2x the amount of data for which it was created and is still performing well.