AWS lambda vs ec2 vs Azure Web App 架站服務比較

me
林彥成
2017-10-12 | 2 min.
文章目錄
  1. 1. Lambda
  2. 2. AWS EC2
  3. 3. Azure Web App
  4. 4. Azure App Service
  5. 5. Azure 網站管理

這篇文章將簡介常見的架站雲端服務 AWS lambda,ec2, Azure。

Lambda

對一個大部分時間都在看前端工程師來說 serverless 聽起來是一個蠻夢幻的解決方式,而 AWS lambda 就是這樣的一個解決方案,並不需要過多的伺服器設定馬上就可以讓網站上線了,初步只是想做嘗試的話,網路上已經有人寫了一個小工具 - scandium tool,當然還是需要先使用 aws command line tool 先初始化 AWS 相關設定。

好處就是不用顧機台,而且不用擔心會掛掉。

Scandium tool 這個工具在發布時會讀取相關配置進行發佈,一些可能的問題大概是靜態檔案要自行放至其他地方,lambda 本身好像並不能讓你放靜態檔案? 初步用起來感覺比較適合單純的後端頂多加簡單的樣板像 ejs 配合使用,然後靜態檔案都放到 S3 去這樣~ 如果是比較複雜的 SPA 還有拆分 chunk 外加一些建置過的樣式檔,還有相關靜態 resoure 因為還要設路徑等等,發佈就變很麻煩,如果有自己寫好一個 S3 資源管理,圖片就都可以用固定聯結,可能較不會有資源檔的問題。

AWS EC2

就是一部虛擬機器,好處是不需要重新學習太多 AWS 的相關知識,只要注意好開 port 保存好存取的 key 原則上並沒有太多問題,如果需要管理 domain 我的認知上在 lambda 是沒辦法做 proxy 的,就會需要其他額外的服務,那 ec2 上只需要架個 nginx 就能輕鬆解決,nginx 也可以解決大家常會提到 c10k 的問題(lambda 應該是連有都不會有 xddd)。

接著是linux 系統上的網站管理(nodejs),可以參考這篇文章。

上可以架設 jenkins 或著利用其他環境上的 jenkins 透過 ssh 去發佈

Azure Web App

如果利用 Azure 來當作網站服務的平台,平常開發時只會用到 Slot 中的 Web App,簡單的設定就可以跟常用的版控工具做持續發布,可以跟版控像是 bitbucket 連接,連接的流程就是透過 Azure 介面登入 bitbucket 然後選擇專案和需要同步的 branch 就可以了,由於是使用 Node 當 server 目前看起來是設定 web 的 config 檔就可以跑起來,如果測試到一半發現有些單機沒測出來的問題,沒關係也可以重新 Deploy 之前的版本~

Azure App Service

上線的服務則會使用 App Service,App Service 的部分則由剛剛的 Web App 交換過來,這是什麼意思呢?就是說當測試網站測試 OK 後就直接原封不動將專案置換成 App Service,有問題也可以隨時再換回來,若需要 CORS 也可以很方便的設定~

Azure 網站管理

那為什麼會突然提到網站管理呢?這次會用到的原因是因為跳警告說我們用的方案記憶體用量即將爆炸,但又從來沒有用過雲端的,也不知道從何看作業系統或是容器狀態,所以這次想找出時間點或是如何監看 Server 端狀態的工具,如果只需要看七天內的系統狀態,可以直接點儀表板進入 Metrics,可以看到 CPU 資料流量記憶體用量請求次數統計等等,那如果需要看一些 log 那就需要進階一點的服務:Kudu service,由於這篇介紹很詳細了,所以以下略過?(誤) 其實只要在 “專案名稱.azurewebsites.net” 加上 .scm 變成 “專案名稱.scm.azurewebsites.net” 不管是 App Service 或是 Web App 都可以進去看相關的資訊~

我有用到的有以下兩種:

  1. Diagnostic dump,真的就是把整個有 log 的資料夾匯出,找到想看的
  2. Log stream,可以即時的顯示 server 端的 log,只是開啟的速度真的慢到不行

當程式碼發佈到 Azure 時,其實會偷偷執行一些動作,若需要客製化就需要參考官方文件,執行 kuduscript -y --node 來產生相關配置檔,裡面就可以看到熟悉的指令,再按照需求去增修即可~


喜歡這篇文章,請幫忙拍拍手喔 🤣


share