AWS Certified DevOps Engineer – Professional(DOP-C01) 考試準備

2020-01-23 AWS

概述 & 考試範圍

DOP-C01 是集合 SysOps, Developer Associate 兩者合併的 Professional 級別考試,專注的情境分為:

  • 系統管理:System Manager
  • 系統架構:Disaster Recovery、Trusted advisor、Best Practices for Cloud
  • 開發應用:API Gateway、Lambda、CloudFront
  • 應用佈署:Code family、Blue/Green deployment、CloudFormation、Elastic Beanstalk
  • 資訊安全:Parameter store、KMS、CloudTrail、Config

考試基本資訊:

  • 考試時間:180 分鐘 (如需更多時間可延長 30 分鐘)
  • 考試題數:75 題
  • 考試題型:選擇題、複選題 (選 3 個)
  • 考試深度:必須實作過 AWS 專案並理解 SDK、API 運作原理,具有 Multi-Region 架構設計概念。

考試時間比 Associate 還要多 40 分鐘,但是題目和答案非常的長,基本上每個選項都能符合題目所需要求,但是會有最符合題意的 Best Practices

考前必備基本知識

  • Disaster Recovery
    • 常見 ELB + EC2 + RDS/Dynamodb 災難復原方法
    • 最小的 RTO 和 RPO 以及改進方式
  • Code family (CodeCommit, CodeBuild, CodeDeploy, CodePipeline, CodeStar)
    • Continuous Delivery vs. Continuous Deployment 差別在於 Delivery 支援 “Approve“,Deployment 則是關注在 “Automation“。
    • CodeCommit
      • 全托管服務
      • 即 Git 的版本控管服務
      • 私有的 Repo
      • Repo 沒有 size 限制
      • 程式碼只在該 AWS 帳號內
      • 支援加密、IAM access control 等安全性機制
      • 可以整合其他 CI 工具 (ex. Jenkins / CodeBuild / …)
    • CodeBuild
      • 全托管服務
      • 即 CI 服務
      • 支援 Source 來自 CodeCommit, S3, Github and Bitbucket (Bitbucket Server 不支援)
      • 透過 buildspec.yml 定義 building
        • 目前建議使用 version: 0.2
        • CODEBUILD_ 開頭的變數不能使用,通常為內建變數
        • run-as 只支援 Linux 用來指定特殊執行權限
        • env 支援四種類型,分別適用於:
          • variables:以 key-value 型態,一般純字串參數
          • parameter-store:從 ssm parameter store 獲取參數 ( CodeBuild 必須擁有 ssm:GetParameters 權限)
          • secrets-manager:指定從 AWS Secrets Manager Key獲得變數
          • exported-variables:把 environment output 出來,可以在 post_build 後利用此值 (相對的在 post_build 之前可以覆蓋)
          • git-credential-helper:支援用 gitcredentials 儲存參數
        • proxy 通常在 Private subnet 的環境使用,利用 HTTP_PROXXY / HTTPS_PROXY 到 internet,而不用一定要有 NAT Gateway / IGW。(參考 Use CodeBuild with a Proxy Server)
        • phases 開始執行 building 階段
          • install
          • pre_build
          • build
          • post_build
        • reports 一個 project 最多有 5 個 report
        • artifacts 用來處理 phases 後的資料
        • cache 支援 S3 和 Local cache,S3 便於構建其他情境使用,Local 比 S3 更快 (因為不用網路傳輸)
      • 不需要等待 build queue
      • 依 Build time 計費
      • 利用 Docker 做到客製化
      • 當 image 版本使用 Ubuntu standard 2.0 或 Amazon Linux (AL2) standard image 1.0 之後的版本必須加入 runtime-versions 參數。
      • 安全性:
        • 支援 KMS 加解密
        • 利用 IAM 控制權限
        • 可以在 VPC 網路內執行
        • 支援 CloudTrail 記錄 API 執行資訊
      • 支援 CloudWatch Events, Logs and Metrics
    • CodeDeploy
      • 全托管服務
      • 即 Continuous Deployment 服務
      • 當 Target 屬於 instance 時採用 Server-Agent 架構,則 instance 需要安裝 CodeDeploy agent。
      • 費用:當 Target 為 AWS Service 免費,On-Premise 每台每次 / 0.02 USD
    • CodePipeline
      • 全托管服務
      • 即 Continuous Delivery 服務,專門處理 workflow 並且支援 “approve”。
      • 支援本身的 AWS Code family 以及 CloudFormation, Beanstalk, ECS 等
      • 支援 Custom Action Jobs (Lambda) 處理特殊情境。
    • CodeStar 整合 Code family 快速建構整個 CI / CD Pipeline。
  • CI / CD Pipeline
    • CI 可以透過 Branch 判斷環境,再依情境決定是否 CD
    • 利用 Pull Request 達到 Master branch 審核管理
  • Elastic Beanstalk vs OpsWorks vs CloudFormation
    • Elastic Beanstalk 基於多個服務集成的高層級服務,設定最少、最快最簡單的方法,適合僅有開發知識的工程人員使用。
    • OpsWorks 專注於 Application (即軟體) 的設定管理服務,相容於 Chef / Puppet 及其特性達到自動修復、定期更新。
    • CloudFormation 相較 Elastic Beanstalk 為低層級服務,專注在各個服務細項設定,可搭配 Elastic Beanstalk 和 OpsWorks 補其不足的地方。
  • CloudFormation
    • Helper Scripts 使用於 EC2 的情境
      • cfn-init (AWS::CloudFormation::Init) 用於啟動 EC2 時安裝、啟動服務、獲取 metadata 等
      • cfn-signal 搭配 CloudFormation 使用,不需要 AWS credentials (自動判斷 Stack membership),用於判別 EC2 是否完成建置,CloudFormation 可以搭配 CreationPolicyWaitOnResourceSignals 作為判斷 Resource 建立完成,除此之外 Auto Scaling group 也具有相同效用。
      • cfn-get-metadata 搭配 CloudFormation 使用,不需要 AWS credentials (自動判斷 Stack membership),用於 EC2 內獲取 CloudFormation metadata 資訊。
      • cfn-hu 以 Service 型態安裝於 EC2,用於監控 matadata 異動時觸發 hooks.conf 所寫的動作。
  • Elastic Beanstalk
    • 主要專注於 Application 佈署服務,支援 AWS 多個核心服務包含 EC2, ECS, ELB and RDS 等
    • 可以支援多個版本同時佈署,也支援 Blue/Green 的佈署方法,每一個版本指向一個 S3 Object。
    • 一個環境只能運行一個 Application 版本,但多個環境可以佈署同一個 Application 版本。
    • 分為 Web (前台服務 ELB, EC2 …), Worker (後台服務 SQS) Environment Tier
    • Deployment Methods 分為五種,尤其是 Rolling, Immutable, Blue/Green 重要,參考 Ref[1]
    • 支援 Docker
    • 支援自定義 AMI
    • 理解 .ebextensions 用法,與環境讀取的優先順序
  • System Manager
    • 專注管理 EC2、On-Premise
    • Server-Agent 架構,instance 需要安裝 SSM Agent
    • instance ID 開頭 “mi-” 為 On-Premise、”i-” 為 EC2
    • instance 又區分為 standard-instances 和 advanced-instances
      • standard-instances 在單一帳號 EC2 + On-Premise 最多 1000 個 instance
      • advanced-instances 可以使用超過 1000 個以上 instance
        • 開啟 advanced-instances 後帳號所有 Region 的 On-Premise instance 自動轉為 advanced-instances
        • On-Premise 支援 Session Manager
        • 支援 Microsoft Hotfix Patch
        • 每個 On-Premise 每小時 $0.00695 USD (參考 System Manager Price)
  • OpsWork
  • EC2

