目錄

前言
官方考試指南
實戰經驗談
運算
聯網和內容交付
開發人員工具
儲存
紀錄(log)
高可用性、容錯、災難恢復
其它
實作建議
總結
參考

網頁瀏覽器體驗會比較好 QQ

前言

今年二月考完了 AWS DAS 之後,忙碌公司專案之餘,扣掉客製化 CDK ConstructAWS Taiwan UG 分享、公司內部分享和外部講堂錄製之後,剩下的時間不外乎就是立志當一條會呼吸的肉塊了。耍廢了一陣子之後,約莫七月底左右,突然廢膩覺得好像該來繼續完成目標了,於是就這麼開啟了踏尋 DOP 之旅。

官方考試指南

好比要走過一遍台北大縱走會去了解需要拿下幾條路徑、製作一把《激戰2》遊俠的傳奇武器長弓得知道要取得哪些材料一樣,要拿到 DOP 的 ONE PIECE ,就得先知道這張證照會在企業哪些方面的議題上測驗你是否充分了解可以使用哪些 AWS 服務來解決。從網頁上,我們可以看到:

此認證驗證的能力

  • 在 AWS 上實作和管理持續交付系統和方法
  • 實作和自動化安全控制、管控處理程序和合規驗證
  • 在 AWS 上定義和部署監控、指標和記錄系統
  • 在 AWS 平台上實作具高度可用性、可擴展性和自我修復能力的系統
  • 設計、管理和維護工具以自動化操作程序

建議應具備的知識和經驗

  • 具有至少使用一種高階程式設計設計語言開發程式碼的經驗
  • 建構高度自動化基礎架構的經驗
  • 管理操作系統的經驗
  • 了解現今的開發與作業程序及方法

而在考試指南當中,我們能夠看見指南更加仔細地描述了這張證照會在六個領域中測驗你對於上述對應的企業情境你是否能迅速地反應、了解要使用哪些 AWS 服務來滿足情境裡面的需求。

+-------+--------------------------------+-----+
| 領域1 | SDLC 自動化 | 22% |
+-------+--------------------------------+-----+
| 領域2 | 配置管理與基礎設施即程式碼 | 19% |
+-------+--------------------------------+-----+
| 領域3 | 監控與紀錄系統 | 15% |
+-------+--------------------------------+-----+
| 領域4 | 政策與標準自動化 | 10% |
+-------+--------------------------------+-----+
| 領域5 | 事故與事件反應 | 18% |
+-------+--------------------------------+-----+
| 領域6 | 高可用性、容錯能力、與災難恢復 | 16% |
+-------+--------------------------------+-----+

SDLC 自動化

  1. 應用自動化 CI/CD 管道所需的概念
    • 建立版本庫
    • 建立組建服務(build services) 
    • 整合自動化測試(譬如:單元測試、整合測試)
    • 建立產品/產品服務部署
    • 編排多組管道階段(pipeline stages)
  2. 決定版本控制策略以及如何實作
    • 決定從多位貢獻者整合程式碼變動的工作流程
    • 評估安全性需求以及建議程式碼版本庫存取設計
    • 讓執行中應用程式的版本和版本庫版本一致(標籤)
    • 分辨不同的版本控制類型
  3. 應用自動化和整合測試所需的概念
    • 執行整合測試作為程式碼合併程序的一部分
    • 執行大規模負載/壓力測試與測試應用程式效能
    • 根據應用程式結束代碼(exit code)量測應用程式的健康狀況()
    • 自動化單元測試好檢查通過/失敗、程式碼覆蓋率(CodePipeline、CodeBuild 等等)
    • 透過管道整合測試
  4. 應用安全地組建和管理成品(artifacts)的概念
    • 根據成品安全性分類分辨儲存選項
    • 翻譯應用程式需求到作業系統和套件配置裡頭(組建規格,build specs)
    • 決定程式碼/環境相依性與所需資源
    譬如:CodeDeploy AppSpec、CodeBuild buildspec
    • 執行程式碼組建程序
  5. 決定部署/交付策略(像是A/B、藍/綠、金絲雀、紅/黑)以及如何使用 AWS 服務實作這些策略
    • 基於工作需求決定正確的交付策略
    • 評判現有佈署策略與建議可改善的項目
    • 根據企業最低營運目標推薦 DNS/路由策略(像是 Route53、ELB、ALB、負載平衡器)
    • 驗證部署成功/失敗並自動化復原

