47
AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营 Serverless 架构无处不在 何 鹏,AWS 解决方案架构师 Harris He, Solutions Architect, Amazon Web Services 2018 1 9 9 th Jan, 2018

Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

Embed Size (px)

Citation preview

Page 1: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

让 Serverless 架构无处不在

何 鹏,AWS 解决方案架构师Harris He, Solutions Architect, Amazon Web Services

2018 年 1 月 9 日9th Jan, 2018

Page 2: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

议程:

1. Serverless 技术和 Lambda 简介

2. 场景一:无服务器的 Web 应用

3. 场景二:自动化运维

4. 场景三:IoT 消息处理

5. 场景四:实时或批量处理大数据

6. 场景五:自动工作流

Page 3: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

计算架构的演化虚拟机(Virtual Machine)

抽象了物理机,看到的是多台虚拟的机器

需要配置管理存储、网络、操作系统等

数分钟启动,运行数周乃至数月

容器(Container)

抽象了操作系统,看到的是多套应用环境

需要配置管理应用环境

数秒钟启动,运行数小时乃至数天

无服务器(Serverless)

抽象了运行时环境,看到的是多个函数

指定所需内存大小,无需其他配置

随需启动,运行数秒乃至数分钟

EC2

ECS

Lambda

Page 4: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

AWS Lambda Amazon DynamoDB

Amazon SNS

Amazon API GatewayAmazon SQS

Amazon Kinesis

Amazon S3

Orchestration & State Management

API Proxy Messaging and Queues Streaming

Monitoring & Debugging

Compute Storage Database

AWS X-RayAWS Step Functions

Serverless 服务越来越丰富

Many others…

Page 5: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

什么是 AWS Lambda?

ServerServerless

能力规划

选择机型

自动扩展

负荷与性能监控

打补丁

性能调优

配置管理

容灾方案

访问控制

镜像与备份

Node.js

Python

Java

C#

• Code Only• 全托管• 高可用• 可扩展

Page 6: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

Lambda 事件驱动模式

Amazon

S3

Amazon

SNS

Amazon

Alexa

AWS

IoT

Amazon

DynamoDB

Amazon

Kinesis

非同步推送

同步推送

抓取流式数据

AWS Lambda

AWS Lambda

AWS Lambda

• 从事件源调用 Lambda 函数

• 基于资源的权限管理

• 并发执行

• Lambda 函数主动去抓取

• 当有新数据时开始执行

• 需要赋予Lambda相应的权限

非同步调用

同步调用

同步调用

Page 7: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

使用 Lambda 的好处

无需维护 天然高可用 自动扩展 按调用付费 安全可靠

Page 8: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

议程:

1. Serverless 技术和 Lambda 简介

2. 场景一:无服务器的 Web 应用

3. 场景二:自动化运维

4. 场景三:IoT 消息处理

5. 场景四:实时或批量处理大数据

6. 场景五:自动工作流

Page 9: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

无服务器的 Web 应用—架构

Data stored in

Amazon DynamoDB

Dynamic content in

AWS Lambda

Amazon API

Gateway

PC

Amazon

CloudFront

Amazon S3

Mobile

Page 10: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

无服务器的 Web 应用—安全

Amazon

API GatewayAWS

Lambda

Amazon

DynamoDB

Amazon

S3Amazon

CloudFront

• Bucket Policies

• ACLs

• OAI

• Geo-Restriction

• Signed Cookies

• Signed URLs

• DDOS

IAM

AuthZ

IAM

• Throttling

• Caching

• Usage Plans

Browser

Page 11: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

无服务器的 Web 应用—监控

Amazon

API GatewayAWS

Lambda

Amazon

DynamoDB

Amazon

S3Amazon

CloudFront• Access Logs in S3

Bucket• Access Logs in S3 Bucket

• CloudWatch Metrics-

https://aws.amazon.com/cl

oudfront/reporting/

logslogs

• Invocations

• Invocation Errors

• Duration

• Throttled

Invocations

• Latency

• Throughput

• Throttled Reqs

• Returned Bytes

• Latency

• Count

• Cache Hit/Miss

• 4XX/5XX Errors

Streams

BrowserCustom CloudWatch

Metrics & Alarms

Page 12: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

无服务器的 Web 应用—部署

AWS SAM (Serverless Application Model)

AWS

Lambda

Amazon API

Gateway

AWS

CloudFormationAmazon

S3

Amazon

DynamoDB

Package &

Deploy

Serverless

TemplateServerless

Template

w/ CodeUri

package deploy

CI/CD Tools

Page 13: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

议程:

1. Serverless 技术和 Lambda 简介

2. 场景一:无服务器的 Web 应用

3. 场景二:自动化运维

4. 场景三:IoT 消息处理

5. 场景四:实时或批量处理大数据

6. 场景五:自动工作流

Page 14: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

我们依然需要运维

为什么还需要运维?不是没有服务器了吗?

是的,您不再需要维护服务器了!

但是,您依然需要关心:

• 我的应用程序是否健康运行?

• 是否有大量的 API 调用失败?

• 用户访问延时怎么样,高吗?

