目錄
重點摘要
Section 1: Introducing Cloud Architecting
課程目標
- 說明什麼是雲端架構(cloud architecture)?
- 說明該如何利用 AWS Well-Architecture 來設計和評估雲端架構?
- 說明該如何利用 AWS 雲端服務來達成最佳實踐(best practices)?
- AWS large architecture 參考圖
- AWS large architecture 參考圖
- 說明該如何明智地決定出要將 AWS 資源(resources)放到哪個區域?
Amazon Web Services (AWS) 起源與痛點
- 起源:
- 在大約西元 2000 年,Amazon 從電商服務起家,當時他們希望第三方賣家能在 Amazon ecommerce engine 上建立自己的線上購物網站,但這些第三方賣家不知道該如何設計出高可用的(highly available)、可擴充的(scalable)線上購物網站
- 根據 AWS CEO - Andy Jassy 的描述,他覺得當時的 Amazon ecommerce tools 根本是一場混亂! 原因是應用程式(applications)、系統架構(architecture)在建置過程中,並未經過適當的規劃,因此難以將各個服務各自抽離出來
- 解決方案: Amazon 建立出一系列具備完整文件說明(well-documented)的 APIs,這些文件在未來也成為 AWS 雲端服務的公司標準
- 但 Amazon 依然面對一個問題,該如何快速地建置應用程式、基礎設施? 在過去建置資料庫、伺服器、儲存空間...等各個元件都會需要大約 3 個月的時間來完成,並且每個團隊僅會建置自己的資源,並未考量到可擴充性(scalability)、可重用性(reusability)
- 解決方案: 從西元 2006 開始,Amazon 推出自家的雲端服務 --- Amazon Web Services (AWS),基於 Amazon 基礎設施來提供高可用(highly available)、可擴充(scalable)、可靠的(reliable)雲端服務,並透過販售這些雲端服務來獲利
- 什麼是雲端架構(cloud architecture)?
- 利用雲端服務的特色、功能來達成組織的技術需求、商業使用案例
- 合作模式: 客戶(Customer or Decision maker) => 雲端架構師(Cloud Architect) => 開發工程師(Developer)
- 客戶: 負責提出商業、技術的目標與需求,並決定最後該採用哪個解決方案
- 雲端架構師:
- 與客戶討論出有哪些商業、技術目標需要達成或改進
- 與開發工程師團隊合作,確保交付出的成品能滿足客戶需求的
- 開發工程師: 實際開發出成品、實作出解決方案
Section 2: The AWS Well Architected Framework
AWS Well-Architected Framework
- 是一個幫助我們建置出最安全(secure)、高效能(high-performing)、有彈性(resilient)、符合成本效益(cost-efficient)的雲端應用程式。這是 AWS 基於上千個客戶案例後,所制定的指導方案,在官方文件中,我們可以找到關於 AWS well-architected framework 六大本柱的詳細說明、最佳實踐方式,以下我們會逐一介紹這六大本柱的精神
- 安全性(Security)
- 目標: 我們需要透過風險評估、緩解策略(itigation strategy)來保護客戶的資訊、系統、數位資產...等
- 原則:
- 強大的身份識別基礎
- 可被追蹤的
- 系統架構的每一層級都需要考量到其安全性
- 自動化地實踐安全性原則的最佳實務
- 在任何時候,都要保護客戶資料
- 參考連結: 官方文件: Security Pillar - AWS Well-Architected Framework
- 卓越營運(Operational Excellence)
- 目標
- 當我們運行一個系統時,需考量到維運流程,以及如何交付其商業價值,必須能根據客戶營運需求,持續優化維運流程
- 當我們在設計一個流程時,需考量到未來該如何部署(deployed)、更新(updated)、維運(operated)? 可以透過日誌(logging)、儀表板、其他商業與技術相關數據,來決定該如何設計流程?
- 在 AWS 所有的雲端服務中,都是元件都是透過程式碼來建置、更新、部署的(Infrastructure as Code, IaC),因此任何一位工程師只要遵循這些程式碼操作,都能建置出相同的服務
- 原則
- 能夠監控系統執行的過程
- 持續優化部署、更新、維運的流程
- 參考連結: 官方文件: Operational Excellence Pillar - AWS Well-Architected Framework
- 目標
- 可靠性(Reliability)
- 目標
- 在面對系統終止 or 服務中斷時,能動態地獲取相對應的資源,來減輕對客戶的衝擊
- 相比於傳統的基礎設施環境,雲端服務能夠提供具備高可用性(high availability)、可容錯性(fault tolerance)、全域冗餘性(overall redundancy)
- 原則
- 能夠快速地修復系統終止 or 服務中斷
- 能動態地獲取相對應的資源(computing resource),來達成客戶需求
- 減輕突發事件對客戶的衝擊 (e.g. 基礎設施 or 服務的錯誤設定、短暫的網路中斷問題)
- 參考連結: 官方文件: Reliability Pillar - AWS Well-Architected Framework
- 目標
- 性能效率(Performance Efficiency)
- 目標
- 我們希望能將所有的資源使用率用到最高,並且能隨著客戶需求的變動,能夠動態地調整所需的資源量
- AWS 雲端服務能夠幫助客戶處理關於建置基礎設施、服務的複雜技術問題,讓客戶們能夠專注於他們的核心商業模式上
- 機械同情(mechanical sympathy): 當我們選擇使用某個工具 or 系統時,必須知道該如何將其效益發揮到最大? 舉例來說,當我們選擇資料庫 or 儲存空間時,需考量到在未來該如何有效存取這些資料?
- 原則
- 選擇最有效率的資源使用方式,並能隨著客戶需求動態地調整
- 交給 AWS 雲端服務來處理基礎設施、服務的複雜技術問題與維運
- 採用 機械同情(mechanical sympathy)原則
- 參考連結: 官方文件: Performance Efficiency Pillar - AWS Well-Architected Framework
- 目標
- 成本優化(Cost Optimization)
- 目標
- 對於客戶來說,成本優化是很重要的,它是一個持續迭代(iterative)的流程,在整個系統生命週期中,都必須持續優化、改進
- 所謂成本優化,是根據客戶的目標、需求,來移除不必要的開支。可利用 AWS 雲端服務來託管,因為這些服務都是基於雲端規模所建置的,對於客戶的每一筆交易 or 服務請求的花費,都會相比客戶自建,來得更便宜
- 原則
- 衡量成本效率
- 去除不必要的開支
- 考慮使用 AWS 雲端服務
- 參考連結: 官方文件: Cost Optimization Pillar - AWS Well-Architected Framework
- 目標
- 永續性(Sustainability) --- (截至 2023/04 月新增的第六大本柱)
- 目標:
- 減少能源消耗
- 提升整個工作流程中,所有元件的資源使用率
- 使用越少的資源,創造出越大的效益
- 參考連結: 官方文件: Sustainability Pillar - AWS Well-Architected Framework
- 目標:
- 參考連結: 官方文件: AWS Well-Architected Framework
雲端服務: AWS Well-Architected Tool
- 介紹: 在 AWS 雲端服務的後台管理介面中,我們可以利用這個工具,透過以下幾個步驟來檢視我們的雲端架構,與最新的 AWS 雲端架構最佳實踐版本,有哪些差異? 並提供一系列的步驟來協助優化我們的雲端架構
- Step 1: 定義工作流程
- Step 2: 執行雲端架構面的評估
- Step 3: 應用 AWS 推薦的最佳雲端架構實務
- 圖解:
- 參考連結: 官方文件: AWS Well-Architected Tool
Section 3: Best Practices for Building Solutions on AWS
- 在設計雲端架構解決方案時,我們可以參考過去經驗的歷史資料來設計。同時,我們需要考量客戶的目標(e.g. 優先考量新功能的上市速度,而不是成本)、對客戶的影響
- 在設計雲端架構解決方案時,我們也必須權衡各個面向,來制定最佳策略
- 交易一致性(trade consistency)
- 持續性(durability)
- 用空間換取更低的時間延遲(latency),來獲得更佳的效能