考試心得

DevOps engineer – Professional 這張認證的深度很吃實戰經驗,每一題都是多個服務的組合題型,基本上沒有實際使用過幾乎不會過,大概分為幾大類

  • Disaster Recovery:最重要在於資料庫還原,RDS / Dynamodb 的 Backup/Restore 要夠熟,尤其是如何在最短時間完成。
  • 架構設計:用最低的成本完成需求,Scale-in / out 的情境設計很吃重
  • 系統維運:大量 Patch hotfix 執行、大量系統資訊收集、各類系統遠端方法、跨 Region 維運、跨 Region Log Pipeline 設計。
  • CI / CD:最吃重的一個項目,當有額外需求時適時的利用 Custom Job/Action 來完成需求。
  • 資料庫:Schema 設計包含 Primary + Sort key 定義,如何用最少 RCU/WCU。
  • 資安:Secure 的存放方法、CloudTrail 的運用與即時分析資料。

答案選項可能會出現 API method 讓你選,沒開發過這個服務 API 壓根答不出來,每個選項都只有些微差距,看起來好像都可以,不夠熟很難選出正確答案。

最後請記得一定要延長 30 分鐘 (210 min),當我做完 75 題後只剩下 30 分鐘左右可以回頭檢查 (當時有 10 個標記題目未答 …),如果只有預設的 180 分鐘絕對不夠,除非很有信心。

Reference

  1. Elastic Beanstalk Deployment Methods (轉至 Jayendra’s Blog)
  1. Auto Scaling Lifecycle

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱

%d 位部落客按了讚: