
AWS Step Functions – Build Distributed Applications Using Visual Workflows - pradeepchhetri
https://aws.amazon.com/blogs/aws/new-aws-step-functions-build-distributed-applications-using-visual-workflows/
======
talawahdotnet
Nice. So this is basically a replacement for SWF (Simple Workflow Service)
that allows you to build the decision steps using a GUI/JSON and allows you to
execute tasks using either Lambda or the traditional activity pollers.
Building a multi-step workflow that handles branching, retries and failure
just got a lot easier.

I was hoping they would do something like this, working with SWF has always
felt unnecessarily complicated. The Java Flow Framework just felt like an
awkward abstraction to me, but this makes a lot more sense.

Combine this with their new AWS Batch service and I think people are going to
save countless man hours that would have otherwise been spent working on
repetitive, undifferentiated code.

~~~
cle
The Flow Framework is an abomination to engineering, and should die a pathetic
death. Liberal annotations, codegen, aspect weaving and bytecode manip,
requires a special JUnit test runner--it embodies all the aspects of the Java
culture that I despise.

I rather like the idea of SWF, but its API is too low-level, it has poor
tooling, and the workflow/activity versioning is awkward and makes the systems
too rigid. I am glad that AWS is moving to data-driven workflow definitions,
that means they can build much better operational tooling (like the GUI) to
manage and understand workflow executions.

------
mej10
Other than the examples, what kinds of interesting things could this be used
for? What are the advantages over writing code for the coordination?

~~~
talawahdotnet
Well similar to SWF it looks like they provide the infrastructure for tracking
the state changes and the input/output data at each step so you can:

    
    
      (1) Quickly get a visual overview of all your executions
    
      (2) See  how many workflows failed 
    
      (3) Drill down and see which specific step failed and the data that might have triggered the failure 
    
      (4) re-run specific workflows
    

It provides built in error handling, retries/backoff, and parallelization.
These are all things you could code yourself, but at some point you would have
built a workflow system. Not to mention that the infrastructure of the
workflow system itself is managed for you, so you don't have to worry about
that going down. You can write workflows that execute over days, weeks or
months and not worry about what happens if your server goes down.

It would also come in handy for mutli-language workflows. If your were
interacting with a variety of third party APIs that had SDKs in different
languages, you could quickly string together a Python Lambda, Java Lambda and
some .NET code that used the long polling API.

It would be nice if it integrated seamlessly with Cloudwatch and X-Ray to
provide a unified view of logging and tracing right from the same interface.

I also expect a more seamless integration with AWS Batch at some point. Could
be useful for chaining together multiple independently maintained batch
processes (video conversion, resizing, publish to youtube).

I personally use SWF for a 10 step e-commerce workflow that calls multiple
API. It works great, but I could have developed it much more quickly using
Step Functions if it were available at the time.

------
monksy
This sounds a lot like HP Operations Orchestration.

~~~
cle
I didn't know what that was, and went to HP's website to look it up.

> "IT process automation and run book software that improves service quality
> and customer satisfaction, and lowers costs by eliminating latency between
> silos, increasing first time right rate, enforcing standards, and delivering
> reports for ROI, audits and more."

Ugh, seriously HP? What a load of BS. What the hell does it do?

Compare that to the AWS description of Step Functions:

> "AWS Step Functions makes it easy to coordinate the components of
> distributed applications and microservices using visual workflows. Building
> applications from individual components that each perform a discrete
> function lets you scale and change applications quickly."

~~~
monksy
It's a wyswig way of doing integrations and orchestrating stuff. [was going to
say operations like start this vm, or provision this vm based on the template,
post cat meme to s3, etc]

This is what the studio client looks like:
[http://www.www8-hp.com/us/en/images/auto_oo_studio_ss_tcm245...](http://www.www8-hp.com/us/en/images/auto_oo_studio_ss_tcm245_1626213_tcm245_1626234_tcm245-1626213.jpg)

------
eva1984
Not useful. Those graphical programming interface all end up miserably. Don't
understand why people still trying to sell it.

~~~
mcphage
> Those graphical programming interface all end up miserably.

This is factually not true. There are a number of fields where graphical
programming interfaces have a long history of success.

