Temporal: the promise of more resilient applications
I met the founders of Temporal, Maxim Fateev and Samar Abbas, a few months before I joined Sequoia. They had just left Uber, and had raised their seed funding. Because of my product marketing experience, some friends at Sequoia asked me to help the founders iterate on their messaging — particularly for non-technical audiences. Some of the initial taglines for Temporal were “fault oblivious code — it does not know failure” and “stateful workflow engine.” Over the past year, we have come a long way: not only in terms of how we are telling our story but, more importantly, in product maturity and customer traction. Temporal holds tremendous promise to improve every user’s daily interactions with software.
As consumers, each of us has come to accept that many applications and websites we use on a regular basis will periodically fail and throw inscrutable error messages at us, like “internal server error” or “we are experiencing technical difficulties, check back later.” For example, I was trying to check in for a United flight, and this is what happened to me.
For consumers that means frustration and wasted time, but for the company it means missed revenue and dissatisfied customers. Such computer errors are not happening because the software engineers who wrote these apps didn’t know better; these errors occur because creating software applications that handle failures gracefully is a very complex and time consuming engineering problem. The challenge is exacerbated by the fact that modern apps typically consist of myriads of interconnected services (so called microservices), and each one of them is a potential failure point. Microservice architectures took hold in software teams because they allowed engineers to decompose really big problems or task into smaller pieces. Chopping up previously monolithic software architectures allowed different software teams to innovate faster, and the same component can be re-used for many different purposes.
But, as is often the case, a solution to one problem can introduce new problems. In the brave new world of microservices, every customer interaction (like me checking in for that United flight) requires coordination across many services. I have no knowledge of the backend of United’s online check-in application, but I would venture to guess that the reservations system, the plane seat map, and the mileage accrual are all separate “services” that need to coordinate in order for me to check-in. And any step within that check-in flow can fail for a discrete number of reasons. Today, developers are forced to anticipate all failure scenarios and corner cases, and they spend a lot of time writing “glue code” from scratch in order to handle these innumerable failure modes.
That’s where Temporal comes in: the company has created a groundbreaking technology that enables any software application to handle failures gracefully and in a user-friendly way. If United were using Temporal, their application would have simply emailed me the boarding pass once the underlying service was back up and running (rather than throwing inscrutable computer jargon at me). With the Temporal microservice orchestration platform, you can say goodbye to business disruptions caused by application failures; not only do your software developers save time and effort, but your business gains efficiency and improved customer satisfaction.
During the due diligence for the Temporal Series A, I had a chance to speak with more than 20 early adopters, and the kind of enthusiasm and customer love I sensed reminded me very much of my time at VMware. In the year we have been working together, companies like Box, Snap and Coinbase have all implemented Temporal as a core part of their infrastructure.
It has been an honor to be part of the Temporal journey so far. And we are only getting started!