• 数据库的读写性能是否正常?

• 。。。

Page 15: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

为什么需要自动化?

更加敏捷 提高质量

更多创新

增强稳定性

降低人力和时间成本减少人为失误

Page 16: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

为什么需要 Lambda?

因为 Lambda 是事件驱动的,对事件的响应近乎实时。

AWS Lambda

接近实时的响应事件

Page 17: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

一个自动化运维的例子

EC2

CloudTrail

CloudWatch

Events

~1 minute

Kinesis

Data Streams

Lambda

Kinesis

Data Firehose

SNS

Elasticsearch

事件源

事件目的地

当生产环境中的EC2被终止时发出通知

事件规则:StopInstances

使用ES+Kibana进行检索

Page 18: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

为什么要用 Kinesis Data Streams?

CloudWatch Events 就可以直接触发 Lambda,

为什么中间还要加上 Kinesis Data Streams 呢?

Kinesis

实时性:

• 收集、管理、分发实时数据流,并对事件作出及时的响应;

• 是实时数据处理解决方案的核心服务之一。

易用性:

• 丰富的 API 接口;

• 全托管的服务。

Kinesis 家族包括:

• Kinesis Data Streams:持续收集和存储每小时 TB 级别的网站点击、系统日志、金融交易等数据。

• Kinesis Data Firehose:将流式数据加载到 S3, RedShift, Elasticsearch等存储服务中。

• Kinesis Data Analytics:使用标准 SQL 语句对流式数据进行实时的查询。

• Kinesis Video Streams (NEW Launch!):从设备端持续收集和存储视频流,供媒体处理、机器学习、图像识别使用。

Page 19: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

为什么要用 Kinesis Data Streams?考虑以下场景:

场景 1:不使用 Kinesis Data Streams

Lambda 函数有 Bug,怎么办?

CloudWatch

Events

Lambda

CloudWatch

Events

LambdaKinesis

Data Streams

场景 2:使用 Kinesis Data Streams

所有的事件都缓存下来了,不怕丢!

Kinesis 和 Lambda 经常结伴而行,

随后的场景里会讲到更多实现细节。

Page 20: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

议程:

1. Serverless 技术和 Lambda 简介

2. 场景一:无服务器的 Web 应用

3. 场景二:自动化运维

4. 场景三:IoT 消息处理

5. 场景四:实时或批量处理大数据

6. 场景五:自动工作流

Page 21: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

IoT 消息处理—架构

AWS

IoTDevice

Amazon

DynamoDBAWS

Lambda 1

Customer

Application

Kinesis

Data StreamsAWS

Lambda 2

AWS

Lambda 3

Custom CloudWatch

Metrics & Alarms

Amazon

S3

Amazon

EMR

Amazon

Machine Learning

Page 22: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

处理同步呼叫

AWS

IoTDevice

Amazon

DynamoDBAWS

Lambda 1

Customer

Application

Page 23: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

同步呼叫的案例

Page 24: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

同步呼叫的案例

Page 25: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

实时处理 IoT 消息

AWS

IoTDevice

Amazon

DynamoDB

Kinesis

Data StreamsAWS

Lambda 2

Custom CloudWatch

Metrics & Alarms

Page 26: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

批处理 IoT 消息

AWS

IoTDevice

Kinesis

Data Streams

AWS

Lambda 3Amazon

S3

Amazon

EMR

Amazon

Machine Learning

Page 27: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

为什么要用 AWS IoT?

设备可以直接发消息给 Lambda 或者 Kinesis ,

为什么还要使用 IoT 服务呢?

AWS IoT 服务具有如下优势:

• 安全:基于 TLS 的加密链接、基于 X.509 证书的双向认证、基于 IAM 的权限管理;

• 高可用:设备网关支持数亿设备、数十亿消息;设备影子版本管理、缓存指令;

• 周边服务:与存储、大数据、机器学习等 AWS 服务天然集成,挖掘数据价值。

AWS

IoT

Page 28: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

议程:

1. Serverless 技术和 Lambda 简介

2. 场景一:无服务器的 Web 应用

3. 场景二:自动化运维

4. 场景三:IoT 消息处理

5. 场景四:实时或批量处理大数据

6. 场景五:自动工作流

Page 29: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

批量处理大数据

Page 30: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

传统的本地解决方案

On premise data center

NAS

DB

FTPIncoming

Files

• 每 10 分钟定时执行 Map 作业• 静态的 Hadoop 集群,批处理交易文件• 需要 24 * 5 的高可用

Page 31: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

面临的挑战

• 缺乏弹性按最大峰值配置 Hadoop 集群,50% 以上的时间都存在闲置资源。

• 维护成本高需要投入大量人力和时间,对服务器、中间件和应用程序进行维护。

• 数据可见性低受限于批处理的时间间隔。

Page 32: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

Serverless 解决方案

本地数据中心

NASFTP交易文件

合规性检查Lambda 集群

控制节点

消费者

S3

SQS

• 所有数据都存储在 S3 上。

• 消息队列负责缓存输入和输出的通知。

