It’s fairly difficult to explain what Temporal is, not necessarily because the product is so complex, but because the product means so many different things to so many different users.
In a nutshell, I’ve come to think of Temporal as a platform that engineers can turn to when they’ve pushed the limits of what they can build, run, and maintain themselves. To use an analogy, an electrician can do all the wiring in your home in a fairly sophisticated way, but if you’re trying to plan an entire state’s power grid, you need to bring in a different set of experts because the scale of problems is vastly different. Temporal is that expert for its users.
Most applications that we use on a regular basis involve different systems (defined as functional pieces of code) talking to each other to get us what we need. This sounds simple enough until we realize
- Systems are “dumb”. They have to be told exactly what to do in every single scenario
- Systems fail pretty often, they don’t always respond to inputs in expected ways
- Systems talking to each other isn’t as easy as humans talking to each other. Sometimes messages get lost, sometimes the call gets disconnected
- Systems have to service a lot of unpredictable human scenarios! Apps go viral, Black Friday sales, a crypto trading frenzy begins… with globalization these phenomena aren’t isolated to a single geography. This means being able to handle a hugely variable amount of traffic across the world
Most applications end up reaching this level of complexity fairly quickly if they’re even remotely successful. Engineers, could with some effort, design systems that address the issues I described but then the thought process might be something like:
“Solving these issues for complex systems isn’t unique to my application. I’m a really good electrician, but do I really want to think about the entire power grid? Sure, it would be fun and I would feel really accomplished, but should I spend my valuable time building a solution that isn’t directly relevant to my business?“
In the absence of viable solutions, engineers had no choice but to build all of this resilience into systems for their applications. But there are solutions out there today and in my biased opinion, Temporal is the best one đ
Temporal is a shield that can envelope all of an engineering team’s systems and make them durable, reliable, and scalable. In layman’s terms, the way this works is that engineers tell Temporal about a system that they have (through code) that needs to be failure-proof and foolproof. Temporal then does what it needs to do and builds layers of technology around the system to make sure that it is protected from failure. Because the Temporal solution is fairly generic, it is widely applicable to pretty much every application right from food delivery to database infrastructure.
I’ve abstracted away a ton of detail but I highly recommend reading the book âUnderstanding Distributed Systemsâ if youâre interested in learning more about these failure patterns. I’d encourage anyone who is interested in Temporalâs usage to look at the case studies with customers that the team has published. For those who can code, honestly, trying it is the best way to understand Temporal’s magic.