Industry
Crypto
Use Case
Crypto
Company Size
250-2000
SDK
Go
Temporal
Self-Hosted
NOTE: This case study outlines Coinbase usage of the Cadence project, a precursor to Temporal.
Coinbase plays a significant role in the cryptocurrency ecosystem by providing accessible and reliable services for buying, selling, storing, and using digital assets. Its user-friendly interface, strong security measures, and compliance with regulatory standards have contributed to its widespread adoption among cryptocurrency enthusiasts and investors.
Primarily a technical platform, Coinbase operates with significant reliability and availability demands. Identifying crucial tools within their development stack becomes paramount, aiming not only to accelerate the delivery of new features but also to mitigate risks, particularly concerning their core transactional operations.
Coinbase handles millions of cryptocurrency transactions on a daily basis. For users, each transaction boils down to a simple outcome: either "succeeded" or "failed." However, behind the scenes, every transaction comprises a sequence of steps. To illustrate, here's a simplified example of a transaction's steps:
If all steps are successful, the transaction proceeds successfully. Conversely, if any step encounters a failure, the transaction cannot be deemed failed until the already executed steps are reverted. Traditionally, this rollback necessity is addressed using SAGA, a widely adopted pattern for managing rollbacks in distributed transactions.
Until recently Coinbase relied on a custom engine to handle this data integrity requirement. It was quite reliable and well-suited for SAGA support, but the team struggled to use the system for other domains. Each additional use case translated into a large amount of complex plumbing and developer work.
Coinbase quickly realized that they were going to need a flexible, general-purpose solution if they wanted a continued pace of scale and innovation.
The team researched a few alternatives; namely, Zeebe, and AWS Step Functions. The team quickly realized that both the Zeebe and AWS Step Functions were limiting as the development models forced them to predefine all of their possible execution paths. This meant that each step required one or more prebuilt DAGs to handle the potential failures. If your SAGA consists of a few simple steps, prebuilding DAGs might be feasible, but as complexity increases the overhead becomes enormous.
Temporal/Cadence enables users to handle failures programmatically and doesn't require upfront, unfriendly DAGs. It is developer-friendly and naturally allows for SAGA but is extendable.
The Coinbase team decided to use Temporal/Cadence and layed out a conservative, yet efficient migration path for the transactional application. They outlined a plan to shift each existing component into a Temporal/Cadence workflow and they relied on Coinbase’s existing open source deployment system to build containers for each new workflows and make them available via blue/green deployments. There was no change to their existing supply chain necessary and before long, the majority of existing workflows had been successfully migrated to Temporal/Cadence.
In the end, Development velocity has increased as developers can focus exclusively on writing code instead of maintaining a homegrown SAGA solution.
Temporal/Cadence has opened up use cases which weren’t even imaginable with the homegrown system.
Ready to learn why companies like Netflix, Doordash, and Stripe trust Temporal as their secure and scalable way to build and innovate?
Financial Services
Designing High Performance Financial Ledgers feat. Sagard