2013-05-26 116 views
2

我有点像AWS SWF的新手。仍在学习和记录阶段。只是想出一个愚蠢的问题。对于一个顺序工作流的用例,我们应该把所有的实现都放到一个大的活动中,而不是定义一系列由决策者按顺序执行的活动?由于工作流中的每项任务的收费为$ 0.000..25,这种方式将为大规模节省更多资金。适用于顺序活动的AWS SWF良好实践

对于这种用例,在保证序列工作流执行中声明一系列小活动有什么好处?

+0

如果您可以将所有内容放入单个活动中,请勿使用SWF。这没有任何意义。它提供给你什么?只需使用SQS或SNS,并节省一些头痛。如果您在完成工作流程时不打算做出决定,则使用SWF的复杂性只会浪费您的精力。 – xaxxon

+0

对于SQS,根据http://aws.amazon.com/sqs/faqs/,每条消息至少传递一次,因此可以提供重复,这在应用层可能不容易处理分布式/无单点故障的方式。 SNS本身使用推送系统,在所有情况下可能都不适合/可能。 –

回答

3

如果你的使用情况其实很简单,你可以宣布一个大的活动(什么是便宜的,因为你所说),但一般使用一组的小活动的好处是:

  • 你可以用不同的工作人员(通过不同的任务列表)运行特定的步骤(这些活动之一)和专门的资源。例如,您可以运行两个工作场:一个用于普通用途的“常规”场和一个用于计算密集型操作的“大型CPU”场;相同工作流执行的所有部分。
  • 根据您执行活动的方式(使用Flow或您自己的工作者运行时),您可以单独重试失败的活动。
  • 您可以独立版本您的活动,而不是整个工作流程的一个版本。
  • 如果工作流程发生变化,使用一组活动(工作流程的构建块之一)进行扩展或更新会更容易。
  • 如果将来您需要在工作流信号之后采取行动,您将很难将逻辑解耦以支持它。
  • 原子活动可能被其他工作流类型(甚至是相同的工作流程:例如,在工作流程开始和结束时发送电子邮件)重复使用。