SlideShare a Scribd company logo
1 of 86
Download to read offline
Rick Hwang
Sr. Manager, 91APP
July 28, 2018
1
邁向 API 經濟
API Gateway 導入之旅
2
先看個新聞
3
https://technews.tw/2018/07/16/google-maps-due-date-is-on-api-key-access-is-charging-more-exp
ensive-and-restricted-and-will-effect-government/
這則新聞告訴我們
使用 API 是要付費的!
4
田野調查
● 現場有多少朋友看過 Rick 的 Blog?
● 有多少朋友有在 AWS Summit 聽過 Rick 分享?
● 有多少朋友公司 Production,已經在使用 API Gateway?
5
● 打雜 @ 91APP
● 經營管理
● Cloud / AWS / GCP
● DevOps / SRE
● Distributed Systems
● 音樂 吉他 鍵盤 編曲
● 哲學 科幻 金庸 喇賽
Rick Hwang
https://www.gtcafe.com
6
7
Q: 身為一個 Developer ...
● 你平常怎麼用別人的 API?
● 使用過程,應該要有什麼?
8
Q: 身為 API 經營者、管理者 ...
● API 要怎麼賣?
● 怎麼控管?
9
假設你已經用過 API Gateway
如果沒有使用,請點 Overview API Gateway
雖然,可能還是會看不懂 XD
10
11
● 我們遇到什麼問題?
● 我們對新技術的的期望
● 導入 API Gateway 的考慮
● 微服務架構
● API 經濟學
12
Agenda
開始之前
我們遇到什麼問題?
我們的期望?
13
問題一:Legacy API
14
● 認證機制過於複雜
● Resource / Method 設計的不好、不合潮流
● Payload 資料結構複雜
● 效能問題浮現 (照妖鏡)
Legacy API
15
問題二:防禦機制不夠健全
16
防禦機制不健全
● 用資源 (加機器) 來支撐異常攻擊
○ 用 NACL 暫解
○ 換 ALB + WAF 可以解
● API 管控機制不健全
○ 不同客戶的 KeySet,無法個別管控權限
○ 無法依據 Key 鎖定不同來源客戶 IP
● 無法限制流量 (Rate Limit)
17
問題三:外部整合力的問題
18
客戶的夥伴
客戶串接
19
API
KeySet
● 客戶使用我們的 API
○ 客戶的夥伴也使用我們的 API,我們不知道!
○ 權限管控問題
● 有些客戶不吃 JSON、吃 XML
● 或者,客戶丟過來的是 XML,我們吃 JSON
外部整合力的問題
20
期望
21
期望一:架構服務導向
22
23
向 AWS 學習
https://api.abcorp.com /order /v2/SaleOrder
Version
Service
Name
APIs
Single entry point
Backends
Brand
24
期望二:Serverless Architecture
25
● Serverless Framework
● CloudFront / WAF
● API Gateway: Private and Regional
● Lambda
● DynamoDB / DAX
● CloudWatch
26
Serverless Architecture
期望三:維運自動化
27
● 即時 API 使用率統計
● API Key 管理
● API 授權機制
● 監控指標
● Log 機制
28
維運自動化
整理問題與期望
29
1. 更好的認證 (Authentication)、授權 (Authorization) 機制
2. Request & Response 資料結構轉換
3. 更好的監控機制、API 使用率
4. 控速、防火牆
5. 標準化 API 介面 (RESTful)
6. 簡化既有認證機制
7. 簡化 Request Payload
8. 調整 Response Data Model
9. 後端盡量不用改
10. Serverless Architecture
30
問題與期望
控管:控速、防火牆
API Key 管理
認證機制
即時監控
後端盡量不用改
新舊版本並行
簡化 Payload
處理回傳資料結構
標準化 API 介面
API 文件化
外部 Developer Portal
內部文件發布流程標準化
資安、架構、維運 介面拉皮
敵動我不動 開發流程
31
所以我們開始導入 API Gateway
32
導入 API Gateway
要考慮的事情
33
● Public
○ Edge - w/ CDN, Global
○ Regional w/o CDN
● Private
○ Regional w/o CDN
34
考慮一:架構可視性
開放給 Business User
開放內部服務對接
內部服務對串
注意:使用 Custom Domain Name 不要用 Edge
● 既有的服務不用動
● 與既有的 VPC 的服務整合 - PrivateLink
○ Network Load Balancer
35
考慮二:與既有架構的整合
● 舊客戶走新的 Endpoint、認證機制
● 其餘商業邏輯不動
36
考慮三:客戶最小改動
37
考慮四:URL 規劃
https://api.abcorp.com /ec /v2/Sale/Order
Version
Service
Name
Rest APIs
Single entry point
Brand
38
考慮四:認證機制
● Authentication 認證
● Authorization 授權
Backend or Gateway
Backend or Gateway
● Serverless 架構
● API swagger 整合與管理
● 測試環境規劃
● 文件
● 部署流程
39
考慮五:開發流程
40
考慮六:監控與維護
● API 使用率統計
● API Key 的管理
● Log 蒐集與處理
考慮微服務架構
41
● Security Built-in: CDN + WAF
● Availability and Reliability
● 環境建置
● 部署流程
42
架構的考量
43
先看近一點
44
Distribution
https://api.abc.com
WAF SSL Certificate
DNS
API Gateway
CDN
Stages
/order
API Stage
POST /v2/Sales/Order
POST /v2/Sales/Orders
Custom Authorizer
DynamoDB
Handler
Backend Service
Network
Load Balancer
1. EncryptData
2. InvokeAPI
3. Restructure Data Formation
Third Party
Application Load Balancer
客戶
Service A
45
稍微看遠一點
Service C
Service A
客戶 (Prod)
HTTPS / TLS
x-api-key
HTTPS
HTTPS
API Gateway
Service B
HTTPS
CDN
用戶
WAF
API Endpoint /ServiceName /Version/RestAPI
客戶 (Dev)
HTTPS / TLS
x-api-key
1. Rate Limit
2. Access Control
3. Monitoring
4. Usage Plan
API Gateway
API Gateway
46
Service A, B, C ...
47
看到全貌
48
Service A
Rest API
Rest API
Service B
Rest API
Rest API
ServiceD
Rest APIRest API
ServiceCRest API
Rest API
CloudFront
AWS WAF
Route 53
ALB
Client: Desktop / Mobile
S3
Private
Public
Protected
Access Control
Public Subnet Private SubnetPublic Network
/category
/order
/auth
/theme
js, css, img
Message
Broker
Common Services
Rest API
Service
Discovery
● API Gateway / Service Mesh
● Service Discovery
● Message Broker
49
微服務的核心微服務
邁向 API 經濟
技術架構的商業思維
50
51
https://www.emome.net/4g/4g_promo
● 月繳 1999
● 每月五千萬呼叫次
● API 限速:5000rps
● 50 把 x-api-key
+ MORE +
52
API 經濟學 - Usage Plan
● 月繳 1499
● 每月無上限使用次數
● API 限速:無限
● 100 把 x-api-key
+ MORE +
91APP 鑽石客戶
多種優惠 無上限吃到飽
91APP VIP 客戶
多種優惠 精選用到爽
● 月繳 699
● 每月一千萬呼叫次
● API 限速:1000rps
● 10 把 x-api-key
+ MORE +
91APP 經濟客戶
多種選擇 經濟又實惠
● Key 1
● Key 2
● Key 3
● Key 4
● …
● Key n
● Rate Limit: 5000
● Throttling: 500
● Quota: 50,000 / day
53
Usage Plan A
API Keys
API Stage A
API Stage B
0..n
0..n
499 方案!
Simcard
基地台
API 怎麼賣?
● API 依照使用率計費
● API 依照會員等級提供使用量
● 開發過程中,依照用途限制
54
Usage Plan 的應用
● 給客戶測試的 Key
○ Rate Limit: 調降
○ Quote: 有上限
○ 定時 Disable or Rotate
● 給客戶正式的 Key
○ 給兩把:備援的概念 → IAM Access Key
○ Rate Limit: 依照業務等級
○ Quote: 無上限
○ 定時 Disable or Rotate
55
Developer Site
● 開發人員常看的文件是怎麼來的?
● 這個網站應該提供些什麼?
● 開發流程如何把文件放入程式碼?
● 這個網站的商業價值是什麼?
56
國外的 Developer Site
https://developers.shopify.com/
https://developers.redhat.com/
https://developer.apple.com/
https://developers.facebook.com/
https://developer.microsoft.com/
https://developer.amazon.com/
https://netflix.github.io/
https://developers.google.com/
https://developer.linkedin.com/
http://airbnb.io/
57
Developer Site - 基本款
● Getting Start
● User Guide, Sample Code
● Developer Guide
● API Reference
● Blog
● Forum
58
● 我們遇到什麼問題?
● 我們對新技術的的期望
● 導入 API Gateway 的考慮
● 微服務的前導架構
● 邁向 API 經濟
59
Recap
我們還在進行中 ...
60
結語 ...
API Gateway 是非常技術性的東西
有商業價值支撐,導入才會順利!
61
62
Next … Q and A
63
● Custom Domain Name 不是有 CloudFront,為什麼要自
己弄?
● 後端回 JSON,客戶收 XML,這是怎麼回事?
● 如何 Debug API Gateway 的問題?
● API Gateway 可以串其他 AWS Services? 像是
DdynamoDB,而不需要 Lambda?
● Rate Limit 要注意的地方?
Questions
Q1: Custom Domain
Name 不是有 CloudFront
為什麼要自己弄?
64
65
Endpoints for Edge, Regional, Private
~$ nslookup 7fal10lwzj.execute-api.us-west-2.amazonaws.com 8.8.8.8
Non-authoritative answer:
Name: 7fal10lwzj.execute-api.us-west-2.amazonaws.com
Address: 52.84.205.154
Name: 7fal10lwzj.execute-api.us-west-2.amazonaws.com
Address: 52.84.205.177
Name: 7fal10lwzj.execute-api.us-west-2.amazonaws.com
Address: 52.84.205.168
Name: 7fal10lwzj.execute-api.us-west-2.amazonaws.com
Address: 52.84.205.155
~$ nslookup 52.84.205.154 8.8.8.8
Non-authoritative answer:
154.205.84.52.in-addr.arpa name = server-52-84-205-154.tpe50.r.cloudfront.net.
Authoritative answers can be found from:
66
Edge API Gateway
~$ nslookup 2dev1cgrqj.execute-api.us-west-2.amazonaws.com 8.8.8.8
Non-authoritative answer:
Name: 2dev1cgrqj.execute-api.us-west-2.amazonaws.com
Address: 34.218.11.31
Name: 2dev1cgrqj.execute-api.us-west-2.amazonaws.com
Address: 52.10.38.34
Name: 2dev1cgrqj.execute-api.us-west-2.amazonaws.com
Address: 52.88.144.89
~$ nslookup 34.218.11.31 8.8.8.8
Non-authoritative answer:
31.11.218.34.in-addr.arpa name = ec2-34-218-11-31.us-west-2.compute.amazonaws.com.
Authoritative answers can be found from:
67
Regional API Gateway
68
Private API Gateway
~$ nslookup wertv1jfp2.execute-api.us-west-2.amazonaws.com 8.8.8.8
** server can't find wertv1jfp2.execute-api.us-west-2.amazonaws.com: NXDOMAIN
~$ nslookup wertv1jfp2.execute-api.us-west-2.amazonaws.com
Server: 172.31.0.2
Address: 172.31.0.2#53
Non-authoritative answer:
wertv1jfp2.execute-api.us-west-2.amazonaws.com canonical name = execute-api.us-west-2.amazonaws.com.
Name: execute-api.us-west-2.amazonaws.com
Address: 172.31.5.61
Name: execute-api.us-west-2.amazonaws.com
Address: 172.31.10.251
Service C
Service A
客戶 (Prod)
HTTPS / TLS
x-api-key
HTTPS
HTTPS
API Gateway
Service B
HTTPS
CDN
用戶
WAF
客戶 (Dev)
HTTPS / TLS
x-api-key
API Gateway
API Gateway
69
Service A, B, C ...
Q2: 後端回 JSON,客戶收 XML
這是怎麼回事?
70
Client
JSON
API Gateway Backend
71
Data Transformation
XML
JSONXML
72
Apache Velocity Template Language (VTL)
Q3: 如何 Debug API Gateway 的問題?
73
● CloudWatch Logs
● API Logging for Stage
● Custom Access Logging (Stage)
74
API Gateway Log 分類
75
76
Q4: API Gateway 可以串其他 AWS
Services?像是 DynamoDB?
77
78
79
80
Q5: Rate Limit 要注意的地方?
81
82
● Region 的總量是固定的
● 單位時間的最大值
● 可以控制到每一個 API
● Rate Limit 可以調整,但是 Burst 固定最大 5000
Rate Limit
83
Q: 身為一個 Developer ...
● 你平常怎麼用別人的 API?
● 使用過程,應該要有什麼?
84
Q: 身為 API 經營者、管理者 ...
● API 要怎麼賣?
● 怎麼控管?
85
Thanks
86

