PowerPoint Presentation

Similar documents
PowerPoint Presentation

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

ABOUT ME AGENDA 唐建法 / TJ MongoDB 高级方案架构师 MongoDB 中文社区联合发起人 Spark 介绍 Spark 和 MongoDB 案例演示

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005

PowerPoint 演示文稿

P4i45GL_GV-R50-CN.p65

PowerPoint 演示文稿

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

PowerPoint 演示文稿

ebook140-9

Azure_s

Cloudy computing forEducation

PowerPoint Presentation

untitled

支付宝2011年 IT资产与费用预算

2005 3

Oracle 4

Microsoft PowerPoint - Aqua-Sim.pptx

<4D F736F F F696E74202D FC2B2B3F85FA44AAB49B0BBB4FABB50B977A8BEA874B2CEC2B2A4B6BB50C0B3A5CE2E707074>

Value Chain ~ (E-Business RD / Pre-Sales / Consultant) APS, Advanc

% ~ AAA

2 SGML, XML Document Traditional WYSIWYG Document Content Presentation Content Presentation Structure Structure? XML/SGML 3 2 SGML SGML Standard Gener

epub83-1

C3_ppt.PDF

数据分析技术介绍

Simulator By SunLingxi 2003

ebook 132-6


ext-web-auth-wlc.pdf

第 06 期 李祥池 : 基于 ELK 和 Spark Streaming 的日志分析系统设计与实现 1 日志 1.1 日志定义 IT 1.2 日志处理方案演进 v1.0 v2.0 Hadoop Storm Spark Hadoop/Storm/Spark v3.0 TB Splunk ELK SI

NT 4

epub 61-2

PowerPoint Presentation

PowerPoint Presentation

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

ebook140-8

PowerPoint Presentation

第 02 期 1 医 疗 信 息 现 状 20% EMR Electronic Medical Record HIS HIS [1-2] 张 肖 等 : 基 于 大 数 据 的 医 疗 健 康 创 新 应 用 2 大 数 据 环 境 下 医 疗 数 据 特 征 分 析 PC [3]

PowerPoint 演示文稿

PowerPoint Presentation

IP505SM_manual_cn.doc

Connected Intelligence:ビッグデータ技術を活用したIT運用

Microsoft Word - ORA doc

Basic System Administration

TopTest_Adminstrator.doc

RUN_PC連載_12_.doc

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Microsoft PowerPoint - Big Data rc Sharing掃盲時間.ppt [相容模式]

untitled

<4D F736F F F696E74202D20504D C4EABBE1D6F7BDB22DCDA8B9FDD7C9D1AFC0E0CFEEC4BFB9DCC0EDCAB5CFD6D6B0D2B5CCE1C9FD2DCDF5C0DA2D504D D41C3C0B9FAD7A2B2E1B9DCC0EDBBE1BCC6CAA65BCCE1BDBBB8E55D202E B436F6D706

weblogic

F4

Free and Open Source Software for Geospatial(FOSS4G) Conference

背 景 概 述 企 业 需 要 一 种 灵 活 的 平 台 来 快 速 构 建 测 试 和 扩 展 新 的 应 用 程 序 服 务 并 对 市 场 中 发 生 的 数 字 化 变 革 作 出 反 应 数 字 化 变 革 正 在 加 快 步 伐, 因 为 流 程 和 信 息 的 日 益 融 合 带 来

SHIMPO_表1-表4

SHIMPO_表1-表4

ebook 145-6

Junos Pulse Mobile Security R1 2012, Juniper Networks, Inc.

业 务 与 运 营 Business & Operation (Transform) 加 载 (Load) 至 目 的 端 的 过 程, 该 部 分 在 数 据 挖 掘 和 分 析 过 程 中 为 最 基 础 的 一 部 分 一 个 良 好 的 ETL 系 统 应 该 有 以 下 几 个 功 能 1

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop..

Chapter #

基于ECO的UML模型驱动的数据库应用开发1.doc

BYOD Http Redirect convergence Client (1) 2008R2 NLB( ) (2) NLB Unicast mode switch flooding (arp ) NLB DNS Redirect 1. Round-Robin DNS DNS IP/DNS Cli

AWS Deck Template

2014 年 12 月 总 第 214 期 网 络 商 道 晓 通 网 络 独 家 包 销 思 科 ASA5505/ASA5515 系 列 低 端 安 全 产 品 强 强 联 手 共 创 云 平 台 8 城 市 视 频 会 议 成 功 举 办 互 联 网 发 展 时 代 思 科 智 能

PowerPoint Presentation

PowerPoint 演示文稿

PL600 IPPBX 用户手册_V2.0_.doc

