終於來到第十天了,也就是我們終於走完到 1/3 了!(ノ>ω<)ノ
昨天把 Next.js 專案包成了 Docker image,也說今天要來開機器。不過開之前先停一下,把 AWS 的服務攤開,你會發現竟然有 200 多種!光看名字就快暈了。
好消息是,部署這次的專案,只需要先認識其中幾個。今天就先看看專案上 AWS 有哪些常見路線、各自幫你管到哪一層,再來說為什麼這個系列選擇 EC2 ㄅ!
剛剛有說 AWS 的服務有很多種,從拿到一台空機器什麼都自己來的 EC2,到完全不用碰機器的 S3,這邊介紹幾個部署專案最常遇到的。
先分清楚:EC2 可以執行網站程式,S3 可以提供靜態網站檔案,RDS 則是搭配應用程式使用的資料庫,這幾個服務也可以一起使用。
EC2 簡單來說就是向 AWS 租用一台 VM(Virtual Machine),可以選擇作業系統與機器規格,依使用時間付費。
這樣不用在專案初期就先買硬體,之後也能依需求調整規格。不過更換規格通常需要先停機,實際成本則要看使用方式。
EC2 有提供像是 AMI Marketplace(Amazon 系統映像市集)、AMI(Amazon 系統映像)、Instance(虛擬主機)、Userdata(使用者資料)、EBS、Tag(標籤)、Security Group(安全群組)、KeyPair(金鑰對)這些跟傳統伺服器採購時類似的功能
很多公司可能會遇到把資料都放到一個共享檔案伺服器上,裡面可能有大數據專案資料、公司專案,以及網站的美工圖檔和靜態網站檔案。所以常會遇到把伺服器的硬碟塞爆的情況,所以 AWS 為此推出一個儲存無上限的 **S3(Simple Storage Service)**服務。
S3 裡面有兩大核心要件: Bucket 與 Object,就像檔案空間與檔案之間的關係。
S3 有多種儲存體像是 S3 Standard、S3 IA、S3-OneZoneIA 與 Glacier 等,使用者可以根據自己檔案存儲的 Availability(可用性)與 Durability(耐用性) 來選擇要用規格方案。
一般網站經常讀取的圖片和靜態檔案,可以先從 S3 Standard 開始;較少讀取的資料或長期封存,則可以再評估 Standard-IA、Glacier 等儲存類別。
除了自己在 EC2 上架設 MySQL、PostgreSQL 等資料庫外,AWS 也有提供受管的 RDS 服務。
兩者的一個主要差異,在於誰負責管理底層系統。一般 RDS 的作業系統由 AWS 管理,使用者不會直接登入底層作業系統操作;在 EC2 自架資料庫,則可以自行調整系統,也需要自己負責維護。
AWS RDS 只支援 7 種主要資料庫引擎,分別為 Amazon Aurora(AWS 自研的雲端原生資料庫)、PostgreSQL、MySQL、MariaDB、Microsoft SQL Server、Oracle、 IBM Db2
像是 Vercel 這類部署平台很方便,能幫忙處理部署、自訂網域,串接 Git 後也能在更新程式碼時自動部署。
這個系列選擇 EC2,是想親手把部署、自訂網域等流程都跑過一遍。雖然需要自己花時間設定和維護,但能更了解那些 PaaS 究竟幫你做了什麼,遇到問題時也比較知道該從哪裡查起。
明天就來開第一台機器ㄅ!