配置管理與基礎設施即程式碼

  1. 基於部署需求決定部署服務
    • 展示部署模型(deployment models)的程序流程知識
    • 給定部署模型情況下,分類和實作相關 AWS 服務以滿足需求
    o 根據需求決定合適使用 CloudFormation 而非 OpsWorks (這條描述原文我判斷不出在供殺小,根據經驗所做的猜測;Given the requirement to have Dynamo DB choose CloudFormation instead of OpsWorks)
    o 決定復原更新(後)要做什麼事
  2. 根據企業需求決定應用程式和基礎設施部署模型
    • 根據企業需求平衡不同考量(成本、可用性、恢復時間)以選擇最佳的部署模型
    • 給定特定 AWS 服務決定部署模型
    • 分析連於部署模型的風險和相關修復方針
  3. 應用資源佈建自動化中的安全性概念
    • 根據需求選擇最佳的自動化工具
    • 展示資源佈建之安全性最佳實踐的知識
    • 對一個部署(像是建立、推動等等)所有的週期階段審查 IAM 政策並評估充足但最少的權限是否被賦予
    • 審查憑證管理方案(像是 EC2 參數存放、第三方)
    • 建立自動化
    o CloudFormation 範本、Chef Recipe、Cookbooks、Code pipeline 等等
  4. 在一個部署中決定如何實作生命週期關聯(lifecycle hooks)
    • 決定合適的整合技術以符合專案需求
    • 在一個 Auto Scaling 群組中選擇合適的關聯方案(譬如實作節點失效後的葉節點選擇)
    • 評估關聯實作的失敗影響(如果一個遠端呼叫失、如果一個相依服務暫時無法使用—譬如 Amazon S3—)並推薦彈性上可改善的項目
    • 對失敗影響評估部署推展程序並評估返轉/復原流程
  5. 應用使用 AWS 配置管理工具和服務管理系統所需的概念
    • 辨認 AWS 配置管理工具的優劣
    • 展示配置管理元件的知識
    • 在無需協助下執行端到端配置管理服務同時遵循業界最佳實踐

監控與紀錄系統 (底下沒時間翻了,細節去看原文考試指南吧)

  1. Determine how to set up the aggregation, storage, and analysis of logs and metrics.
  2. Apply concepts required to automate monitoring and event management of an environment
  3. Apply concepts required to audit, log, and monitor operating systems, infrastructures, and applications
  4. Determine how to implement tagging and other metadata strategies

政策與標準自動化

  1. Apply concepts required to enforce standards for logging, metrics, monitoring, testing, and security
  2. Determine how to optimize cost through automation
  3. Apply concepts required to implement governance strategies

事故與事件反應

  1. Troubleshoot issues and determine how to restore operations
  2. Determine how to automate event management and alerting
  3. Apply concepts required to implement automated healing
  4. Apply concepts required to set up event-driven automated actions

高可用性、容錯能力、與災難恢復

  1. Determine appropriate use of multi-AZ versus multi-region architectures
  2. Determine how to implement high availability, scalability, and fault tolerance
  3. Determine the fight services based on business needs (e.g., RTO/RPO, cost)
  4. Determine how to design and automate disaster recovery strategies
  5. Evaluate a deployment for points of failure

實戰經驗談

運算

諸如 EC2 、Elastic Beanstalk、Lambda、 ECS、和 Fargate,你需要對這些服務有著基本的掌握,所謂基本掌握是指說並非將相關的官方文件給看過就好,而是至少你要有透過 Web console 去操作這些服務的經驗,當然若是你夠拼,以 CloudFormation (後面都以 CFN 稱之)或是 CDK 去實際部署、體驗過一遍,那對於考取 DOP 和自己 DevOps 相關的經驗值會是個雙管齊下的提升。

EC2 不外乎能夠拿來當作 AP 或是 API 服務的伺服器,最基本的,你可能會將一個系統,從原本一個功能,根據需求,逐漸地越發茁壯長大,而此時你或許還是透過 key pair 以 ssh 的方式登入這台住有你系統(或是說功能集)的 EC2 在管理支撐你系統或服務的程式碼。除了 ssh 是否還有更加安全的登入方式?EC2 Instance Connect 和 AWS Systems Manger 中的 Session Manager 你是否有操作過?要透過前面兩者登入一台 EC2 伺服器,在權限和配置上,你是否知道需要經過什麼手續才能讓一名使用者透過方才所提到的方式登入?

隨著時間的推移,你可能會意識到,在某些特定時段,發給你服務或伺服器的請求特別的多,你的伺服器無法支撐這樣的用量,你是否知道這時可以考慮使用 Elastic Load Balancing 和 EC2 Auto Scaling 來解決這樣的問題呢?關於 Launch templates (LT)和 Launch configuration (LC),你是否知道這兩者分別可以應用在什麼場景上?Auto Scaling Groups(ASG)和 LT 與 LC 是否有什麼關聯?EC2 自動擴展的生命週期關聯是什麼?生命週期包含哪些階段?scale-out 和 scale-in 後會先經過什麼階段?若是無法預期或是說勾勒出未來的可能流量,在自動擴展的擴展政策中,有哪些選項你可以選擇?了解完所有的擴展政策後,這些政策合適的場景又是什麼?什麼結果會讓自動擴展開始作用?我能不能根據某種條件決定要擴展?我有哪些條件可以選擇?若是自動擴展在 scale in,運算實體被砍掉前,你希望快照一份運算實體或是打成 AMI,你可知道在生命週期關聯中的什麼階段(狀態)可以讓你加入上述客製化的動作?又或者說在 ASG 裡頭執勤中的運算實體,需要加上第二塊網路介面接到一個獨立、管理單位專用的子網段好符合某些規範,在生命週期關聯中又該怎麼做才能達成需求?