More Related Content

More from Rick Hwang

AWS Career Exploration Day
AWS Career Exploration DayAWS Career Exploration Day
AWS Career Exploration DayRick Hwang
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)Rick Hwang
 
SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路
SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路
SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路Rick Hwang
 
導讀持續交付 2.0 - CH02 價值探索環
導讀持續交付 2.0 - CH02 價值探索環 導讀持續交付 2.0 - CH02 價值探索環
導讀持續交付 2.0 - CH02 價值探索環 Rick Hwang
 
2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構
2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構
2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構Rick Hwang
 
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)Rick Hwang
 
Software Development Process v1.5 - 20121214
Software Development Process v1.5 - 20121214Software Development Process v1.5 - 20121214
Software Development Process v1.5 - 20121214Rick Hwang
 
第三章 建立良好的人際關係網路
第三章 建立良好的人際關係網路第三章 建立良好的人際關係網路
第三章 建立良好的人際關係網路Rick Hwang
 
Wiki in Teamroom - Connected Mind
Wiki in Teamroom - Connected MindWiki in Teamroom - Connected Mind
Wiki in Teamroom - Connected MindRick Hwang
 
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合Rick Hwang
 
Study Notes - Event-Driven Data Management for Microservices
Study Notes - Event-Driven Data Management for MicroservicesStudy Notes - Event-Driven Data Management for Microservices
Study Notes - Event-Driven Data Management for MicroservicesRick Hwang
 
