Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

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

AWS User Group Taiwan
Date: 2018/07/18
Blog: https://rickhw.github.io/2018/01/24/AWS/Study-Notes-Overview-API-Gateway/

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

  1. 1. Rick Hwang Sr. Manager, 91APP July 28, 2018 1 邁向 API 經濟 API Gateway 導入之旅
  2. 2. 2 先看個新聞
  3. 3. 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/
  4. 4. 這則新聞告訴我們 使用 API 是要付費的! 4
  5. 5. 田野調查 ● 現場有多少朋友看過 Rick 的 Blog? ● 有多少朋友有在 AWS Summit 聽過 Rick 分享? ● 有多少朋友公司 Production,已經在使用 API Gateway? 5
  6. 6. ● 打雜 @ 91APP ● 經營管理 ● Cloud / AWS / GCP ● DevOps / SRE ● Distributed Systems ● 音樂 吉他 鍵盤 編曲 ● 哲學 科幻 金庸 喇賽 Rick Hwang https://www.gtcafe.com 6
  7. 7. 7
  8. 8. Q: 身為一個 Developer ... ● 你平常怎麼用別人的 API? ● 使用過程,應該要有什麼? 8
  9. 9. Q: 身為 API 經營者、管理者 ... ● API 要怎麼賣? ● 怎麼控管? 9
  10. 10. 假設你已經用過 API Gateway 如果沒有使用,請點 Overview API Gateway 雖然,可能還是會看不懂 XD 10
  11. 11. 11
  12. 12. ● 我們遇到什麼問題? ● 我們對新技術的的期望 ● 導入 API Gateway 的考慮 ● 微服務架構 ● API 經濟學 12 Agenda
  13. 13. 開始之前 我們遇到什麼問題? 我們的期望? 13
  14. 14. 問題一:Legacy API 14
  15. 15. ● 認證機制過於複雜 ● Resource / Method 設計的不好、不合潮流 ● Payload 資料結構複雜 ● 效能問題浮現 (照妖鏡) Legacy API 15
  16. 16. 問題二:防禦機制不夠健全 16
  17. 17. 防禦機制不健全 ● 用資源 (加機器) 來支撐異常攻擊 ○ 用 NACL 暫解 ○ 換 ALB + WAF 可以解 ● API 管控機制不健全 ○ 不同客戶的 KeySet,無法個別管控權限 ○ 無法依據 Key 鎖定不同來源客戶 IP ● 無法限制流量 (Rate Limit) 17
  18. 18. 問題三:外部整合力的問題 18
  19. 19. 客戶的夥伴 客戶串接 19 API KeySet
  20. 20. ● 客戶使用我們的 API ○ 客戶的夥伴也使用我們的 API,我們不知道! ○ 權限管控問題 ● 有些客戶不吃 JSON、吃 XML ● 或者,客戶丟過來的是 XML,我們吃 JSON 外部整合力的問題 20
  21. 21. 期望 21
  22. 22. 期望一:架構服務導向 22
  23. 23. 23 向 AWS 學習
  24. 24. https://api.abcorp.com /order /v2/SaleOrder Version Service Name APIs Single entry point Backends Brand 24
  25. 25. 期望二:Serverless Architecture 25
  26. 26. ● Serverless Framework ● CloudFront / WAF ● API Gateway: Private and Regional ● Lambda ● DynamoDB / DAX ● CloudWatch 26 Serverless Architecture
  27. 27. 期望三:維運自動化 27
  28. 28. ● 即時 API 使用率統計 ● API Key 管理 ● API 授權機制 ● 監控指標 ● Log 機制 28 維運自動化
  29. 29. 整理問題與期望 29
  30. 30. 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 問題與期望
  31. 31. 控管:控速、防火牆 API Key 管理 認證機制 即時監控 後端盡量不用改 新舊版本並行 簡化 Payload 處理回傳資料結構 標準化 API 介面 API 文件化 外部 Developer Portal 內部文件發布流程標準化 資安、架構、維運 介面拉皮 敵動我不動 開發流程 31
  32. 32. 所以我們開始導入 API Gateway 32
  33. 33. 導入 API Gateway 要考慮的事情 33
  34. 34. ● Public ○ Edge - w/ CDN, Global ○ Regional w/o CDN ● Private ○ Regional w/o CDN 34 考慮一:架構可視性 開放給 Business User 開放內部服務對接 內部服務對串 注意:使用 Custom Domain Name 不要用 Edge
  35. 35. ● 既有的服務不用動 ● 與既有的 VPC 的服務整合 - PrivateLink ○ Network Load Balancer 35 考慮二:與既有架構的整合
  36. 36. ● 舊客戶走新的 Endpoint、認證機制 ● 其餘商業邏輯不動 36 考慮三:客戶最小改動
  37. 37. 37 考慮四:URL 規劃 https://api.abcorp.com /ec /v2/Sale/Order Version Service Name Rest APIs Single entry point Brand
  38. 38. 38 考慮四:認證機制 ● Authentication 認證 ● Authorization 授權 Backend or Gateway Backend or Gateway
  39. 39. ● Serverless 架構 ● API swagger 整合與管理 ● 測試環境規劃 ● 文件 ● 部署流程 39 考慮五:開發流程
  40. 40. 40 考慮六:監控與維護 ● API 使用率統計 ● API Key 的管理 ● Log 蒐集與處理
  41. 41. 考慮微服務架構 41
  42. 42. ● Security Built-in: CDN + WAF ● Availability and Reliability ● 環境建置 ● 部署流程 42 架構的考量
  43. 43. 43 先看近一點
  44. 44. 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. 45. 45 稍微看遠一點
  46. 46. 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. 47. 47 看到全貌
  48. 48. 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
  49. 49. ● API Gateway / Service Mesh ● Service Discovery ● Message Broker 49 微服務的核心微服務
  50. 50. 邁向 API 經濟 技術架構的商業思維 50
  51. 51. 51 https://www.emome.net/4g/4g_promo
  52. 52. ● 月繳 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 經濟客戶 多種選擇 經濟又實惠
  53. 53. ● 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 基地台
  54. 54. API 怎麼賣? ● API 依照使用率計費 ● API 依照會員等級提供使用量 ● 開發過程中,依照用途限制 54
  55. 55. Usage Plan 的應用 ● 給客戶測試的 Key ○ Rate Limit: 調降 ○ Quote: 有上限 ○ 定時 Disable or Rotate ● 給客戶正式的 Key ○ 給兩把:備援的概念 → IAM Access Key ○ Rate Limit: 依照業務等級 ○ Quote: 無上限 ○ 定時 Disable or Rotate 55
  56. 56. Developer Site ● 開發人員常看的文件是怎麼來的? ● 這個網站應該提供些什麼? ● 開發流程如何把文件放入程式碼? ● 這個網站的商業價值是什麼? 56
  57. 57. 國外的 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
  58. 58. Developer Site - 基本款 ● Getting Start ● User Guide, Sample Code ● Developer Guide ● API Reference ● Blog ● Forum 58
  59. 59. ● 我們遇到什麼問題? ● 我們對新技術的的期望 ● 導入 API Gateway 的考慮 ● 微服務的前導架構 ● 邁向 API 經濟 59 Recap
  60. 60. 我們還在進行中 ... 60 結語 ...
  61. 61. API Gateway 是非常技術性的東西 有商業價值支撐,導入才會順利! 61
  62. 62. 62 Next … Q and A
  63. 63. 63 ● Custom Domain Name 不是有 CloudFront,為什麼要自 己弄? ● 後端回 JSON,客戶收 XML,這是怎麼回事? ● 如何 Debug API Gateway 的問題? ● API Gateway 可以串其他 AWS Services? 像是 DdynamoDB,而不需要 Lambda? ● Rate Limit 要注意的地方? Questions
  64. 64. Q1: Custom Domain Name 不是有 CloudFront 為什麼要自己弄? 64
  65. 65. 65 Endpoints for Edge, Regional, Private
  66. 66. ~$ 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
  67. 67. ~$ 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. 68. 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
  69. 69. 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 ...
  70. 70. Q2: 後端回 JSON,客戶收 XML 這是怎麼回事? 70
  71. 71. Client JSON API Gateway Backend 71 Data Transformation XML JSONXML
  72. 72. 72 Apache Velocity Template Language (VTL)
  73. 73. Q3: 如何 Debug API Gateway 的問題? 73
  74. 74. ● CloudWatch Logs ● API Logging for Stage ● Custom Access Logging (Stage) 74 API Gateway Log 分類
  75. 75. 75
  76. 76. 76
  77. 77. Q4: API Gateway 可以串其他 AWS Services?像是 DynamoDB? 77
  78. 78. 78
  79. 79. 79
  80. 80. 80
  81. 81. Q5: Rate Limit 要注意的地方? 81
  82. 82. 82 ● Region 的總量是固定的 ● 單位時間的最大值 ● 可以控制到每一個 API ● Rate Limit 可以調整,但是 Burst 固定最大 5000 Rate Limit
  83. 83. 83
  84. 84. Q: 身為一個 Developer ... ● 你平常怎麼用別人的 API? ● 使用過程,應該要有什麼? 84
  85. 85. Q: 身為 API 經營者、管理者 ... ● API 要怎麼賣? ● 怎麼控管? 85
  86. 86. Thanks 86

×