What is our primary use case?
My main use case for
AWS Step Functions is in our data platform where we are trying to generate alerts. For generating the alerts, we are getting the data on a daily basis. This is mainly for the aviation sector. Once we get this data, we have multiple
Athena queries that are orchestrated using
AWS Step Functions. We have data that is segregated across multiple layers. AWS Step Functions help us execute those queries either in a parallel manner or in a map state, or one after the other. If a layer is completed, then it goes to the other layer. It orchestrates, and it also helps us with the catch state. If it faces an error, then we generate the alerts via webhooks or emails. AWS Step Functions sit as a core, which orchestrates all of these queries for us, and once we have the final data added up, we generate the alerts.
A specific example of a workflow where AWS Step Functions helped me orchestrate those Athena queries and generate alerts involves an aviation-based client for whom we are trying to get the data from the source and ingest it into our S3 bucket that is queried by Athena. This data pipeline is orchestrated via AWS Step Functions where we take these Athena queries again in an orchestrated state across multiple parallel layers or one after the other. In that way, AWS Step Functions help maintain a complete workflow that is work proof. It is robust in nature and helps us get the errors, so if any of the queries fail, our complete workflow, the state machine, completely comes to a halt and error notifications are generated. If not, it successfully completes and we then move on to the next step.
What is most valuable?
The best features AWS Step Functions offers include the ability to deploy it via code. It helps us orchestrate anything that we want. Even if we have Glue jobs for another use case or Lambda that we are currently looking forward to, we are using Lambda to take DynamoDB data for real-time sales monitoring, then it goes to our
S3 bucket. We have multiple workflows that are orchestrated by AWS Step Functions, and at the core, the main functionality is based on different frameworks. We have an Athena complete workflow, Glue job-based workflow, and a separate Lambda-based workflow. All of these are separately handled in AWS Step Functions. This is a good point and again with the inbuilt facilities of it, including how we can construct those workflows and add up a catch state or roll back or do multiple iterations using the Map state, that is very helpful for us.
The Map state feature has specifically helped my team create a rollback state of the data since we were dropping some of our data assets. In case we want them back, we just wanted to do this. We took a particular layer and provided the data list, including the tables list, and using the Map state, we iterated over this list and one by one we did the backups of this data at the concurrency of five tables in a single execution. The Catch state, on the other hand, allows us to identify any error immediately. If we encounter an error, the Catch state immediately picks it up and we integrated webhooks or email notifications. That is how we are able to identify immediately if we face any error.
At the core of our data engineering platform, AWS Step Functions sit at the topmost core of whatever pipelines we have. It is a main orchestration tool for us and helps us save costs. It is a key component of our engineering platform.
What needs improvement?
I think AWS Step Functions is good, but the UI in the console can be much more user-friendly. It gives three tabs on the same screen in a vertical manner. I would suggest providing a full-page diagram of your state machine. If you want to do anything else, you can just scroll down instead of having three sub-pages in the same direction vertically. Do not stack up in the same page view; rather keep it upside down, in a horizontal manner, or allow us to scroll through it.
For how long have I used the solution?
I have been using AWS Step Functions for about the last six months.
What do I think about the stability of the solution?
AWS Step Functions is stable.
What do I think about the scalability of the solution?
AWS Step Functions' scalability is quite good. We have workloads that may differ based on incoming data, and we did not face any lag or job failures because of AWS Step Functions.
How are customer service and support?
I have not interacted with customer support yet because we did not require any customer support since AWS Step Functions is a good service. We did not face any issues.
Which solution did I use previously and why did I switch?
From the beginning, we have used AWS Step Functions only.
How was the initial setup?
Regarding my experience with pricing, it is good. I believe it should be free. The setup cost was good for us. We just had to define our logic using the
AWS CDK, or now we are going with
Terraform, which makes it much easier. I think the licensing is already quite well with
AWS.
What was our ROI?
We have seen a return on investment in terms of time saved. If we want to maintain complex workflows, we can get a high-level overview of what we want to design quickly and then implement it via code using Python and deploy it via infrastructure as code using CDK or
Terraform to get a basic outline map of how we want to have it laid out in final production. The UI console helps significantly in saving time.
What's my experience with pricing, setup cost, and licensing?
AWS Step Functions helps us save costs as it is a self-managed service and is serverless. We look out for the inbuilt services that are orchestrated via AWS Step Functions, and we only pay for that. In that way, the orchestration service for us is basically free. What we pay for is the Athena queries that we have or the Lambda executions that we have. In that way, the orchestration cost is saved by us and we just pay for the main operations and the execution costs we incur.
Which other solutions did I evaluate?
We did not think about any other options before choosing AWS Step Functions because the architect who designed the whole data platform chose AWS Step Functions as the best option. The other consideration was
AWS Glue for orchestration, but the costs were relatively high.
What other advice do I have?
I rate AWS Step Functions a nine out of ten on a scale of one to ten. I chose a nine out of ten because it is basically everything that we are really looking for. It is a great service and a great asset to our operations. My advice to others looking into using AWS Step Functions is that it is a good tool, and I recommend it. We purchased AWS Step Functions through the
AWS Marketplace.
Regarding AWS Step Functions' AI capabilities, I think the governance and security are well-managed as we operate within a VPC and have security groups in place. In that way, we are secured in terms of data security and operational security. Governance is also preserved as we follow GDPR rules everywhere, and AWS Step Functions does not have anything built into it that serves us; rather the VPC helps in this aspect. We do not use the AI capabilities of AWS Step Functions. I rate AWS Step Functions a nine out of ten overall.