Introducing Native Support for Predictive Scaling with Amazon EC2 Auto Scaling ⁴¹

Elastic Load Balancing 中,你知道目前有幾種平衡器 嗎?Application Load Balancer(ALB)和 Network Load Balancer (NLB)在哪些層面上有差異?在 OSI 模型中,它們分別支援哪種 OSI 等級的負載平衡?Lambda 想做負載平衡,該選哪種平衡器?

Elastic Beanstalk 這項服務你是否知道它能自動為你做到哪些事情?組成 Elastic Beanstalk 的元件有哪些?環境有沒有分種類?有的話,這些環境又分別適合拿來處理什麼任務?.ebextensions 是用來做什麼的?它可以做到哪些事情?我能不能透過 .ebextensions 修改運算實體規格?

Model serving in Java with AWS Elastic Beanstalk made easy with Deep Java Library ²⁸

隨著微型服務架構越加普遍,了解其中的觀念¹⁸ ²⁷ ⁴³、歷史演進²⁰ 以及 AWS 中哪些服務可以幫助你建立微型服務 後,你就會開始進入 Lambda、ECS、以及 Fargate 的世界。AWS Lambda 執行環境的生命週期有分哪些階段?有直接支援的程式語言有哪些?如果想在 Lambda 上執行自己想使用而 AWS 沒有直接支援的程式語言,有什麼做法可以達到目的?要執行 AWS Lambda,最基本的權限要有什麼?要透過 Lambda 和其它 AWS 服務互動,又該做什麼事情才能如願?本來架在 EC2 上、具有驗證功能的網頁伺服器,若要改為 Lambda 作為無伺服器服務,原先的架構會出現哪些變化?

How to get notified on specific Lambda function error patterns using CloudWatch ²⁹

ECS 始於 Docker,作為託管服務,當中有哪些組成元件?像是任務定義、自動擴展、容器代理等,組成 ECS 的元素妳需要釐清,將官方文件的常用案例殺來直接動手做、搭配技術文件的說明佐以一杯放入北海道濃醇香牛奶的銷魂拿鐵。ECS 和 ECR 之間又有什麼關聯,它們是互相依存的服務,抑或是說能相互搭配,其中有服務還能獨自拿來做別的事情?

Figure in How Steamhaus Used AWS Well-Architected to Improve Sperry Rail’s Artificial Intelligence System

使用 ECS 在部署你的應用程式或服務時,你還會需要管理網頁伺服器,維運成本依舊有一定的等級,所以抓到用戶需求的 AWS 推出了 AWS Fargate,ECS 容器服務和 AWS Fargate 之間有什麼差異,為什麼 AWS Fargate 的使用量逐漸增多,當你去仔細了解,相信你能體會到什麼是「飯來張口、茶來伸手」的開發體驗。

Figure in Game Server Hosting on AWS Fargate

聯網和內容交付

VPC 方面,你會需要有些掌握,畢竟前面提到的運算服務都是建立在 VPC 之上(撇開 Amazon ECS Anywhere 、Amazon EKS Anywhere、和 AWS Outposts),諸如公開子網段、私有子網段、路由表、Network ACL 和安全群組(Security Group,SG)之間的差別、ENI 是什麼、CIDR 、Internet Gateway、NAT Gateway、VPC endpoints 等等。而 ENI 初步掌握之後,可以再擠點時間去理解 ENI 、ENA、和 EFA ³⁶之間有什麼不同。

Route53 的話,DNS 記錄類型你得去理解有哪些種類,譬如 A、AAAA、CNAME、Alias record 等等。路由政策你至少要看過一遍官方文件,geolocation 和 geoproximity 政策都和地理位置有關,它們的區別又是什麼?DNS 備援可以達到什麼功效?有什麼種類可以選擇來使用 DNS 備援?

開發人員工具

部署模型

這裡就進到部署模型的範疇裡頭來,若是你有仔細看考試指南領域知識中 SDLC 自動化的第 5 點,你會看到藍/綠、金絲雀¹¹ ³⁸、和紅/黑部署模型。關於藍綠部署,我認為 Andy Mui、Vlad Vlasceanu 在 2015 年給的演講會是很好的起頭³²,內容很精要地在 EC2 和 ECS 方面,可以搭配什麼組合進行藍綠部署,除了佛心的比較表,也會提到資料層級方面的策略,譬如藍綠部署準備進行之際,若是資料綱要也變動的話,有什麼方式可以應對。

而紅黑部署則和藍綠部署則可以視為同樣的部署模型,可以去了解一下兩者之間背後的思維,然後專注在藍綠部署上即可,畢竟在一份 CNCF 中標題為《Kubernetes 上的部署策略》的簡報檔中,也把藍綠部署和紅黑部署劃上了等號。

那麼運算方面,可以看到 AWS 提供了相當多的選擇,EC2 的藍綠部署怎麼做?ECS 透過 CFN 的藍綠部署又如何進行³⁹?純 Lambda 要進行金絲雀部署怎麼做³³?若是有個 Lambda 結合 Amazon API Gateway 的無伺服器服務根據需求需要進行版更又希望先維持部分使用者能訪問原本版本的 API,程序上該怎麼進行設定?

Blue/Green Deployments with Amazon Elastic Container Service¹⁶

AWS CloudFormation 與 AWS Serverless Application Model

CFN 的操作你一定要去操作過,光看技術文件你應該無法有太多扎實的掌握。在 CFN 中,跨堆疊的資源參考怎麼做?若是基礎設施逐漸變得龐大,有什麼組織方式在堆疊的建立上可以遵循? cfn-initcfn-signalcfn-get-metadata、和 cfn-hup 是用來做什麼的?有哪些資源支援 UpdatePolicy 屬性? AWS::AutoScaling::AutoScalingGroup 又另外有哪些更細的更新政策可以支援 CFN 管理 ASG?你是否曉得 custom resource 能夠調用 Lambda 函數和 AWS API ?譬如讓存放在版本控制被打開的 S3 儲存貯體中、透過 CFN 管理的 Lambda 程式碼能夠被更新在既有的 S3 儲存貯體中設定給 Lambda 的事件通知(這個 CDK 現在有支援方便的初始化了)、建立和更新 AWS Well-Architected Reviews使得透過 AWS::Serverless::Application部署的 Lambda 函數 ARN 能夠被抓到進而後續的 S3 Object Lambda 部署等。CFN 的 WaitCondition 可以不透過外頭的 Internet 去打信號³⁰

SAM 也是用來部署 AWS 資源的服務,和 CFN 有什麼差異?如何透過 SAM 部署一個無伺服器應用程式?SAM 與 CFN 是否能結合在一起?怎麼透過 SAM CLI 執行本地測試?

Best practices for organizing larger serverless applications¹²

AWS CodeCommit、AWS CodeBuild、AWS CodeDeploy、與 AWS CodePipeline

相信很常聽到的版本控制工具不外乎有 git,而 CodeCommit 則是 AWS 提供的託管版本控制服務。要讓團隊的開發者能對 CodeCommit 的版本庫執行特定 git 指令,在權限上需要怎麼處理?如果要將一個 Git 版本庫轉移到 CodeCommit 上,該怎麼做?若是 CodePipeline 中有個 action 失敗了,有什麼做法可以通知 DevOps 工程師或是相關的開發人員?(不透過 AWS Chatbot)在一個結合 CodeBuild 和 CodeDeploy 的 CodePipeline 管道中,如果想要加入對程式碼的測試,應該怎麼做才能達成目的?在 CICD 管道中,若是要讓應用程式有符合資安的規範,又有什麼可行的做法?CodePipeline 有哪些種類的事件可以監聽,監聽又是透過什麼服務來達成?CodeDeploy 不只能對 AWS 資源進行部署,IDC 的機器也能使用 CodeDeploy,若是 IDC 的機器想透過 CodeDeploy 去部署,先決條件有哪些?跨 AWS 帳號的 CD 管道可以怎麼做?在 CICD 管道中如果會需要用到機敏資料,你是否知道 AWS Systems Manager Parameter Store 和 AWS Secrets Manager 都能在這方面解決安全性的問題?

Figure in CI/CD on Amazon EKS using AWS CodeCommit, AWS CodePipeline, AWS CodeBuild, and FluxCD

儲存

S3 有哪幾種儲存等級,這些儲存等級的差別在哪裡?什麼時候要選智慧型分層、又什麼時候該選單區域 IA ?S3 要透過什麼設定才能讓物件的儲存等級根據時間來做對應的轉換和刪除?存取控制(ACL)又是什麼?S3 預設定義的 ACL 有哪些種類?S3 儲存貯體的貯體政策又是用來做什麼事的?S3 物件標籤可以有什麼應用¹⁴

Amazon RDS 和 AWS DynamoDB 分別作為 RDBS 和 NoSQL 的解決方案,要選擇資料儲存的地點時該選 RDBS 或是 NoSQL,判斷的依據可能會有哪些?NoSQL 並不是說資料就不存在關係,NoSQL 也並非是用來取代 RDBS 的產物,關於這個題目,可以參考 Rick Houlihan 作為 AWS 的 NoSQL Principal Technologist 給的一小時演講²¹,你會有很好的收穫。

Amazon Aurora Global Database 的作用是什麼?AWS DynamoDB Global Tables 又是做什麼用的?不論是 Aurora 或是 DynamoDB,Multi-AZ 和 Multi-region 的備份又該怎麼處理?GSI、LSI 是什麼?RDS方面,為了提高讀或寫的吞吐量,你可能會考慮搭配使用 Amazon ElastiCache ,不論是 Memcached 或是 Redis;DynamoDB ,要達到同樣的效果,你可知道有 DAX²³ 可以選擇? 還有時間的話,再去了解一下 RCU 和 WCU。若是想讓 DynamoDB 的資料基於某種時間頻率讓它自動封存到 S3 中,可以搭配哪些服務做到⁴⁰

Figure in Use Amazon DynamoDB Accelerator (DAX) from AWS Lambda to increase performance while reducing costs

紀錄(log)

CloudTrail 和 CloudWatch 主要的差異是什麼?CloudWatch 的紀錄想達到即時處理,可以怎麼做?CloudWatch Events 和 EventBridge 是否有什麼差異?譬如說想監控跨帳號的 EC2 啟動失敗事件,可以怎麼做?想要紀錄 SES 中的主題、時間戳記、來源 IP 到 CloudWatch 的 log group 中,可以使用什麼服務來達成目的?介面 VPC 端點的網路吞吐量即時監控透過 CloudWatch 是否可以做到?若想要分析紀錄資料,CloudWatch 裡面是否有什麼功能可以讓我做查詢?記錄的儲存地點有沒有選擇?

BBVA: Architecture for Large-Scale Macie Implementation

高可用性、容錯、和災難復原

在有一定程度地對運算、聯網、和儲存服務有所掌握後,接著你可以開始了解高可用性、容錯、和災難復原(Disaster Recovery,DR)的概念是什麼,這方面,我覺得 AWS Well-Architected 系列中的《可靠性支柱》是一本將其概念整理得相當良好的一本內容,至少掌握 DR 分為哪幾種等級,RTO 和 RPO 的定義是什麼?在真實世界中,有時討論的人不見得能理解 backup & restore 或是 pilot light,但是以時間單位交談,大體上你也對得出檯面上的 DR 想做到什麼程度。

而這方面的考題,若是這一區段的開頭所提到的各式服務你沒有相當程度的掌握,你會選得相當痛苦。你需要掌握的不只是服務的功能,不論是備份或是啟動方面,時間上的反應你也該有所比較,如此一來,在跑可靠性支柱的內容時估計你才能有所共鳴。

舉個簡要的例子,一家公司在三大洲有基礎設施,歐洲是基地,亞洲和美洲是擴增區,三洲都有分析人員,平日他們都是透過 web 應用程式在進行他們的分析,資料放在歐洲的一座 DynamoDB裡面,三大區裡面都有自動擴展機制配上 ALB 的 ECS on Fargate 在支撐著 web 應用程式,現在亞洲和美洲的分析人員開始抱怨反應很慢,特定分析執行起來很 QQ,你該怎麼調整整體架構才能送給這些分析人員一個邦·喬飛「 Have a nice day 」的微笑並讓他們嘴巴閉閉?

Figure in Implementing Multi-Region Disaster Recovery Using Event-Driven Architecture

其它

Amazon ES 、AWS Storage Gateway 建議你也需要有些程度的掌握,意即它們的功能是什麼,架構長什麼樣子要有點眉目。AWS OpsWorks 可以用來管理執行個體的組態,它主要基於哪兩種自動化服務?AWS OpsWorks Stacks、AWS OpsWorks for Chef Automate、和AWS OpsWorks for Puppet Enterprise 又分別有什麼不同?AWS OpsWorks 和 AWS Systems Automation 都能做自動化任務,差異在哪裡?Amazon Inspector 在安全性上可以起到幫助的作用,它和 Amazon GuardDuty 差在哪裡?除了可以根據評估規則對特定 AWS 資源掃描弱點外,Inspector 是否還能做其他事情¹⁹?AWS Trusted Advisor 在做什麼?和 AWS Config 的差異在哪邊?AWS Config 規則除了單一帳號中能起作用,若是要在多組帳號中一致性地(或是說中央管理式地)啟動 AWS Config 規則,該怎麼做?如果 AWS Config 規則掃到目標想自動做後續的動作,可以搭配什麼 AWS 來達成自動化?Tag Editor 在幹嘛的?AWS RAM 能做些什麼事?

Improve monitoring of AWS Systems Manager Agent²⁶
How to visualize multi-account Amazon Inspector findings with Amazon Elasticsearch Service³⁷

實作建議

上述帶過的 AWS 服務中,若是可能的話,務必使用 Web console 操作過一遍。不論是 AWS 服務的官方文件所整理的簡單範例(有些其實不能講簡單,我會更傾向使用經典來形容它們),或是 Youtube 影片找到的熱血開發者所製作的影片,都是可以考慮的選擇。像是 ECS,初階範例和自動擴展範例你都是能在廣大的網路世界中尋得的。另外,時間允許,可以透過 CFN 或是 CDK 去兜出一些應用範例,AWS 服務的官方文件、AWS 範例、或是 AWS 部落格一些精彩內容中都會附上 CFN 讓你直接操作,直接頭下去洗,搭配技術文件的描述,你這駕馭才能扎實。最後,你剛好還抽得出時間,那麼就是 使用 CDK 操作基於各樣場景結合上述各種 AWS 資源所打造出來的解決方案。如此一來,相信你一定能在尋找 DOP 的路上,穩穩妥妥。

