写点什么

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:371120
用户头像

发布了 1908 篇内容, 共 147.2 次阅读, 收获喜欢 81 次。

关注

评论

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

app架构师,10天拿到字节跳动安卓岗位offer,好文推荐

欢喜学安卓

android 程序员 面试 移动开发

女朋友问我:MySQL 事务与 MVCC 原理是怎样的?

一个优秀的废人

Java 数据库 事务隔离级别 事务 MVCC

泰山版震撼来袭!阿里巴巴Java面试参考权威指南四月版开源

Java架构追梦

Java 阿里巴巴 架构 面试

专访阿里巴巴研究员吴翰清:白帽子的网络安全世界观

五分钟学大数据

网络安全 采访

用WASM连接Rust与Python | Rust 学习笔记(三)

李大狗

Python rust 狗哥 Wasm

java数组打印的几种方式

Sakura

4月日更

企业如何做数字化转型?想要资产状况及时把控,它的作用至关重要!

一只数据鲸鱼

数据挖掘 数字化 数据可视化 资产管理

手把手教大家实现一个电子签名

麦洛

Java canvas

女朋友问我:什么是 MySQL 的全局锁、表锁、行锁?

一个优秀的废人

MySQL 数据库 锁机制 备份

Ubuntu 20.04 快捷键整理

TroyLiu

Linux ubuntu 效率 操作系统 快捷键

新一代容器,安全容器kata-container实践

ilinux

Kubernetes 容器

面试官关于线程池的这个问题把我问懵逼了。

why技术

面试 Jav 1 周年盛典

CTO 说要接入实时音视频 SDK,我到底该批多少预算?

融云 RongCloud

Flink中的状态编程

大数据技术指南

flink 4月日更

架构实战营模块1作业指导

华仔

#架构实战营

阿里P7手把手教你!系统学Android从零开始,内含福利

欢喜学安卓

android 程序员 面试 移动开发

面向K8s设计误区

阿里巴巴中间件

云计算 Kubernetes 容器 分布式

2021安擎昇腾AI服务器产品发布会在京成功举行

DT极客

五一高铁票难抢?用RPA机器人试试!

华为云开发者联盟

RPA

回顾过去,展望未来,我在 InfoQ 写作平台的一周年!

JackTian

程序员 个人总结 4月日更 1 周年盛典 InfoQ 写作平台 1 周年

那些打不垮你的,终究使你更强大

小天同学

读书 励志 个人感悟 4月日更

不为人知的网络编程(十二):彻底搞懂TCP协议层的KeepAlive保活机制

JackJiang

TCP 即时通讯 IM

MySQL权限管理实战!

Simon

MySQL 权限管理

重读《重构2》- 封装记录

顿晓

重构 4月日更

架构思维

无心

架构

这个GItHub上的Java项目开源了 2021最全的Java架构面试复习指南

比伯

Java 编程 架构 面试 程序人生

深入剖析共识性算法 Raft

vivo互联网技术

复制 选举 分布式协调 Leader Follower

技术干货 | 基于MindSpore更好的理解Focal Loss

华为云开发者联盟

损失函数 mindspore Focal Loss 图像物体检测 采样

[转] 程序员在工作中如何做好技术积累

小江

技术管理 架构师 自我思考 个人总结

华为云AI论文精读会2021第一期:高效语义分割模型Fast-SCNN分享

华为云开发者联盟

AI 华为云

Flink的基石

五分钟学大数据

flink 4月日更

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