Study Notes - Using an API Gateway
Study Notes - Using an API GatewayStudy Notes - Using an API Gateway
Study Notes - Using an API GatewayRick Hwang
 
從緊急事件 談 SRE 應變能力的培養 - DevOpsDays Taipei 2018
從緊急事件  談 SRE 應變能力的培養 - DevOpsDays Taipei 2018從緊急事件  談 SRE 應變能力的培養 - DevOpsDays Taipei 2018
從緊急事件 談 SRE 應變能力的培養 - DevOpsDays Taipei 2018Rick Hwang
 
AWS Well-Architected Framework (nov 2017)
AWS Well-Architected Framework (nov 2017)AWS Well-Architected Framework (nov 2017)
AWS Well-Architected Framework (nov 2017)Rick Hwang
 
91APP API Gateway 導入之旅
91APP API Gateway 導入之旅91APP API Gateway 導入之旅
91APP API Gateway 導入之旅Rick Hwang
 
Continuous Delivery - Opening
Continuous Delivery - OpeningContinuous Delivery - Opening
Continuous Delivery - OpeningRick Hwang
 
Monitoring Tools 大亂鬥 - AWS CloudWatch
Monitoring Tools 大亂鬥 - AWS CloudWatchMonitoring Tools 大亂鬥 - AWS CloudWatch
Monitoring Tools 大亂鬥 - AWS CloudWatchRick Hwang
 