小弟我的話,工作時,結合 IDC 的 CICD 和純 AWS 解決方案的 CICD 都有接過,後者用過 CFN 和 CDK 去實作過,也曾用 CDK 寫過 CICD 結合 AWS Glue DataBrew的 construct,至於運算方面的服務也用 CFN 和 CDK 寫過,前後端切開的專案、純後端的專案、CloudFront 的 extensions 等等,譬如指向 ALB 的 DNS 紀錄類型選擇、ACM 憑證的申請和換發,諸如此類的。扣掉前面關乎個人的描述,在閱讀新的 AWS 部落格文章時,若有範例,一定盡可能把它們的思路操作過一遍,接著再思考可能的變化。過程其實不輕鬆,但就像是在打線上遊戲一般,從 80 等升到 81 等,就是要 36,065,092 這麼多經驗值,該走的路你就是得走。

總結

DOP 的測驗裡頭,囊括許多被濃縮的真實情境,來考驗你在給定限制或是條件下,你是否能做出合適的抉擇來處理所面對的問題。掌握 AWS 服務的精髓、透過合適的管道了解其它開發者所組出來的解決方案,那麼在面對琳瑯滿目的問題,才能迅速地迎刃而解。

在 DOP 的測驗中,最近發表出來的功能通常不太會看到,運算方面,Lambda container、Amazon ECS Anywhere、Amazon EKS Anywhere、EC2 Auto Scaling 的 Instance Refresh 。聯網方面,譬如 Amazon Route 53 Resolver DNS Firewall²⁵;又或者是 CFN modules¹⁷ 和 CFN registry。DOP 測試的通常較偏大方向,偶爾幾題會比較有深度(細節);關乎 k8s 方面的知識,或許可以考慮的是 CNCF 所策劃的 CKA、CKAD、和 CKS 。

SDLC 自動化方面,隨著行業性質、企業文化等因素,其中的實踐都會有所差異⁴²,但是大方向上,本質並不會差異太多。而 DOP 考驗你的也都是在大方向上面的事情,並且會著重在 AWS 服務本身身上。諸如單元測試、整合測試、靜態分析等方面的細節,都不會在該測驗中看到,不過那些事物的細節,讀者可以考慮加入 Facebook 上的 DevOps Taiwan 群組,撇開年會不談,光從一些 DevOps 專家們的對談,都能有所學習。(當然在群組裡頭,談的不止這些事物,相信我,你總會有收穫)

