Our Summer Intern Programme isn't just any work experience opportunity. Dojo interns are at the heart of major projects, making a real impact in our engineering teams to help build the tools to help our customers thrive.

For Emma Conteh, a Software Engineer intern, this was especially true. Her intern project revolved around using open source platform, Temporal Engine. Read on to find her notes and learnings from a summer on the job at Dojo.

What is Temporal Engine?

Temporal is an open source execution engine that divides services into workflows and activities. Temporal promises durable execution through use of features such as automatic retries, rollbacks and timeouts.

As part of my intern project this summer, I have been using Temporal to attempt to increase the scalability and failure handling of the current terminal ordering system. The goal has been to leverage Temporal’s capabilities to handle failures more gracefully and ensure scalability as Dojo grows into new markets.

Given that Dojo serves over 100,000 customers, it’s crucial that our terminal order management system operates with the highest level of efficiency and reliability, whether a customer is placing their first order, requesting additional devices, or ordering replacements.

Benefits:

Temporal allows for failed workflows and activities to be automatically retried. This ensures that transient errors don’t derail the entire workflow. Similarly, Temporal keeps track of the state of a workflow or activity allowing a process to resume if your system crashes or restarts. This is particularly important for a terminal order management system, where any failed orders need to be retried immediately without waiting for engineer intervention or for a third-party service to recover from downtime.

Temporal can be written in and surrounded by multiple programming languages, including .NET/C#, Java, Python and Go. The Temporal website has extensive documentation and an active community, which is invaluable when you are learning and troubleshooting.

Drawbacks:

Temporal comes with a steep learning curve. Understanding its core concepts, such as workflows, activities, and task queues, can be challenging, especially for those new to distributed systems.

Temporal’s power lies in its ability to handle a sequence of tasks in a complicated chain. For a long running process, like an order processing system that requires a high fault tolerance, Temporal was very useful. However for simpler services and applications, there may be no huge benefit in grappling with it.

DrawbacksWhat would be the best use case for Temporal?

As mentioned above, Temporal is really great for broad applications where many services need to be coordinated under one workflow. With features like automatic retries, rollbacks, and state persistence, it can execute a series of tasks without much intervention. So for complex problems, it’s a really good fit!

My Learnings

Having never used Temporal before, I was initially uncertain about how well it would fit into Dojo’s existing systems. However after working with it, I am impressed by its ability to manage complicated workflows and maintain its state after failures occur.

One of the key takeaways from my experience is the value of reliability and scalability in a complex system. Temporal allows us to create services that are not only robust but also capable of scaling as demand grows. This has a direct application to improving Dojo products by enabling us to streamline and automate various processes that may require manual intervention or custom error handling logic.

Want to know more about Life at Dojo?

Find more about culture at Dojo here.

Dojo is a trading name of Paymentsense Limited. Copyright ©2021 Paymentsense Limited. All rights reserved. Paymentsense Limited is authorised and regulated by the Financial Conduct Authority (FCA FRN 738728) and under the Electronic Money Regulations 2011 (FCA FRN 900925) for the issuing of electronic money and provision of payment services.