• 控制节点负责调用 Lambda 函数,并接收 Lambda 函数的处理结果。

• Lambda 函数负责执行合规性检查。

Page 33: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

带来的效果

• Lambda 按使用付费,节约了超过 50% 的成本。

• 文件复制到 S3 后,立即触发 Lambda 进行处理,

可在一分钟内看到检查结果,提高了数据可见性。

• Lambda 天然可扩展,不用担心计算能力不足。

即使在交易量是平时 3 倍以上的大日子里,也毫无压力。

• 大量使用托管服务(Lambda,SQS,S3,RDS),

基本上不需要管理基础设施。

Page 34: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

实时处理大数据

Kinesis

Data Streams

Lambda:

Stream ProcessorS3 / DynamoDB:

Final Output

Lambda:

Periodic Dump to S3 / DynamoDB

CloudWatch Events:

Trigger every x minutes

S3 / DynamoDB:

Intermediate Data

Lambda:

Scheduled Dispatcher

AWS

IoT

Device

Page 35: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

Kinesis 与 Lambda:如何协同工作?

Shard(分片):

• 一个流由一个或多个分片组成

• 写入:1K 记录/秒/片,1 MB/秒/片

• 读取:5 次/秒/片,2 MB/秒/片

• 流的总容量 = ∑ 分片¡ 的容量 (¡ = 1 … n)

• 根据输入数据速率的变化,可以增加或减少分片数量

Lambda 并发模型:

• 每个 Kinesis 分片对应一个 Lambda。

例:100 个分片,就有 100 个 Lambda 在并发运行。

• 当增加或减少分片数量的时候,Lambda 并发数量同时变化。

Page 36: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

Kinesis 与 Lambda:是否协同工作?

Page 37: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

Kinesis 与 Lambda:让他们协同工作

如果发现 Lambda 跟不上 Kinesis 的步伐,我们可以:

• 增加 Lambda 内存

• 优化 Lambda 程序

• 采用 Fan - out 模式Kinesis

Data Stream

Lambda:

DispatcherLambda:

Processors

• 增加了吞吐量,• 降低了延时,• 但是,破坏了时序性!

AWS

IoT

Device

Fan - out 模式

Page 38: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

议程:

1. Serverless 技术和 Lambda 简介

2. 场景一:无服务器的 Web 应用

3. 场景二:自动化运维

4. 场景三:IoT 消息处理

5. 场景四:实时或批量处理大数据

6. 场景五:自动工作流

Page 39: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

为什么需要自动化工作流?Lambda:

第一步:剪裁第二步:压缩第三步:打水印第四步:归档

用户上传图片

S3:

Source BucketS3:

Destination Bucket

Triggered on

PUTs

把所有任务都放到一个 Lambda 中完成,真的合适吗?

• 如果中间某个任务失败了怎么办?

• 考虑 Lambda 的限制:例如,最多只有五分钟的执行时间。

• 无法享受微服务的诸多好处:组织、开发、部署、可用性、性能

Page 40: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

λλ

λDBMS

λλ

λλ

λ

λ λ

λ

λ

Queue

大规模 Serverless 应用

Page 41: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

服务之间多种交互方式

“I want to sequence functions”

“I want to select functions based on data”

“I want to retry functions”

“I want try/catch/finally”

“I have code that runs for hours”

“I want to run functions in parallel”

Page 42: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

AWS Step Functions

Page 43: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

foodpanda 与 Step Functions

AWS Step Functions, we can easily change and iterate on the

application workflow of our food delivery service in order to

optimize operations and continually improve delivery times.

AWS Step Functions lets us dynamically scale the steps in our

food delivery algorithm so we can manage spikes in customer

orders and meet demand.

Mathias Nitzsche, CTO, foodpanda

Page 44: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

顺序处理的例子

Page 45: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

并行处理的例子

"Send for OCR": {

"Type": "Parallel",

"Next": "Pick result",

"Branches": [

{

"StartAt": "Prep1",

"States": {

"Prep1": {

"Type": "Pass",

"Result": { "inputList": [ "OCR Provider 1" ] },

"Next": "Go1"

},

"Go1": {

"Type": "Task",

"Resource": "arn:aws:lambda:eu-central-1:123456789012:function:StatesBot",

"End": true

}

}

Page 46: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

try / catch / finally 的例子

"Access Media": {

"Type": "Task",

"Resource": "arn:aws:lambda:eu-central-1:123456789012:function:FindMedia",

"TimeoutSeconds": 2,

"Next": "Graceful Exit",

"Retry": [

{

"ErrorEquals": [ "States.Timeout" ],

"IntervalSeconds": 2, "MaxAttempts": 2, "BackoffRate": 1.5

}

],

"Catch": [

{ "ErrorEquals": [ "States.ALL" ], "Next": "Clean Up" }

]

},

Page 47: Serverless 架构无处不在C# • Code Only • 全托管 • 高可用 • 可扩展 AWS中国(宁夏)区域由西云数据运营 AWS中国(北京)区域由光环新网运营

AWS中国(宁夏)区域由西云数据运营AWS中国(北京)区域由光环新网运营

Thank You!