Scaling From $0 to $1 Trillion - Can You Scale While Keeping Your Tech Stack From Changing?
Every time I’m with a group of founders, young technologists, or IT leaders, a common question I get is, “How do I scale?”
Growing a startup is no easy feat. You don’t have to look very hard to find advice columns about the best ways to scale your energetic young business. But while there’s a lot of good advice around handling people and processes, one thing that often doesn’t get enough attention is just how challenging it can be to scale from a technology point of view.
Last year alone, we at Coupa integrated four acquisitions, tripled the microservices on our platform, and doubled our deployments. The number of lines of code we have doubles every two releases! To date, we’ve surpassed a trillion dollars in transactions processed. So, how do you scale a tech stack to meet this type of growth? While you’re never going to figure it all out in advance, we’ll share three lessons here that we’ve learned at Coupa that we believe will help others who are going through similar situations.
Lesson #1 – Be Transparent with Your Customers. You’ll Earn Their Trust.
Let’s go back a few years. We had made it through the early start-up phase and were starting to land some major global clients. While we had built a platform that was nimble and fast, we were truly tested when we had to on-board this “new breed” of data-hungry customers. I’m sure many of you can understand the significant uptick in the effort needed to operationally manage terabytes of data vs. gigabytes. Multiply that by another 1,000 and you are in petabyte land!
At first, we were hesitant to let our new customers know we were in uncharted territory. We responded in a manner similar to how many vendors respond today: we let a customer raise their concerns, we worked it through support and product teams, and we hoped the issue would be resolved in a timely manner. Guess what? That doesn’t always work.
We eventually recognized that the best path forward was having an open dialogue with our customers. Knowing they had deep expertise in handling large volume data sets, we went to these customers and asked them to collaborate with us – our engineering team with their engineering team – to improve our platform to handle their future data growth needs. To our surprise, our customers saw it as a strength, not a weakness, that we recognized the impending challenge and reached out for collaborative help to meet their growing requirements.
Lesson Learned #2 – Invest Early in Supplier Relationships. You Will Need Them.
We had a decade of experience on-boarding talent and getting them to work off the Coupa toolkit. What we weren’t fully prepared for was when we truly hit scale and in a matter of months we acquired some sizable companies.
After years of relying on back-office technology that was 100 percent built on cloud and 90 percent Mac/Apple machines, practically overnight we were faced with questions such as: How do we run data centers with hundreds of virtual machines? How do we effectively manage hundreds of new Windows machines? Who on the team can manage this?
For those who have faced such realities, you can appreciate that there is never an easy answer. There isn’t a magic wand or single tool that can fix everything. The solution requires hours of painstaking work decoupling layers, making sure connections don’t break, and bringing different teams together (more times than most anyone likes) to get a clear understanding of what’s going on under the covers.
We quickly recognized that everyone had to learn how to work with a broader stack, and we had to do it fast. While we’ve always prided ourselves on being able to always figure things out internally, at this scale we realized it wasn’t the best solution. It took us some time but, eventually, we found reliable and qualified vendors to help us with the transition.
In hindsight, we learned an important lesson: We could have responded faster by already having more vetted, trusted vendors in place to help as soon as we needed them.
Lesson Learned #3 – If You Don’t Experiment, You Risk Falling Behind.
While we encourage experimentation, we’ve traditionally been cautious in keeping our technology stack tight. This was good because it kept the core of our design architecture simple and performance fast. In hindsight, though, there were times when I think we should have taken advantage of newer technology sooner than we did.
One such example is with search. For years we were convinced we could stay on MySQL for our search needs. However, we were continually challenged to improve our search capabilities to keep delivering near real-time performance for our growing customers. It took us a while to accept that MySQL had limitations when managing and querying our increasingly large data sets. Querying several million rows of data is very different than querying 100,000 rows. We eventually looked at alternatives and deployed Elasticsearch because it’s very good at searching small data across a large data set.
Since then, as part of improving performance, we’ve been getting involved with newer technologies more quickly, including in the areas of in-memory processing, streaming, and artificial intelligence. The bottom line: while guarding performance, always stay open to integrating new tech into your stack.
Change is Inevitable, So Be Prepared for It
If you are fortunate enough to be an IT leader who gets into a young, growing company on its path to scale – and perhaps an IPO – the challenges never end. The more success and hyper-growth your company experiences, the more challenges you’ll face.
- Keep in mind that collaborating with customers can help you overcome challenges – approach customers with transparency and you’ll be surprised at the expertise offered.
- Invest early in developing the right supplier partnerships, so you are prepared to respond quickly when dis-continuous growth arrives.
- Don’t let the burden of maintaining the status quo keep you from evaluating and deploying new technology – build fast and iterate, yet be measured and cautious when bringing on new tools into your architecture.
Sometimes unexpected realities will arise that must be accepted and dealt with, demanding flexibility and the evolution of long-held principles, methodologies, and architectures. Don’t obsess over what might change. Instead, accept that change will occur and plan for it the best you can. Enjoy the journey of building the stack, the friendships you make, and the lifelong experience you will acquire while scaling to your trillion dollars!