AWS Elastic Beanstalk & Devops 網站維運實戰

Day18 - AWS DevOps(1)

01

如果要粗略的了解AWS DevOps 可以大約看一下下列的連結
DevOps 與 AWS

這邊來說最重要的一點就是這張圖片

這邊包含了持續部署的相關服務

但是您可能會很感覺整個說明的很模糊

實際上的流程如果是以這張網路上找到的圖可能是比較好的流程

以生產作業來說

整個流程就是

生產(產生程式碼) -> 測試(測試程式碼是否合乎規格與需求) -> 正式組裝(Deploy) -> 出產(服務運作)

如果把它全講可能又是一年的鐵人賽了

基本上介紹必要的東西

做最基礎的DevOps這才是跨入這領域最重要的一步

Day19 - AWS Devops(2)

02

Devops就不得不談到git

git是Devops的起點

AWS也有提供git相關的服務 AWS CodeCommit

他是AWS上面一個蠻實在的服務

小量使用您可以不用花到費用就可以有私人git的服務

而不像是GitHub如果不付錢就只有把程式碼公開一條路

基本上他的操作沒有特別複雜的地方

操作手冊如連結 什麼是 AWS CodeCommit

基本上只要會使用git的人

就可以很快上手CodeCommit

Day20 - AWS Devops(3)

03

AWS Devops 中有個角色不可或缺但是如果是用Elastic Beanstalk

基本上一定會被忽略的服務 AWS CodeDeploy

官方連結 CodeDeploy

要說他怎麼用或是能做什麼

說出個長篇大論絕對沒問題

但是要用一個簡單的說法就是CodeDeploy收到程式碼後協助去將程式碼塞進主機

但是因為Elastic Beanstalk已經是內建了所以會沒有機會設定這些東西

04

有人將程式碼塞進主機

也需要有人發現程式碼更新了將程式碼取出來

負責這工作的就是 AWS CodePipeline

官方連結 CodePipeline

他的工作很簡單就是不停的去看git更新了沒

一但更新了就將他取出交給CodeDeploy去處理

當然這都是最簡單的說法

實際執行上會有很多細節的問題需要處理

Day21 - AWS Devops(4)

05

CodeBuild

官方連結 AWS CodeBuild

這服務簡單來說就是幫你測試程式碼是否可以正常的運行

如果以AWS內服務來結合的話

可以直接結合在CodePipeline的流程之中

原先是

CodeCommit -> CodePipeline -> CodeDeploy -> 目標主機中

新增CodeBuild之後

測試成功的狀況之下
CodeCommit -> CodePipeline -> CodePipeline送CodeBuild進行測試-> CodeBuild測試成功並告知CodePipeline -> CodePipeline繼續部署 -> CodeDeploy -> 目標主機中

測試之敗的狀況之下
CodeCommit -> CodePipeline -> CodePipeline送CodeBuild進行測試-> CodeBuild測試失敗並告知CodePipeline -> CodePipeline暫停部署並通知部署失敗

在這個狀況一下可以大幅減低基礎測試的時間與人力

進而把人力投入到流程邏輯錯誤的測試上

Day22 - AWS Devops(5)

06

X-Ray

這個服務在AWS中很少被提起

也可能是因為這是個很少人提到的服務

這個產品比較是偏向於開發者問題排除的工具與IT對於效能上的監控

但由於支援的程式碼種類較少

只有Node.js、Java、.NET

導致目前適用的族群較小

但是如果您剛好是這三個語言的族群

蠻適合來用用的

官網上有張圖可以很直覺的讓使用者瞭解到他是多厲害

在正確的設定之下

他可以將您程式畫出一張架構圖

並標示個服務之間的狀況及是否有故障或緩慢的狀態

這是個如果恰巧就一定要用的服務

Day23 - AWS Devops(6)

實際建置

實際建置上會以 AWS CodeCommit + AWS CodePipeline 進而部署在Elastic Beanstalk

01

首先就來看整個的建置過程

由於最近介面改成新版所以有些東西位置都大改了,跟原本的介面差蠻多的

02

點選 Create repository

03

填寫Repository name後就可以點選Create建立專屬的Git庫

04

這樣就建立完成了

這時候就可以看到要如何連結的方式

建議都是以SSH為主

Day24 - AWS Devops(7)

實際建置

05

AWS Codecommit 操作方式

這個如果要說篇幅實在有點長

建議可以參考此連結的GIT教學

Git官方教學

如果讀完了Git官方教學代表你對GIT操作有一定程度的瞭解了

那就可以來看 AWS Codecommit官方的介紹文件

連線方式可以參考上篇文章的位置

來進行連線

需特別注意的是MAC用戶

只能用SSH連線

http問題很多

連線方式可以參考 在 Linux, macOS, or Unix 上對 AWS CodeCommit 儲存庫建立 SSH 連線的設定步驟

Day25 - AWS Devops(8)

實際建置

06-1

在建立AWS Codecommit 之後

只需要使用aws codepipeline就可以快速將服務串接起來

依樣回到新版的畫面

點選「Create pipeline」即可開始建立

Step 1中

只需要填入Pipeline name就可以直接點選Next進到下一步

Step 2 Add source stage

點選來源在這邊就是選擇AWS Codecommit 並選擇哪個GIT跟分支

Step 3 Add build stage

看需求基本上如果初學者我建議先跳過選「Skip」

Day26 - AWS Devops(9)

實際建置

06-2

Step 4 Add deploy stage

這邊可以看到他可以部署到的地方有不少

這邊我通常來說都是選擇Elastic Beanstalk

因為我很常幫客戶建立Elastic Beanstalk

但是如AWS CodeDeploy也是蠻常見的

因為他很常用來設置在EC2或者是混合雲上

如果是對Amazon Elastic Container Service 也可以嘗試做部署

Step 5 Review

最後的環境確認

如果確認沒問題就可以點選 Create pipeline來進行建立

確認結果

再點選Create pipeline之後會進到下個頁面

這時就會開始自動化的進行確認即部署了