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.
Thanks for reading this far. If you found this article useful, I'd really appreciate it if you share this article so others can find it too! Thanks 😁 Also follow me on Twitter.
Got questions? Check out BoltOps.
You might also like
Kubes: Kubernetes Deployment Tool
Kubes is a Kubernetes Deployment Tool. It builds the docker image, creates the Kubernetes YAML, and runs kubectl apply. It automates the deployment process and saves you precious finger-typing energy.
Jets: The Ruby Serverless Framework
Ruby on Jets allows you to create and deploy serverless services with ease, and to seamlessly glue AWS services together with the most beautiful dynamic language: Ruby. It includes everything you need to build an API and deploy it to AWS Lambda. Jets leverages the power of Ruby to make serverless joyful for everyone.
Lono: The CloudFormation Framework
Building infrastructure-as-code is challenging. Lono makes it much easier and fun. It includes everything you need to manage and deploy infrastructure-as-code.