Temporal 102 with Go (102_go)

In this course, you will go beyond the basics of Temporal application development. You will acquire skills necessary to use Temporal throughout the full development lifecycle by learning how to test, debug, deploy, and update applications. You'll encounter several common problems faced by Temporal developers, understand why they occur, and how to identify, solve, and avoid them. Through heavy emphasis on key concepts and best practices, you'll gain a deeper understanding of how Temporal works and how to use it effectively.

When you've completed the course, you'll be able to:

- Apply Temporal best practices for application development
- Validate application behavior through automated testing
- Evaluate an Event History to debug problems with Workflow Execution
- Safely incorporate changes to Temporal Applications running in production


To be successful in this course, you should have an understanding of the fundamental concepts, tools, and techniques used to develop and execute basic Temporal applications with the Go SDK. This includes the ability to develop and execute Temporal Workflows and Activities, navigate the Web UI, configure and run a Worker, as well as an understanding of the high-level interactions between the Temporal Application and Temporal Cluster during Workflow Execution. We strongly recommend that you complete Temporal 101, which covers these topics, before starting this course.

Since code used in examples and exercises are written in Go, you must also have at least basic proficiency with the Go programming language.

Programming Language: Go

  • About this Course
  • Welcome
  • Format and Duration
  • Course Outcomes
  • Exercise Environment Orientation
  • (Optional Activity) Setting up a Local Development Environment
  • Course Conventions
  • Getting Help
  • Understanding Key Concepts in Temporal
  • Durable Execution System
  • Temporal Application Structure
  • Client-Server Communication in Temporal
  • Integrating Temporal into Other Applications
  • How Errors Affect Workflow Execution
  • Improving Your Temporal Application Code
  • Backwards-Compatible Evolution of Input Parameters and Return Values
  • Using Appropriate Timeouts
  • Choosing Names for Task Queues
  • Choosing Workflow IDs
  • Workflow ID Reuse Policy and Retention Period
  • Logging in Workflows and Activities
  • Accessing Results
  • Hands-On Exercise #1: Using Structs for Data
  • Using Timers in a Workflow Definition
  • What is a Timer?
  • Use Cases for Timers
  • Timer APIs Provided by the Go SDK
  • Pausing Workflow Execution for a Specified Duration
  • Running Code at a Specific Point in the Future
  • What Happens to a Timer if the Worker Crashes?
  • Hands-On Exercise #2: Observing Durable Execution
  • Testing Your Temporal Application Code
  • Unit Testing Primer for Go (Optional)
  • Validating Correctness of Temporal Application Code
  • Testing Activities
  • Testing Workflows
  • Mocking Activities for Workflow Tests
  • Hands-On Exercise #3: Testing the Translation Workflow
  • Understanding Event History
  • Workflow Execution Overview
  • How Workflow Code Maps to Commands
  • Overview of Event History
  • Event History Limits
  • Event Structure and Attributes
  • How Commands Map to Events
  • Workflow and Activity Task States
  • Sticky Execution
  • Debugging Workflow Execution
  • Debugging a Workflow that Does Not Progress
  • Interpreting Event History for Workflow Executions
  • Terminating a Workflow Execution with the Web UI
  • Identifying and Fixing a Bug in an Activity Definition
  • Hands-On Exercise #4: Debugging and Fixing an Activity Failure
  • Deploying Your Application to Production
  • The Deployment Landscape
  • Configuring a Temporal Client for Production
  • Overview of Temporal Application Deployment
  • Understanding Workflow Determinism
  • History Replay: How Temporal Provides Durable Execution
  • Why Temporal Requires Determinism for Workflows
  • Common Sources of Non-Determinism
  • Identifying Non-Deterministic Code through Static Analysis
  • How Workflow Changes Can Lead to Non-Deterministic Errors
  • Deployment Leads to Non-Deterministic Error
  • Using Workflow Reset to Recover from a Bad Deployment
  • Versioning Your Workflows
  • What is Workflow Versioning?
  • Identifying Open Executions by Workflow Type
  • Approaches for Safely Deploying Incompatible Changes
  • Versioning Workflows with the GetVersion API
  • Testing Backwards Compatibility of a Change
  • Hands-On Exercise #5: Versioning Workflows with the GetVersion API
  • Conclusion
  • Essential Points
  • Parting Words
  • For More Information
Completion rules
  • All units must be completed
  • Leads to a certificate with a duration: Forever