Before implementing Step Functions, we used a custom orchestration approach built with Python code,
DynamoDB, and
Batch. This approach involved writing imperative Python code to determine workflow steps, manually managing dependencies, and using DynamoDB as a job queue.