Coupa Software Scales on Ruby and Rails

Coupa Software, which offers a cloud-based spend management platform, focuses on Ruby and Ruby on Rails as it supports $43 billion in spend through.

Coupa Software is big on the use of Ruby and Ruby on Rails for enterprise Web development, so much that it is pretty much all the company does.

San Mateo, Calif.-based Coupa is a spend management company, which means it helps companies control their indirect spending and generate savings by delivering such capabilities as e-procurement and expense management.

"We are a Ruby and Rails shop; we have been from the beginning," said David Williams, vice president of technology and founding engineer at Coupa, in a presentation at the company's headquarters. "That's pretty much all we do aside from the native code on our mobile applications and of course the JavaScript on the front end. But everything else is in Ruby. It's the core part of our business."

Coupa's Cloud Spend Optimization software-as-a-service (SaaS) product manages indirect purchases and expenses in real time. Built on Coupa's cloud architecture, it provides executive dashboards, alerts, expense management and real-time benchmarking in a single user interface. This spend optimization software suite focuses on three core spend areas, including procurement, accounts payable and expense management. Coupa is cloud-based and built on Amazon Web Services infrastructure.

Why did Coupa decide to focus on Ruby?

"When we started out we were quite small and all of us were coming from Oracle and we had a Java background," Williams explained. "We knew we wanted to build something modern, and Ruby was just so modern and it made us happy as developers. It meant that we could write much more concise code. It was a much better trade-off as to how much we could write how quickly. And especially in our business, where in enterprise software in general, you're not going to get a huge spike in users suddenly because you hit TechCrunch or something like that. You know how many users you're going to get. Your scaling problems are much more about the data and what you allow them to do.

"So for us it's a lot more valuable to be able to build out a lot more flexibility and configurability quickly than it is to be able to tune one thing to be very, very fast. But the way that Ruby makes us productive has been a wonderful boon for the company."

Ruby also helps Coupa solve one of the key problems of enterprise software in the cloud, which is how to support customization. Williams said in enterprise software, people have an expectation from big companies that they're able customize things to do exactly what they want. However, in the cloud it is difficult to support that gracefully.

"This means that we need to be as flexible as possible and support a lot of configuration and a lot of dynamic aspects to our product, but at the same time set some principles," Williams said. "And Ruby has been a really great way to make those compromises stick."

Coupa started out with Ruby 1.8.4 in 2006 and moved to the Enterprise Edition as it moved to Passenger as its application server. Beginning in mid-2011, Coupa started moving to version 1.9.3.

Now the company plans to move to Ruby 2.0 in 2014 and has a forward branch with some updates already in place.

Williams said Coupa is looking forward to a lot of the changes in 2.0, such as the updated garbage collector, as well as getting the "copy-on-write" semantics back that they had with Ruby Enterprise Edition, which reached end of life in 2012.