Amazon CloudWatch - Observability and Monitoring
Amazon CloudWatch - Observability and MonitoringAmazon CloudWatch - Observability and Monitoring
Amazon CloudWatch - Observability and MonitoringRick Hwang
 
Ops as Code using Serverless
Ops as Code using Serverless Ops as Code using Serverless
Ops as Code using Serverless Rick Hwang
 
SRE CH25 - Data Processing Pipelines
SRE CH25 - Data Processing PipelinesSRE CH25 - Data Processing Pipelines
SRE CH25 - Data Processing PipelinesRick Hwang
 

More from Rick Hwang (20)

AWS Career Exploration Day
AWS Career Exploration DayAWS Career Exploration Day
AWS Career Exploration Day
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
 
SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路
SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路
SRE Conf 2022 - 91APP 在 AWS 上的 SRE 實踐之路
 
導讀持續交付 2.0 - CH02 價值探索環
導讀持續交付 2.0 - CH02 價值探索環 導讀持續交付 2.0 - CH02 價值探索環
導讀持續交付 2.0 - CH02 價值探索環
 
2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構
2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構
2020 AWS Summit - 如何有效管理 AWS 的成本結構與系統架構
 
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
 
Software Development Process v1.5 - 20121214
Software Development Process v1.5 - 20121214Software Development Process v1.5 - 20121214
Software Development Process v1.5 - 20121214
 
