Looking into AWS Step Functions. Here are some initial thoughts.

AWS Step Functions involves translating your logic into a declarative form. In this sense, it’s like CloudFormation. For some, the change in logical constructs can be a bit daunting at first. Here are some benefits and disadvantages.


  • Serverless: We do not have to manage the running of the source code. AWS step functions provides the infrastructure for it.
  • Visual nature: The state machine can be seen and is easy to understand. This is a big plus months later.
  • Native constructs: Some useful native constructs like re-try logic with exponential back-off.
  • Parallelization: You can parallelize the work declaratively. Procedural code is not hard to parallelize with threads, but it can be harder to debug later visually.


  • Learning curve: Must learn Amazon States Language. Additionally, you will need to learn other components that Step Functions builds on or uses: Lambda, Batch, ECS, CloudWatch, S3. Whatever the state machine uses for processing underneath is a part of the learning curve.
  • Declarative language: It can be harder to code with declarative mindset. We’ve been mostly taught procedural coding for years and it’s embedded into our thinking.
  • Tools: AWS has provided a great foundation to build on top of. Right now there doesn’t seem to be a lot of tools that wraps this foundation to make it even faster and easier to develop on.

Depending on how you like to think about problems, you might love or hate AWS Step Functions. After a while, you might come to appreciate the trade-offs.