We signed up a new customer for our SAAS application. The challenge was this customer’s requirements were much bigger than any of the existing customers that we were handling. To give you an idea, we had a business engine part of our application and it’s current TPR (Transaction Processing rate or through put rate). Our current TPR was 8 transactions per second.
Step 1 – Parallel Threads
While studying specific transactions we could find out that bunch of transactions could be processed parallelly. So encapsulated the business logic in threads and made thread count configurable. We deployed our engine on a 64 core processor and then played around with multiple thread count. We found out that the best performance and through put rate was achieved at thread count of 40. We could increase our through put rate 8 TPS to 100 TPS. 12 times improvement in performance. But it was still not enough for the humongous data processing requirements of our new client. This is vertical scaling and we hit the potential limits of vertical scaling.
Step 2 – Adding more machines
With one 64 core server we were getting a TPR of 100 TPS. We introduced a messaging bus layer between client and our business engine. And we added 8 more nodes. Each node could potentially subscribe and consume messages (queue per server). This way we could increase TPS from 100 to 600 TPS. Now 72 times improvement in performance. This time we were now in comfortable position since client’s requirement was around 300 TPS.
We are sorry that this post was not useful for you!
Let us improve this post!
Tell us how we can improve this post?