写点什么

AWS Step Functions 让您事事顺利

  • 2019-10-11
  • 本文字数:1436 字

    阅读完需:约 5 分钟

AWS Step Functions 让您事事顺利

我经常进行有关 Amazon 创新文化的演讲,通常,开场幻灯片都会引用 Amazon 创始人 Jeff Bezos 一句发人深省的话:



我喜欢和客户坐在一起,听他们讲述我们如何帮助他们释放了创造力,让他们能够追寻梦想。今年早些时候,我与可口可乐公司的 Patrick 聊天,想了解他们如何使用 AWS Step Functions 和其他 AWS 服务支持 Coke.com Vending Pass 计划。此计划包括,在支持使用可口可乐 Vending Pass 进行移动支付的自动贩售机上购买产品可以赢得饮品奖励。参与者可轻扫已启用 NFC 的手机,完成 Apple Pay 或 Android Pay 购买,同时向自动贩售机表明身份,并赢取积分,将来即可在自动贩售机上免费获得饮品


轻扫之后,SNS 主题和 AWS Lambda 函数的组合会对部分现有后端代码启动两次调用,以计算贩售点数并更新参与者的记录。遗憾的是,后端代码响应太慢,还有一些计时依赖性,从而导致漏掉更新,并有可能使 Vending Pass 参与者觉得很困惑。解决这个问题的最初方案非常简单:修改 Lambda 代码,在两次调用之间加入 90 秒延迟。这样确实可以解决问题,但平白消耗了处理时间 (对 Lambda 函数的使用计费取决于请求的持续时间,以 100 毫秒为间隔)。


为了使解决方案更加经济高效,团队转而使用 AWS Step Functions,并构建了非常简单的状态机。我在之前的一篇博文中介绍过,Step Functions 能够使用易于构建的可视化工作流,大规模协调分布式应用程序的组件和微服务。


可口可乐构建了非常简单的状态机来简化业务逻辑并降低成本。您的状态机也可以同样简单,还可以利用其他 Step Function 功能,例如顺序执行和并行执行,以及做出决策和选择备用状态的能力。可口可乐状态机如下图所示:



FirstState 和 SecondState 状态 (Task 状态) 会调用相应的 Lambda 函数,同时 Step Functions 会实施 90 秒的延迟 (Wait 状态)。这种修改可以简化逻辑并降低成本。下图说明了这些功能是如何结合在一起的:



下一步工作


首战告捷让他们进一步调研了无服务器计算,并打算在其他项目中进行应用。Patrick 告诉我,他们已经看到了工作效率的大幅提高,开发人员也很开心。开发人员不用再等待服务器进行预置,借用 Jeff 的话来说,他们现在可以释放创造力,追寻梦想。他们希望使用 Step Functions 改善应用程序的扩展能力、功能和可靠性,这已远远超出最初的可口可乐 Vending Pass 方面的用途。例如,可口可乐已使用 Lambda、Step Functions 和 API Gateway 构建了无服务器解决方案,用于向他们的食品服务合作伙伴发布营养信息。


Patrick 和他的团队现在正在试验机器学习和人工智能。他们构建了一个原型应用程序,用于分析 Instagram 的照片流,并提取品味和风味方面的趋势。这个应用程序是一天就构建完成的快速原型,利用了 Lambda、Amazon DynamoDB、Amazon API Gateway 和 Amazon Rekognition,用 Patrick 的话来说,这是一个“巨大的成功,将发挥重要作用”。


为了更快地构建无服务器应用程序,开发团队已在无服务器应用程序框架的基础上创建了内部 CI/CD 参考架构。这种架构包括无服务器导览,以及一些用于访问内部服务和资产的样板文件代码。Patrick 告诉我,他们使用这种模型可以轻松地将有前景的项目从“一人一电脑”扩展到整个开发团队。


Patrick 将参加 AWS re:Invent,在我的同事 Tim Bray 之后发表演说。要亲眼目睹他们的风采,请参加 SRV306 – 狂野状态机!客户如何使用 AWS Step Functions。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/things-go-better-with-step-functions/


2019-10-11 13:37967
用户头像

发布了 1853 篇内容, 共 119.8 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

如何使用 Amazon S3 多区域访问点提高多区域应用程序的性能速度和可用性

亚马逊云科技 (Amazon Web Services)

Amazon SageMaker Data Wrangler 简化数据准备过程,助力机器学习

亚马逊云科技 (Amazon Web Services)

存储

浅谈云上攻防——云服务器攻防矩阵

腾讯安全云鼎实验室

云原生 云上安全攻防

Office2021 和Microsoft 365分不清?这样选最划算

淋雨

Office 365

C++太难学,怎么破?这本书给你指点迷津!

图灵教育

c++ 编程 入门

应用营销策略知多少?

坚果

产品设计 1月月更

VuePress 博客优化之添加数据统计功能

冴羽

JavaScript Vue 前端 博客 vuepress

使用 Amazon Redshift ML 构建多分类模型

亚马逊云科技 (Amazon Web Services)

存储

【量化】量化交易入门系列4:经典的量化交易策略(下)

恒生LIGHT云社区

量化策略 量化投资 量化交易 量化

LabVIEW感兴趣区域分析(实战篇—1)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 感兴趣区域分析 ROI

workflow 之 Luigi 3.x 基本用法(qbit)

qbit

工作流 pipeline workflow 数据流

知乎基于Palo的用户画像和实时数仓构建实践

百度开发者中心

大数据

使用 esbuild 来打包一个 React 库

CRMEB

如何用建木CI构建/发布建木Hub节点定义版本

Jianmu

DevOps CI/CD 开源项目 发送邮件 检查系统服务

常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源

云智慧AIOps社区

安全 监控宝 监控工具 开源软件 运维管理

以搭建Vuepress文档为例,展示用VSCode来远程开发

为自己带盐

vscode 1月月更 远程开发

Redis 使用 List 实现消息队列有哪些利弊?

码哥字节

redis 消息队列 Redis 6.0 1月月更

敏捷真的是开发者的绊脚石吗?

LigaAI

敏捷开发

SphereEx 创始人张亮荣获『2021 年度海纳奖——分布式数据库十佳实践人物』

SphereEx

数据库 开源 ShardingSphere SphereEx 海纳奖

通用数据保护条例的监管下,你的数据湖“断舍离”了吗?

亚马逊云科技 (Amazon Web Services)

存储

青藤:业务迁移到容器云上的6个注意事项

青藤云安全

活动预告 | OpenMLDB Meetup No.1

第四范式开发者社区

人工智能 机器学习 开源

26个主流机器学习算法的实现,获4万好评,这本机器学习宝典终于来了!

图灵教育

机器学习 代码 公式

美容院CRM系统解决方案

低代码小观

CRM 客户关系管理 CRM系统 客户关系管理系统 企业管理工具

【网络安全】红蓝攻防:shellcode的分析

H

网络安全 WEB安全

如何利用Spot,成本与稳定同时兼得

jinjin

spot 热池 spotmax

龙蜥的朋友圈又大了!知名数据库产品服务商南大通用加入社区

OpenAnolis小助手

开源 社群

云原生训练营毕业总结

白开水又一杯

云原生

不听话的 Container

百瓶技术

flutter 布局与组件

手淘 Android 帧率采集与监控详解

阿里巴巴终端技术

android 性能优化 移动开发 客户端

全球最大规模中文跨模态生成模型文心ERNIE-ViLG来了!

百度大脑

人工智能

AWS Step Functions 让您事事顺利_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章