Amazon Simple Workflow - Cloud-Based Workflow Management
aws.typepad.com
aws.typepad.com
New resolution: consider everything I do from a cloud based perspective.
My Experience: A few years ago I considered windows workflow and built my own simplified version for a project. WF tooling at that time was still evolving. The requirements were all over the place and I thought it might be prudent in this case to build something to expect the worst.
As Murphy usually does, the worst never came almost 5 years later. The workflow engine works well, and simply enough for a simple event based system. It's more of a routing system and I'm fine with it.
Where ASW catches my eye is the admin tools. Like most apps the admin tools are among the most complex parts of the app. In ASW, so far I'm recognizing a certain simplicity.. in a generalized sense for a workflow system.
If I tried to do the same in another workflow technology, I would almost certainly be running into more configuration upfront, and the admin tooling to create and manage workflows from a UI perspective would likely be either too basic or to overkill for what I needed.
That's the crux of generalizing a solution to a problem, it risks being so much bigger than we need that it adds overhead to what we were liking to simplify.
ASW initially strikes me as being much simpler. It could be useful to managing state simply across distributed applications, specifically in the cloud. Not sure how the pricing would work though, that seems like a lot of money to pay for logic gates and a state machine, but I could be trivializing.
Now.. just to think up a simple fun utility or project to try this out with.. :)
You have to sift through buzzword-filled ad copy and corporate-speak to find any explanation of what the product is or how to use it.
It has an arguably better feature set (including extensive transaction, correlation, failover, load balancing support), is extremely robust and can be deployed on EC2 or your own infrastructure (or both at the same time - you can scale your workers up on EC2 for example). The learning curve to do something useful is about 2 days.
It's pretty cool actually.
I've been researching/demoing App Fabric at my job for a few weeks now to possibly use for our new SOA layer, and that was the first thing I thought when I saw the SWF email from Amazon this morning. Of course anyone not working in IIS or Azure (ie Linux or AWS) would get no benefit out of App Fabric, and this could be an excellent alternative regardless (judging by the high quality of Amazon's other services I mean).
Why don't they hire a designer and awesome UX guy and fix their terrible interfaces?
I know most people use the API's, and I realise it's not really stifling their business, but I still don't see why a little more effort can't go there. I am sure there are a lot of people around the world that would be very happy for the console to have some more features and be a bit easier to use.
Look at this feature next to the AWS Storage Gateway, recently announced: these are features to get businesses using portions of AWS so that they demonstrate their reliability and cost effectiveness at a small scale. Once a business is comfortable dealing with Amazon then they provide compelling reasons to expand into more of their services (EBS booting + attaching Storage Gateway volumes to EC2 instances for braindead simple cloud compute migrations away from expensive, inflexible on-premises datacenters, SES, SQS, SNS integration with SWF, etc)
Never forget that Amazon is playing the long game.
Windows Azure (my former team) actually tried to do this with Azure Workflow Services several years ago, but that got killed around a year into it's existence.
You can have 8 workers each polling an Amazon SQS queue once a second for $19/month.
Having had huge problems with their queues (3 minute lags, spurious duplicates) I'm wary of Amazon's polling-based API. SWF's long-poll feature is smart versus SQS, however.
However, this isn't Workflow-with-a-capital-W. It's not even a state machine. SWF is actually a distributed-processing task queue with persistent state and execution history. Which is pretty cool.
Amazon you're starting to rule the world and its a bit scary...but for now i'm ok with it.
I've stayed away from RabbitMQ, or even something like ASW, while developing this project of mine because they're a lot of work to integrate, on their own. ASW looks awesome but it looks as though it'd take all of my focus to integrate it. It's something I wish I could use right now but don't think I'll be able to until I've finished most of my development.
I guess I'm just saying that ASW looks complex.