Microsoft PowerPoint - 数据通信-ch1.ppt

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

untitled

目錄... ivv...vii Chapter DETECT

第一章 Linux與網路資源


一.NETGEAR VPN防火墙产品介绍

深入理解otter

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21


WWW PHP

HOL-CHG-1695

SiteView技术白皮书

13 A DSS B DSS C DSS D DSS A. B. C. CPU D. 15 A B Cache C Cache D L0 L1 L2 Cache 16 SMP A B. C D 17 A B. C D A B - C - D

SL2511 SR Plus 操作手冊_單面.doc

...1 What?...2 Why?...3 How? ( ) IEEE / 23

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

培 训 机 构 介 绍 中 科 普 开 是 国 内 首 家 致 力 于 IT 新 技 术 领 域 的 领 航 者, 专 注 于 云 计 算 大 数 据 物 联 网 移 动 互 联 网 技 术 的 培 训, 也 是 国 内 第 一 家 开 展 Hadoop 云 计 算 的 培

CH01.indd

RUN_PC連載_10_.doc

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

次世代のITインフラ“Compute”を先取り!HPが統合型アプライアンス「HP ConvergedSystem」を推進する理由

HCD0174_2008

自动化接口

致理技術學院資訊管理學系專題企劃書格式建議書

Progress Report of BESIII Slow Control Software Development

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

常 见 问 题 SLB 产 品 和 业 务 限 制 SLB 产 品 限 制 SLB 产 品 和 业 务 限 制 限 制 项 普 通 用 户 限 制 描 述 例 外 申 请 方 式 ( 例 外 上 限 ) 创 建 SLB 实 例 的 财 务 限 制 账 户 余 额 大 于 等 于 100 元 现 金

SDS 1.3

PowerPoint Presentation

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

股票代码:600654

Transcription:

无服务器架构设计模式和最佳实践 Serverless Architectural Patterns and Best Practices 李磊, AWS 解决方案架构师 Leon Li, Solutions Architect, Web Services 2017 年 9 月 26 日 Sep 26, 2017

议程 无服务器架构的特征和实践经典的三层架构批处理流式处理自动化处理中的无服务器应用 BMC 无服务器架构的经验

AWS 所提供的服务类型 On EC2 Managed Serverless EC2 EMR Elasticsearch Service AWS Lambda Cognito Kinesis Microsoft SQL Server ElastiCache RDS Redshift S3 API Gateway DynamoDB CloudWatch SQS AWS IoT

无服务器的设计模式建立在 Functions 之上 Functions 是最小的部署和扩展单元 按照请求来自动扩展, 用户无需为这些关注这些扩展的开销 无需为 idle 的请求付费 跳过了最无聊的部分, 也是越过了最难的部分

Lambda 的注意事项和最佳实践 AWS Lambda 是无状态的! 无状态的! 无状态的! 确保没有在计算上的耦合. 本地文件系统和子进程的扩展都和 Lambda 的请求共生命周期

