Example #1: Redesigning our notification and announcement feature
Coupa’s applications require engineers to build notification and announcement features. Based on user requirements, we trigger these calls on each page load. For a few years after the notification and announcement feature was released, we monitored and measured its performance and usage, and we didn’t identify any critical issues. However, since continuous optimization is a key part of our product development lifecycle, we ultimately identified around 1.2 million calls per day with 90th percentile latency of 4,500 milliseconds. To us, this seemed like the perfect opportunity to innovate.
As we started carefully looking at customer usage patterns and how this feature was being used, we were able to redesign the notifications, changing the way these calls are accessed and triggered without impacting end users. So, instead of making calls on each page load, we made on-demand calls that were triggered by user actions. We also used AWS Redis Cache to cache certain data for faster retrieval without invoking database calls. This continuous optimization had mind-blowing results, reducing 1,200,000 API calls per day to 150,000 calls per day along with a decrease in response time from 4,500 milliseconds to 200 milliseconds. That’s an 87% reduction in calls and 95% reduction in response time!
By invoking our core value to focus on results, we were able to strive for excellence and ensure customer success by creating faster calls, which made their overall experience faster and more productive.
Below are two graphical representations of our work, the first showing the throughput before and after the optimization, and the second showing the latency.
Example #2: Implementing a Database Column Alert
Another example of a successful optimization was the implementation of our Database Column Alert framework, embedded within our product development lifecycle, which provides upfront information on capacity of each database column and generates alerts to act on. Engineers have observed many times that applications would break due to database columns reaching their limits, resulting in application downtime and loss of unrecoverable customer data during that downtime.
In some cases, recovering from this downtime ranges from a couple of hours to days depending on the size of data. This impact can result in huge financial loss to both the customer and to Coupa while processing millions of transactions per day. Our Engineering team knows that to ensure customer success, we have to take proactive measures to identify critical issues up front and avoid downtime and financial losses.
Above are just a few of our many success stories that highlight how our core values impact the decisions our Engineering team makes on a daily basis throughout the product development lifecycle.
Coupa Software Inc. All Rights Reserved