Más contenido relacionado

Más de Amazon Web Services(20)

Último(20)

Getting Started with Serverless Architecture - 深入淺出無伺服器架構應用程式

  1. ©2016, Amazon Web Services, Inc. 或其附屬公司。保留所有權利。 John Chang Technology Evangelist, AWS April 2017 深入淺出無伺服器架構應用程式
  2. 贊助廠商
  3. §Build an entire analytics application to power your business §Scale Hadoop cluster to thousands of instances in minutes §Leverage powerful AWS compute instances using Intel technology Big Data Spotlight: Analytics
  4. 議程 • 背景介紹 • AWS Lambda • Amazon API Gateway • Demo: 無伺服器建立網路應用程式 •無伺服器架構模式 •無伺服器最佳實務
  5. 背景介紹 無伺服器架構模式搭配 AWS Lambda 如何成為應用程式設計的全新境界
  6. 單體式架構
  7. 服務導向架構 展示層 邏輯層 資料層
  8. 微服務架構
  9. 協助此模式運作需要的工具很多 • Web 伺服器 • 程式庫 • Web 服務/應用程式架構 • 組態管理工具 • API 管理平台 • 部署模式 • CI/CD 模式 • 容器 • 所有類似工具...
  10. AWS 都提供了協助! • Amazon EC2 • EC2 Auto-Scaling • AWS Elastic Load Balancer • EC2 自動復原 • AWS Trusted Advisor • AWS Elastic Beanstalk • AWS OpsWorks • AWS EC2 Container Service • 所有類似工具...
  11. 不過…. 這些工具和創新技術大都依賴...
  12. 伺服器 (啊!...) 哪種規模的伺服器符合我的預算? 有多少使用者對我的伺服器造成過 多負載? 我的伺服器還剩下多少容量? 我要如何偵測伺服器是否 遭到入侵? 多少部伺服器 應該編入預算? 哪一種作業系統適合我的 伺服器執行? 應該讓哪些使用者存取 我的伺服器? 我該如何控制從我的伺服器 所進行的存取? 我該如何維持伺服器的 作業系統獲得修補? 新的程式碼如何 部署到我的伺服器上? 我該如何提高 伺服器的利用率? 我應該在何時 橫向擴展我的伺服器? 哪一種規模的伺服器 適合我的效能需求? 我是否應該調整作業系統設定, 來讓我的應用程式達成最佳化? 應該將哪些套件納入我的 伺服器映像? 我應該在何時 垂直擴展我的伺服器? 我該如何處理伺服器的組態變更? 應用程式會如何處理伺服器的 硬體故障?
  13. 無伺服器架構 全受管 • 不需佈建 • 完全不需管理 • 高可用性 開發人員生產力 • 聚焦於重要的程式碼 • 快速創新 • 縮短上市時間 持續擴展 • 自動 • 擴展與縮減規模
  14. AWS Lambda
  15. 無伺服器、事件驅動的運算服務 Lambda = 不需伺服器的微服務
  16. Lambda 的元件 • (您所撰寫的) Lambda 功能 • 事件來源 • AWS Lambda 服務 • 功能聯網環境
  17. Lambda Function • 您的程式碼 (Java、NodeJS、Python、C#) • 程式碼在執行時所採用的 IAM 角色 • 分配給您程式碼的記憶體數量 ( 也會影響 CPU 和網路) 有效、完整的 Lambda 功能
  18. 事件來源 • 您的 Lambda 函式應何時 執行? • 現在許多 AWS 服務可以 成為事件來源: • S3 • Kinesis • SNS • DynamoDB • CloudWatch • Config 規則 • Amazon Echo • 其他等服務... • …以及 Amazon API Gateway
  19. AWS Lambda 服務 • 可執行您的程式碼,無需管理或擴展伺服器。 • 提供 API 來觸發執行您的函式。 • 確保函式在觸發時執行,無論規模大小。 • 為您的函式提供其他的能力 (記錄、監控)。
  20. 函式聯網環境 Default (預設) — 在 VPC 內為您提 供預設的網路環境 • 永遠允許您的功能存取網際網路 • 無法存取在 VPC 中部署的資產 用戶自設 VPC — 您的函式會在您自己的 VPC 內執行。 • 和您 VPC 內的其他資源進行私有通訊。 • 熟悉的組態與行為,包括: – 子網段 – 彈性網路界面 (ENI) – EC2 安全群組 – VPC 路由表 – NAT 閘道
  21. 等一下,您可能想到…
  22. 現有許多方法可以抽象隱藏伺服器 • SaaS • PaaS • MBaaS • *aaS • 應用程式引擎/平台
  23. Lambda 有什麼獨特之處? • 於程式碼/函式層級抽象化 (任意、彈性、熟悉) • 安全模型 (IAM、VPC) • 定價模式 • 社群 • 其他 AWS 服務生態系統整合! • 延展 • 觸發
  24. AWS 上的眾多無伺服器選項 儲存 資料庫網路 運算 內容交付訊息與佇列安全性 閘道 使用者管理 監控與記錄 物聯網 機器學習 串流分析
  25. 無伺服器架構範例
  26. PlayOn! 運動遊戲 — 視訊串流處理 筆記型電 腦編碼器 HLS S3 播放 VOD 串流行動 用戶端 CloudFront 串流 即時串流行動 用戶端 CloudFront S3 傳入 480p 轉碼 HQ 複製 360p 轉碼 僅音訊轉碼 縮圖 QOS 分析 串聯 Lambda 功能
  27. 但是… 使用 Lambda,真的只能建置由事件驅動的應 用程式架構嗎?
  28. AWS Lambda 可以運作在 SOA 架構
  29. Amazon API Gateway
  30. 用於您 API 的全受管服務 建立 設定 發布 維護 監控 安全無虞
  31. Demo - Serverless Web Application
  32. 無伺服器架構模式
  33. 微服務
  34. 行動後端
  35. 即時分析引擎
  36. 無伺服器最佳實務
  37. AWS Lambda 最佳實務 1. 限制您函式的規模 — 尤其是 Java (啟用 JVM 需要花時間) 2. 節點 — 請記住,執行是非同 步的。 3. 不要假設函式容器可以重複使 用,但在可以這麼做時善用之 。 4. 別忘了磁碟 (500MB /針對每個 函式提供臨時目錄) 5. 使用函式別名來進行發布。 6. 使用隨附的記錄器 (包括服務提 供的背景詳細資訊) 7. 建立自訂指標 (營運導向與業務 導向)
  38. Amazon API Gateway 最佳實務 4. 在合理範圍內,於各處使用要 求/回應對應範本而不直通。 5. 取得 HTTP 回應碼的所有權 6. 使用 Swagger 匯入/匯出功能 進行跨帳戶共用 1. 使用模擬 (Mock) 整合 2. 結合 Cognito 進行存取控制。 3. 使用階段變數 (stage variables) (將 API 設定值匯入 Lambda 函 式以用於記錄、行為)
  39. 其他最佳實務 1. 使用策略性、可更換的命名慣 例 (Lambda 函式名稱、IAM 角 色、API 名稱、API 階段名稱 等) 2. 使用命名慣例和版本控制來建 立自動化機制。 3. 在可能時由外部提供 IAM 角色 的授權 4. 最低權限和獨立的 IAM 角色 5. 在預計的大規模擴展事件發生前 聯絡 AWS Support 6. 注意服務節流(throttling),發生 時請聯絡 AWS 支援部門。
  40. 行動! (A Call to Action)
  41. 現在就開始建置! Amazon API Gateway AWS Lambda Amazon DynamoDB 範例程式:http://bit.ly/john-1704-demo
  42. 感謝您! John Chang johnchan@amazon.com
  43. AWS Facebook Taiwan Page
  44. Q&A
  45. Remember to complete your evaluations!