Lambda 的注意事项和最佳实践 你的 Lambda Function 能在冰天 雪地中幸存下来么?(Code Start) 要注意初始化 AWS 客户端连接或者数据库连接的时候的变量 scope, 尽可能的复用连接 利用 CloudWatch Events 来做预热 ENIs for VPC 将会在 Code Start 时候被加载 冷启动时执行 import sys import logging import rds_config import pymysql rds_host = "rds-instance" db_name = rds_config.db_name try: conn = pymysql.connect( except: logger.error("error: def handler(event, context): with conn.cursor() as 仅在调用时被执 cur: 行

Lambda 的注意事项和最佳实践 文件系统如何考量? 别忘记我们还有 /tmp (512 MB 空间 ) exports.ffmpeg = function(event,context) { new ffmpeg('./thumb.mp4', function (err, video) { if (!err) { video.fnextractframetojpg('/tmp ) function (error, files) { } if (!error) console.log(files); context.done();...

Lambda 的注意事项和最佳实践 自定义 CloudWatch 指标 40 KB per POST 默认账户限制在 150 TPS Consider 通过 Kinesis 来聚合日志 def put_cstate ( iid, state ): response = cwclient.put_metric_data( Namespace='AWSx/DirectConnect', MetricData=[ { 'MetricName':'ConnectionState', 'Dimensions': [ { 'Name': 'ConnectionId', 'Value': iid }, ], 'Value': state, 'Unit': 'None

模式 1: 经典的三层架构

Web application CloudFront S3 Browser API Gateway Dynamic content in AWS Lambda Data stored in DynamoDB

无服务器架构 web app 安全实践 Browser CloudFront OAI Geo-Restriction Signed Cookies Signed URLs DDOS S3 Bucket Policies ACLs AuthZ API Gateway Throttling Caching Usage Plans AWS Lambda DynamoDB IAM IAM

无服务器架构 web app 安全实践 Browser CloudFront OAI Geo-Restriction Signed Cookies Signed URLs DDOS S3 Bucket Policies ACLs CloudFront AWS WAF HTTPS Disable Host Header Forwarding API Gateway Throttling Caching Usage Plans AWS Lambda DynamoDB AuthZ IAM IAM

无服务器架构 web app 监控 Browser CloudFront Access Logs in S3 Bucket CloudWatch Metricshttps://aws.amazon.com/ cloudfront/reporting/ S3 Access Logs in S3 Bucket Custom CloudWatch Metrics & Alarms AWS CloudTrail AWS WAF WebACL Testing Total Requests Allowed/Blocked Requests by ACL API Gateway logs Latency Count Cache Hit/Miss 4XX/5XX Errors AWS Lambda logs DynamoDB Latency Invocations Invocation Errors Throughput Duration Throttled Invocations Throttled Reqs Returned Bytes Documentation Streams

无服务器架构 web app 生命周期管理 AWS SAM (Serverless Application Model) - blog Code/Packages/ Swagger 在线研讨会 https://aws.amazon.com/cn/aboutaws/events/webinar/using-sam-to-build-aws-lambdaapplication09122017/ AWS Lambda DynamoDB Serverless Template Package & Deploy S3 Serverless Template w/ CodeUri AWS CloudFormation API Gateway package deploy CI/CD Tools

API Gateway 最佳实践 使用 mock 整合做到快速原型迭代 使用 Signed URL 和 API Gateway 的 Large Binary 功能的结合来上传到 S3 使用 request/response mapping 模版来更好的兼容历史遗留的应用 使用 Lambda 异步调用来更好的支持需要被处理很久的请求 (>30s)

Root / 使用简单代理模式 - greedy path https://github.com/awslabs/aws-serverless-express /{proxy+} ANY Your Node.js Express app 简洁高效 : 自动扩展 只为产生的请求付费

模式 2: 批处理

批处理的特征 大批的数据量 定期的或者被计划的任务 Extract Transform Load (ETL) 的工作模式 大部分情况下不会长期运行 大部分问题都能用 MapReduce 的模式来解决

无服务器架构 批处理 AWS Lambda: Mappers S3 Object AWS Lambda: Splitter. AWS Lambda: Reducer S3 Results. DynamoDB: Mapper Results

无服务器架构 批处理 AWS Lambda: Mappers S3 Object AWS Lambda: Splitter. AWS Lambda: Reducer S3 Results. S3: Mapper Results

注意事项和最佳实践 串联 mapper functions Lambda 批处理模式 vs. SQL (Hadoop / Spark 生态 ) 处理数据和 Lambda function 的并发和限制需要取得平衡 使用 DynamoDB/ElastiCache/S3 来管理 mapper functions 的状态 Lambda MapReduce Reference Architecture

无服务器架构的成本考量 200 GB 原始 Google Ngram data-set Serverless: 1000 并发 Lambda 调用 处理时间 : 9 minutes 成本 : $7.06

模式 3: 流式处理

流式处理的注意事项 高吞吐 近乎实时的处理能力 爆发性的间歇性流量 消息持久化 消息处理的保序

无服务器架构流式处理 KPL: Producer Kinesis: Stream Lambda: Stream Processor S3: Intermediate Aggregated Data S3: Final Aggregated Output Sensors CloudWatch Events: Trigger every 5 minutes Lambda: Scheduled Dispatcher Lambda: Periodic Dump to S3

扇出模式 Kinesis shards 的数量等同于 Lambda 的调用并发数量 高吞吐和低延时 vs 消息保序 KPL: Producer Kinesis: Stream Lambda: Dispatcher Lambda: Processors Sensors Increase throughput, reduce processing latency

更多关于扇出模式 谨记 Kinesis 的单个 Shard 的处理能力 1000 records / second 1 MB / second 使用扇出模式的时候, 考虑使用同步的 Lambda 调用方式 Rcoil for JS (https://github.com/sapessi/rcoil) Dead letter queue 重试失败的 Lambda 的调用

更多关于扇出模式 考虑使用 Step Functions 作为扇出模型的处理器

最佳实践 调教 Kinesis 每次调用 Lambda 触发器 batch size 的值, 默认是 100, 更大的值能够使得 Lambda 有更少的调用 调教 Lambda 的内存 更快的处理速度 尽量使用 KPL 的 Batch Message 功能来批量发送数据, 这样可以更充分的利用 Kinesis 的高吞吐特性

监控 Kinesis Stream metric GetRecords.IteratorAgeMilliseconds maximum

Kinesis Analytics Kinesis Streams Producer Kinesis: Kinesis Analytics: S3: Stream Window Aggregation Aggregated Output Sensors CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM "device_id", FLOOR("SOURCE_SQL_STREAM_001".ROWTIME TO MINUTE) as "round_ts", SUM("measurement") as "sample_sum", COUNT(*) AS "sample_count" FROM "SOURCE_SQL_STREAM_001" Aggregation Time Window GROUP BY "device_id", FLOOR("SOURCE_SQL_STREAM_001".ROWTIME TO MINUTE);

成本考虑 评估 6 小时的消息处理速率 以 30 天为例作为成本考量 50,000 MESSAGES/SEC 20,000 20,000 20,000 10,000 10,000 1 2 3 4 5 6 HOURS

成本对比 无服务器架构 Kinesis Stream with 5 shards EC2 自建 Kafka cluster (3 x m3.large) Zookeeper cluster (3 x m3.large) Consumer (1 x c4.xlarge) Service Monthly Cost Service Monthly Cost Kinesis Streams $ 58.04 AWS Lambda $259.85 S3 (Intermediate Files) $ 84.40 CloudWatch $ 4.72 Total $407.01 EC2 Kafka Cluster $292.08 EC2 Zookeeper Cluster $292.08 EC2 Consumer $152.99 Total On-Demand $737.15 1-year All Upfront RI $452.42

Lambda architecture Batch Layer Data Sources Serving Layer Speed Layer

模式 4: 自动化

自动化处理所具备的特征 处理报警和各类事件 周期性的计划任务 审计和通知 对 AWS 服务功能性上的扩展 高可用 + 自动扩展

自动化处理 : 动态为 EC2 分配 DNS EC2 Instance State Changes CloudWatch Events: Rule Triggered AWS Lambda: Update Route53 Route53: Private Hosted Zone Tag: CNAME = xyz.example.com xyz.example.com A 10.2.0.134 DynamoDB: EC2 Instance Properties

自动化处理 : 从 S3 加载生成图片缩略图 S3: Source Bucket AWS Lambda: Resize Images S3: Destination Bucket Users upload photos Triggered on PUTs

CapitalOne Cloud Custodian CloudWatch Events: Rules Triggered AWS Lambda: Policy & Compliance Rules SNS: Alert Notifications AWS CloudTrail: Events CloudWatch Logs: Logs Read more here: http://www.capitalone.io/cloud-custodian/docs/index.html

最佳实践 文档化你的自动化处理的这些 event, 以及如何关闭和开启它们, 它们的依赖关系是怎样的 AWS API 会有调用的限制 throttling, 利用倒计时的 retry 机制处理 API 调用过程中的重试 (AWS SDKs 自带此功能 ) 记得将有意义的 CloudWatch 自定义指标打入 CloudWatch 便于运维 ( 例如定期为 EBS 打快照 )

客户案例 Architect, BMC Software

项目背景 去年 (2016),BMC 想开发下一代的云端产品来帮助客户在 DevOps 的管理和安全以及合规检查上的自动化管理工具. 适应多变的创新和产品迭代 在数据, 吞吐量和高可用的扩展上都有很高的要求和挑战 业务逻辑复杂 成本上更可控

Security and DevOps Automation

原本的想法 Data Data Blob Data Blob Data Blob Data Blob Blob collectors 1. Nginx 4. Kafka + Storm App App 5. Cassandra 挑战 : 6 个复杂的集群 缺乏运维经验 安装集群都需要很久 TCO 2. Zookeeper 3. Vault Ops Security Scale Monitor Dev Indexer Service 6. Elasticsearch

后来, 一个月就能出第一个版本 Data Data Blob Data Blob Data Blob Data Blob Blob collectors Ingest API Gateway Stream Write Service Stream Kinesis Resource Write Service DynamoDB s3 App App 简单并强大 时间可以都集中在开发上 自动扩展 运维成本低 一开始的成本就很低 成本风险小 API Gateway API App Services Manage Clusters Elasticsearch Service Indexer Service

还是会有 Ops, 世界上没有 NoOps 没有基础架构需要管理, 但轻量的运维工作还是存在的 你的 lambda 或者说你使用到的服务是否是正常工作的? 是否有很高的 error rate? ( 例如 5xx) 系统的响应延时是否很高? 你的数据库查询是否高效?

总结 无服务器架构的特征和实践 经典的三层架构 批处理 流式处理 自动化处理中的无服务器应用 BMC 无服务器架构的经验

Thank You!