AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

如何破越发展 to B 市场亏损越多问题?

风铃架构日知录

互联网 程序人生 后端 IT tob产品

设计千万级学生管理系统的考试试卷存储方案 - 模块四

Geek_e5f2e5

【架构设计】你真的理解软件设计中的SOLID原则吗?

小小怪下士

Java 程序员 架构设计

总结一下经典机器学习算法

风铃架构日知录

Java 程序人生 算法 后端 IT

Alluxio 2022技术干货年终大赏

Alluxio

大数据 分布式 案例 Alluxio 数据编排

兼容东西,贯通南北:超聚变的“四水归堂”

脑极体

科技 算力 超聚变

2022年终总结:今年学完的付费课程

石云升

学习 知识付费 年终总结 1月月更

Date & Time组件(上)

芯动大师

Android Studio DATE类型 time

WEB开发人员应该知道 10 个 Docker 命令

devpoint

Docker 前端开发 docker image Docker 镜像

Tapdata Cloud 场景通关系列:将数据导入阿里云 Tablestore,获得毫秒级在线查询和检索能力

tapdata

tinyrpc源码阅读

骑牛上青山

golang 源码 RPC

模块9毕业设计项目

冷夫冲

架构设计实战

一个比一个牛皮的5个杨辉三角特性!

风铃架构日知录

Java 程序员 算法 IT 杨辉三角

架构训练营第10期模块四作业

Geek_4db2d5

非常实用的代码阅读策略!

风铃架构日知录

Java 程序员 后端 IT 代码

详解ThreadLocal

threedayman

Tapdata Cloud 场景通关系列:数据入湖仓之 MySQL → Doris,极简架构,更实时、更简便

tapdata

photozoompro2023下载激活教程

茶色酒

PhotoZoom photozoompro

Tapdata 杨庆麟:实时数据如何赋能制造业,实现业务卓越与持续发展?

tapdata

GEAR框架: Tractian的敏捷工程文化

俞凡

敏捷 大厂实践

模块九-设计电商秒杀系统

李某人

架构训练营

2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防

福大大架构师每日一题

算法 rust Solidity 福大大

【架构设计】你真的理解软件设计中的SOLID原则吗?

JAVA旭阳

Java 架构

Pytorch 基础-tensor 数据结构

嵌入式视觉

Tensor ndarray 张量的基本操作 view函数 reshape

【Redis实战专题】「性能监控系列」全方位探索Redis的性能监控以及优化指南

码界西柚

redis监控 Redis优化 redis性能

David Murray 加入 VeraViews 担任需求总监

鳄鱼视界

架构训练营-模块三作业

Sam

架构实战营

SAP 交货单与HU指派关系数据不一致问题的解决方案

SAP虾客

SAP 公司间STO 外向交货单 HU DEBUG改表

系统风险处置

agnostic

风险系统 业务风险 操作风险

天翼云第八代云主机助力企业攻克上云“大象流”加密处理业务难题

极客天地

PyCharm创建Jupyter Notebook

IT蜗壳-Tango

Python

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