最後,這次測驗我是透過 Pearson VUE 線上考試,線上考試會有個 protocr 監視你(好害羞 >////<),可以選擇的語系是英語和日語,DOP 測驗我選擇英語考試和英語 protocor。強烈建議一定要使用自己的個人電腦,當然線上考試的說明其實也有寫到建議你使用自己的個人電腦,我就是沒特別留意這點,用了公司電腦去考,結果硬生生被公司種在電腦裡頭的防毒軟體微笑以待,它會擋 VUE 的線上考試程序!

從我和 protocor 商議請他稍等到請有關單位同仁來處理未果、protocor 協助取消考試、最後衝回家裡拿個人電腦再回到網路穩定的環境,就這樣一小時折騰掉。印象深刻的是,早上 10 點 26 分再次購買 DOP,直選早上 10 點半的考試(第一次和第二次的 protocor 不同人),花兩小時寫完 75 題,剩餘的時間檢查,最後三分鐘覺得可以收工交卷,最後拿到了 DOP 的 ONE PIECE。

有考慮這張證照的小夥伴,若你選擇了線上考試,請務必使用個人電腦,trust me, you can make it。想到測驗中心考,可能得等疫情再降溫才能選擇,同時也會少掉購買四分鐘後即可考試的彈性,不過倒是多了使用小白板的福利。若這篇分享讓有意拿 DOP 的你有所收穫,那麽,這篇文章的目的也就達到了。祝各位順利!

Day 2 is stasis. Followed by irrelevance. Followed by excruciating, painful decline. Followed by death. And that is why it is always Day 1. — Jeff Bezos

參考

  1. Construct Hub,
    https://constructs.dev/search?q=scott.hsieh&offset=0
  2. AWS User Group Taiwan Meetup 2021–07 線上小,https://youtu.be/HG8mQ32m970
  3. 不是坐著玩原神就是躺著刷天諭,偶爾膩了就和派翠絲速刷各式西洋韓國劇,最後一部看的是 VOCIE 4 來著。
  4. 台北大縱走,https://gisweb.taipei.gov.tw/release/
  5. Kudzu,https://wiki.guildwars2.com/wiki/Kudzu
  6. AWS Certified DevOps Engineer — Professional,https://aws.amazon.com/tw/certification/certified-devops-engineer-professional/
  7. DOP 考試指南,https://d1.awsstatic.com/training-and-certification/docs-devops-pro/AWS-Certified-DevOps-Engineer-Professional_Exam-Guide.pdf
  8. Amazon Web Services, Inc. or its affiliates., 2017. Running Containerized Microservices on AWS. [ebook] Available at: https://d1.awsstatic.com/whitepapers/DevOps/running-containerized-microservices-on-aws.pdf [Accessed 25 July 2021].
  9. Amazon Web Services, Inc. or its affiliates., 2021. Elastic Load Balancing features. [online] Amazon Web Services, Inc. Available at: https://aws.amazon.com/elasticloadbalancing/features/ [Accessed 7 August 2021].
  10. Amazon Web Services, Inc. or its affiliates, 2021. Error retries and exponential backoff in AWS. [online] Docs.aws.amazon.com. Available at: https://docs.aws.amazon.com/general/latest/gr/api-retries.html [Accessed 31 July 2021].
  11. Ball, D. and Fallahi, K., 2020. AWS CodeDeploy now supports linear and canary deployments for Amazon ECS. [online] Amazon Web Services. Available at: https://aws.amazon.com/tw/blogs/containers/aws-codedeploy-now-supports-linear-and-canary-deployments-for-amazon-ecs/ [Accessed 8 August 2021].
  12. Beswick, J., 2020. Best practices for organizing larger serverless applications. [online] Amazon Web Services. Available at: https://aws.amazon.com/tw/blogs/compute/best-practices-for-organizing-larger-serverless-applications/ [Accessed 8 August 2021].
  13. Bingöl, S., 2020. Exam Readiness : AWS DevOps Engineer Professional (DOP-C01). [online] Medium. Available at: https://medium.com/aws-certified-user-group-turkey/exam-readiness-aws-devops-engineer-professional-dop-c01-975e22b3f98a [Accessed 7 August 2021].
  14. Bhattacharya, S., Benjamin, G. and Natarajan, V., 2021. Simplify your data lifecycle by using object tags with Amazon S3 Lifecycle. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/storage/simplify-your-data-lifecycle-by-using-object-tags-with-amazon-s3-lifecycle/ [Accessed 8 August 2021].
  15. Chapman, C., 2020. Creating a secure DevOps pipeline for AWS Service Catalog. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/mt/creating-a-secure-devops-pipeline-for-aws-service-catalog/ [Accessed 8 August 2021].
  16. Cowan, J., Sharma, A. and Dalbhanjan, P., 2017. Blue/Green Deployments with Amazon Elastic Container Service. [online] Amazon Web Services. Available at: https://aws.amazon.com/tw/blogs/compute/bluegreen-deployments-with-amazon-ecs/ [Accessed 18 July 2021].
  17. DeJong, K., 2020. Introducing AWS CloudFormation modules. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/mt/introducing-aws-cloudformation-modules/ [Accessed 28 July 2021].
  18. Docker Inc., 2021. Configure logging drivers. [online] Docker Documentation. Available at: https://docs.docker.com/config/containers/logging/configure/ [Accessed 31 July 2021].
  19. Dodge, C. and Quigg, S., 2018. A simpler way to assess the network exposure of EC2 instances: AWS releases new network reachability assessments in Amazon Inspector. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/security/amazon-inspector-assess-network-exposure-ec2-instances-aws-network-reachability-assessments/ [Accessed 1 August 2021].
  20. Hochstein, L., Prytoegrian, Siqueira, D., Basgall, S., Smith, S., Harvey, A. and Berry, C., 2016. Netflix/chaosmonkey: Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures. [online] GitHub. Available at: https://github.com/netflix/chaosmonkey [Accessed 31 July 2021].
  21. Houlihan, R., 2018. Amazon DynamoDB Deep Dive: Advanced Design Patterns for DynamoDB (DAT401). [video] Available at: https://youtu.be/HaEPXoXVf2k [Accessed 8 August 2021].
  22. Jayendra’s Cloud Certification Blog. 2021. AWS Certified DevOps Engineer — Professional (DOP-C01) Exam Learning Path. [online] Available at: https://jayendrapatil.com/aws-certified-devops-engineer-professional-exam-learning-path/ [Accessed 24 May 2021].
  23. Idziorek, J., 2017. Amazon DynamoDB Accelerator (DAX): A Read-Through/Write-Through Cache for DynamoDB. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/database/amazon-dynamodb-accelerator-dax-a-read-throughwrite-through-cache-for-dynamodb/ [Accessed 8 August 2021].
  24. Intellipaat, 2019. Puppet Tutorial for Beginners | Puppet Tutorial | Intellipaat. [video] Available at: https://www.youtube.com/watch?v=kHD4KQKKP5Y [Accessed 3 August 2021].
  25. Ismail, M. and Bentzen, M., 2021. Secure your Amazon VPC DNS resolution with Amazon Route 53 Resolver DNS Firewall. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/networking-and-content-delivery/secure-your-amazon-vpc-dns-resolution-with-amazon-route-53-resolver-dns-firewall/ [Accessed 7 August 2021].
  26. Lempka, R., 2021. Improve monitoring of AWS Systems Manager Agent. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/mt/improve-monitoring-of-aws-systems-manager-agent/ [Accessed 7 August 2021].
  27. Lewis, J. and Fowler, M., 2014. Microservices. [online] martinfowler.com. Available at: https://martinfowler.com/articles/microservices.html [Accessed 31 July 2021].
  28. Liu, F., 2021. Model serving in Java with AWS Elastic Beanstalk made easy with Deep Java Library. [online] Amazon Web Services. Available at: https://aws.amazon.com/tw/blogs/machine-learning/model-serving-in-java-with-aws-elastic-beanstalk-made-easy-with-deep-java-library/ [Accessed 2 August 2021].
  29. Malhotra, S. and Mathur, R., 2020. How to get notified on specific Lambda function error patterns using CloudWatch. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/mt/get-notified-specific-lambda-function-error-patterns-using-cloudwatch/ [Accessed 9 August 2021].
  30. Meyer, C., 2018. Signaling AWS CloudFormation WaitConditions using AWS PrivateLink. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/mt/signaling-aws-cloudformation-waitconditions-using-aws-privatelink/ [Accessed 31 July 2021].
  31. Miguelez, B. and Chapman, C., 2020. Standardizing CI/CD pipelines for .NET web applications with AWS Service Catalog. [online] Amazon Web Services. Available at: https://aws.amazon.com/tw/blogs/devops/standardizing-cicd-pipelines-net-web-applications-aws-service-catalog/ [Accessed 3 August 2021].
  32. Mui, A. and Vlasceanu, V., 2015. (DVO401) Deep Dive into Blue/Green Deployments on AWS. [video] Available at: <https://youtu.be/aX54mhZbN58> [Accessed 17 July 2021].
  33. Munns, C., 2017. Implementing Canary Deployments of AWS Lambda Functions with Alias Traffic Shifting. [online] Amazon Web Services. Available at: https://aws.amazon.com/tw/blogs/compute/implementing-canary-deployments-of-aws-lambda-functions-with-alias-traffic-shifting/ [Accessed 5 August 2021].
  34. Peven, B., 2020. Introducing Instance Refresh for EC2 Auto Scaling. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/compute/introducing-instance-refresh-for-ec2-auto-scaling/ [Accessed 31 July 2021].
  35. Rakesh Singh, 2021. Blue/Green deployment with AWS Developer tools on Amazon EC2 using Amazon EFS to host application source code. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/devops/blue-green-deployment-with-aws-developer-tools-on-amazon-ec2-using-amazon-efs-to-host-application-source-code/ [Accessed 7 August 2021].
  36. Rathore, A., 2020. AWS Networking — ENI, ENA & EFA. [online] Medium. Available at: https://medium.com/nerd-for-tech/aws-networking-eni-ena-efa-2db316fdbf85 [Accessed 6 August 2021].
  37. Saha, M., 2020. How to visualize multi-account Amazon Inspector findings with Amazon Elasticsearch Service. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/security/how-to-visualize-multi-account-amazon-inspector-findings-with-amazon-elasticsearch-service/ [Accessed 1 August 2021].
  38. Sato, D., 2014. bliki: CanaryRelease. [online] martinfowler.com. Available at: https://martinfowler.com/bliki/CanaryRelease.html [Accessed 31 July 2021].
  39. Sharma, A., Cowan, J., Sosiak, Y., Dalbhanjan, P. and Siri, J., 2017. Reference architecture for doing blue green deployments on ECS. [online] GitHub. Available at: https://github.com/aws-samples/ecs-blue-green-deployment [Accessed 31 July 2021].
  40. Wagner, A., 2017. Automatically Archive Items to S3 Using DynamoDB Time to Live (TTL) with AWS Lambda and Amazon Kinesis Firehose. [online] Amazon Web Services. Available at: https://aws.amazon.com/tw/blogs/database/automatically-archive-items-to-s3-using-dynamodb-time-to-live-with-aws-lambda-and-amazon-kinesis-firehose/ [Accessed 8 August 2021].
  41. White, E., Horsfield, S. and Sethi, A., 2021. Introducing Native Support for Predictive Scaling with Amazon EC2 Auto Scaling. [online] Amazon Web Services. Available at: https://aws.amazon.com/blogs/compute/introducing-native-support-for-predictive-scaling-with-amazon-ec2-auto-scaling/ [Accessed 8 August 2021].
  42. Wikipedia, 2021. Conway’s law. [online] En.wikipedia.org. Available at: https://en.wikipedia.org/wiki/Conway's_law [Accessed 31 July 2021].
  43. Wiggins, A., 2017. The Twelve-Factor App. [online] 12factor.net. Available at: https://12factor.net/ [Accessed 31 July 2021].

--

--

Scott Hsieh (史考特)

10 x AWS-certified, Data Architect in the 104 Corporation. An AWS Data Hero