第三章 建立良好的人際關係網路
第三章 建立良好的人際關係網路第三章 建立良好的人際關係網路
第三章 建立良好的人際關係網路
 
Wiki in Teamroom - Connected Mind
Wiki in Teamroom - Connected MindWiki in Teamroom - Connected Mind
Wiki in Teamroom - Connected Mind
 
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合導讀持續交付 2.0 - 談當代軟體交付之虛實融合
導讀持續交付 2.0 - 談當代軟體交付之虛實融合
 
Study Notes - Event-Driven Data Management for Microservices
Study Notes - Event-Driven Data Management for MicroservicesStudy Notes - Event-Driven Data Management for Microservices
Study Notes - Event-Driven Data Management for Microservices
 
Study Notes - Using an API Gateway
Study Notes - Using an API GatewayStudy Notes - Using an API Gateway
Study Notes - Using an API Gateway
 
從緊急事件 談 SRE 應變能力的培養 - DevOpsDays Taipei 2018
從緊急事件  談 SRE 應變能力的培養 - DevOpsDays Taipei 2018從緊急事件  談 SRE 應變能力的培養 - DevOpsDays Taipei 2018
從緊急事件 談 SRE 應變能力的培養 - DevOpsDays Taipei 2018
 
AWS Well-Architected Framework (nov 2017)
AWS Well-Architected Framework (nov 2017)AWS Well-Architected Framework (nov 2017)
AWS Well-Architected Framework (nov 2017)
 
91APP API Gateway 導入之旅
91APP API Gateway 導入之旅91APP API Gateway 導入之旅
91APP API Gateway 導入之旅
 
Continuous Delivery - Opening
Continuous Delivery - OpeningContinuous Delivery - Opening
Continuous Delivery - Opening
 
Monitoring Tools 大亂鬥 - AWS CloudWatch
Monitoring Tools 大亂鬥 - AWS CloudWatchMonitoring Tools 大亂鬥 - AWS CloudWatch
Monitoring Tools 大亂鬥 - AWS CloudWatch
 
Amazon CloudWatch - Observability and Monitoring
Amazon CloudWatch - Observability and MonitoringAmazon CloudWatch - Observability and Monitoring
Amazon CloudWatch - Observability and Monitoring
 
Ops as Code using Serverless
Ops as Code using Serverless Ops as Code using Serverless
Ops as Code using Serverless
 
SRE CH25 - Data Processing Pipelines
SRE CH25 - Data Processing PipelinesSRE CH25 - Data Processing Pipelines
SRE CH25 - Data Processing Pipelines
 

邁向 API 經濟 - API Gateway 導入之旅