AWS Step Functions is a cloud service from Amazon Web Services that enables a developer to manage and visualize the components of distributed, multi-component applications.
Distributed and multi-component applications, such as those that consist of microservices, offer a number of benefits, such as improved scalability, the ability to prevent widespread application failure when an error occurs, and the flexibility to update or make changes to one software component without having to modify the entire application. But it can be difficult to manage the interaction between microservices, and AWS Step Functions aims to solve that problem.
The service includes a graphical interface that lets a developer map out and visualize application components -- also known as functions -- as a series of steps called a state machine. This enables the developer to add, change and coordinate application workflow components without code.
AWS Step Functions cam automatically trigger each step, which can be sequential, parallel, branching or time-based. A step can also represent a task, or unit or work. The service tracks each step in real time, enables retries in the case of a failure and logs execution history and errors. The service triggers tasks via the Step Functions application programming interface (API), which can be executed by resources such as an AWS Lambda function, CloudWatch event, Elastic Compute Cloud instance, container or a local server.
The AWS Step Functions service can be particularly helpful for serverless applications, as it visualizes interactions between Lambda functions to make them easier to manage.
A developer can write state machines in declarative JSON format. AWS Step Functions supports any programming language that interacts with its APIs, and a developer can use an AWS software development kit to write tasks.
AWS Step Functions also integrates with a variety of Amazon cloud services, including AWS Identity and Access Management to authenticate users and control access to Step Functions APIs.
An IT professional can access the service via the AWS Management Console. AWS Step Functions manages and scales the underlying infrastructure for the service.
An AWS customer pays for each state transition within the service -- a transition from one step of an application to the next step -- as well as the underlying resources the service uses.
AWS Step Functions vs. other services
Step Functions is similar to other AWS tools, but use cases slightly differ.
Amazon Simple Queue Service (SQS) provides a hosted queue that sends, stores and receives messages between services. SQS requires the user to track actions at the application layer, which might be across multiple queues, whereas Step Functions tracks tasks and events. Step Functions also offers more visibility and app-dev functionality than SQS, which is intended for more basic workflows.
AWS Step Functions is also similar to Amazon Simple Workflow Service (SWF), which provides control over app orchestration logic, but requires a developer to write what's called a decider program to separate activity steps from decider steps within an application workflow; this makes for a more complex developer experience. AWS says Step Functions, "provides a more productive and agile approach to coordinating application components" than SWF. But the SWF service can still be useful for developers that want to launch dependent subprocesses or require external signals for processes.
AWS Batch automatically scales infrastructure to complete batch computing workflows, but Step Functions helps design and manage the actual application. A developer can submit multiple AWS Batch jobs within a Step Functions workflow.