Learning Objectives
- 說出雲端運算的意思,以及 NIST 定義的五個基本特性
- 說明虛擬化怎麼把一台實體主機分給很多使用者,分辨虛擬機與容器
- 分辨 IaaS、PaaS、SaaS:各自由誰管理哪一層
- 分辨公有雲、私有雲、混合雲與社群雲
- 解釋彈性擴展(水平與垂直)與「用多少付多少」的計價方式,以及使用雲端要注意的事
選課那天系統為什麼會塞爆
選課開放的那一刻,幾千人同時按下「加選」,系統變得很慢甚至打不開;過了幾天,同一套系統幾乎沒人用。 如果學校為了那幾個小時買足夠多的伺服器,一年裡大部分時間它們都閒著;買得不夠,選課當天就會出問題。
雲端運算(cloud computing)的想法是:運算資源不一定要自己買、自己顧,可以向別人租,需要多少就租多少,用完就還。 你的照片自動備份、線上文件、影音串流,背後都是這樣運作的。
美國國家標準與技術研究院(NIST)在 2011 年的文件 SP 800-145 裡,給了雲端運算一個常被引用的定義,包含五個基本特性:
| 基本特性 | 意思 | 生活化的說法 |
|---|---|---|
| 隨選自助服務(on-demand self-service) | 自己在網頁上點一點就能開機器,不必找業務人員 | 像自助點餐 |
| 廣泛的網路存取(broad network access) | 透過網路、用各種裝置都能使用 | 手機、筆電都連得上 |
| 資源共享(resource pooling) | 服務商的大量硬體由很多客戶共用,動態分配 | 同一棟機房裡,你的虛擬機旁邊可能是別家公司的 |
| 快速彈性(rapid elasticity) | 資源可以快速增加或減少 | 選課當天加機器,隔天減回來 |
| 可量測的服務(measured service) | 用了多少都被計量,可以依用量計費 | 像水電費 |
這一課要回答:一台實體主機怎麼分給很多人用、租的時候「你管什麼、服務商管什麼」、雲有哪幾種部署方式,以及彈性擴展與計價怎麼運作。
虛擬化:一台實體主機切成很多台
雲端能「出租」運算資源,靠的是虛擬化(virtualization):用軟體把一台實體主機的 CPU、記憶體、儲存空間切開, 讓好幾個彼此隔離的環境同時在上面執行。
- 虛擬機(virtual machine,VM):由虛擬化管理程式(hypervisor)模擬出一台完整的電腦,每台虛擬機都有自己的作業系統。 你在雲端租一台 Ubuntu 主機,拿到的通常就是一台虛擬機。
- 容器(container):多個應用程式共用主機的作業系統核心,每個容器只帶自己需要的程式與函式庫,所以更輕、啟動更快;但隔離程度不如虛擬機。
| 由下往上 | 虛擬機 | 容器 |
|---|---|---|
| 最底層 | 實體主機 | 實體主機 |
| 第二層 | 虛擬化管理程式(hypervisor) | 主機作業系統(所有容器共用核心) |
| 第三層 | 每台虛擬機各有一份作業系統 | 容器引擎(例如 Docker) |
| 最上層 | 每台虛擬機裡的函式庫+應用程式 | 每個容器裡的函式庫+應用程式 |
虛擬化讓服務商可以把很多客戶放在同一批硬體上(資源共享),也可以在幾分鐘內幫你開出新機器(隨選、快速彈性)。
服務模型:IaaS、PaaS、SaaS
向雲端租資源,可以租到不同的「高度」。從下往上,一台能執行網站的電腦有這些層:
資料與帳號權限
應用程式(你的網站、程式)
執行環境(Python、資料庫軟體)
作業系統
虛擬化
實體硬體、網路、機房
租的層次越高,你要管的越少,能自訂的也越少:
| 服務模型 | 服務商提供 | 你要管 | 例子 |
|---|---|---|---|
| IaaS(基礎設施即服務) | 機房、硬體、網路、虛擬化 | 作業系統以上:安裝更新、防火牆、軟體、程式、資料 | 租一台雲端虛擬機,自己裝 Ubuntu 與網頁伺服器 |
| PaaS(平台即服務) | 再加上作業系統與執行環境 | 自己的程式與資料 | 把寫好的程式上傳到應用程式平台,平台幫你執行、擴展 |
| SaaS(軟體即服務) | 整套軟體 | 自己的資料與帳號權限 | 線上文件、雲端信箱、線上試算表、學校的學習平台 |
自己買伺服器放在自己的機房,叫地端(on-premises),全部都要自己管。
不管是哪一種模型,資料與帳號權限永遠是你的責任:服務商顧好機房與系統,但把檔案設成「任何人都能看」、密碼外洩,仍然是使用者這一端的問題。 這種「各管一部分」的分工常被稱為責任共擔(shared responsibility)。
部署模型:公有雲、私有雲、混合雲
「雲」不一定在別人的機房。依照誰可以使用、設備屬於誰,NIST 分成四種部署模型:
| 部署模型 | 誰可以使用 | 例子 |
|---|---|---|
| 公有雲(public cloud) | 開放給任何付費客戶,大家共用服務商的設備 | 大型雲端服務商提供的虛擬機、儲存、資料庫服務 |
| 私有雲(private cloud) | 只給單一組織使用,可以自建,也可以委託別人代管 | 學校或醫院在自己的機房,用虛擬化平台提供校內單位自助開機 |
| 社群雲(community cloud) | 幾個需求相近的組織共同使用 | 數個研究機構共用一套運算平台 |
| 混合雲(hybrid cloud) | 兩種以上組合起來,資料與工作可以在之間移動 | 敏感的個人資料留在私有雲,對外的網站放在公有雲,尖峰時把運算移到公有雲 |
選擇時常考慮的因素:
- 資料放在哪裡:個人資料、病歷、研究資料可能有法規或合約限制,要知道資料存放在哪一個國家或地區
- 成本與彈性:公有雲不必先買設備、可以隨時增減;用量長期穩定且很大時,自建不一定比較貴
- 控制權:私有雲可以自己決定硬體與安全設定,但也要自己顧
想一想:服務模型與部署模型
一門課的同學要一起編輯同一份線上試算表,打開瀏覽器就能用,不必安裝也不必管伺服器。這屬於哪一種服務模型?
你在雲端租了一台虛擬機,自己安裝 Ubuntu 與網頁伺服器。作業系統的安全性更新應該由誰負責?
一家醫院把病歷資料庫放在自己機房的虛擬化平台,對外的掛號網站放在公有雲。這是哪一種部署模型?
彈性擴展:流量來了加機器,走了減機器
伺服器忙不過來時,有兩種擴展方式:
| 方式 | 做法 | 特點 |
|---|---|---|
| 垂直擴展(scale up) | 換一台更強的機器:更多 CPU、更多記憶體 | 程式不用改;但單台機器有上限,換機器時常要停機 |
| 水平擴展(scale out) | 多開幾台一樣的機器,前面放負載平衡器分配請求 | 幾乎可以一直加;程式要設計成多台一起跑也沒問題 |
雲端最常用的是自動擴展(auto scaling):設定一條規則,例如「平均 CPU 使用率連續一段時間超過 70% 就加一台,低於 30% 就減一台」, 由系統依實際流量自動增減。尖峰時多開幾台撐住,離峰時減少台數,不必一直為了最忙的那幾個小時付錢。
用多少付多少:計價方式與要注意的事
雲端的計價方式像水電費:依用量計算(可量測的服務)。常見的計價單位:
| 資源 | 怎麼計 |
|---|---|
| 虛擬機 | 依規格(CPU 核心數、記憶體)× 開機的時間;關機通常就不計運算費用,但磁碟仍持續計費 |
| 儲存空間 | 依存放的容量 × 時間 |
| 網路流量 | 常常是傳出雲端的流量另外計費 |
| 按次計價(無伺服器) | 不必開一台一直待命的機器,依請求次數與實際執行時間計費;沒人使用時幾乎不花錢 |
好處是不必先花一大筆錢買設備,也不必猜未來的用量;但也有要注意的地方:
- 開著就計費:做完實驗忘了關機、忘了刪除不用的磁碟,月底會收到意外的帳單。多數服務商可以設定預算提醒。
- 費用不容易預估:流量暴增時費用也跟著增加;長期穩定的大量使用,租用不一定比自建便宜。
- 廠商綁定(vendor lock-in):用了某家服務商特有的功能,日後要搬到別家就比較麻煩。
- 依賴網路與服務商:網路斷了、服務商出問題時,服務也跟著停;重要的系統會分散在多個區域備援。
價格會依服務商、區域、方案而不同,也常常調整,要以官方的計價頁面為準;學生方案與免費額度也常有變動。
想一想:擴展與計價
選課系統在選課當天多開了 5 台一樣的伺服器,由負載平衡器分配請求;選課結束後再減回來。這是哪一種做法?
同學在雲端開了一台虛擬機做期末專題,報告完一直沒關機也沒刪除。最可能發生什麼事?
重點整理
- 雲端運算是透過網路,依需要租用運算資源;NIST SP 800-145(2011)列出五個基本特性:隨選自助、廣泛網路存取、資源共享、快速彈性、可量測的服務。
- 虛擬化把一台實體主機切成多個隔離的環境:虛擬機各有作業系統,容器共用主機核心、更輕更快。
- 服務模型:IaaS 租到虛擬機(作業系統以上自己管)、PaaS 只管程式與資料、SaaS 直接用軟體;資料與帳號權限永遠是使用者的責任。
- 部署模型:公有雲、私有雲、社群雲、混合雲;選擇時考慮資料存放地點、成本、彈性與控制權。
- 擴展:垂直擴展換更強的機器,水平擴展多開幾台;自動擴展依流量自動增減。
- 計價:用多少付多少,開著就計費;注意意外帳單、費用預估、廠商綁定與對網路的依賴。
下一課:系統放上網路之後,要怎麼保護它?我們來看資訊安全:惡意程式、常見的攻擊、加密、雜湊與數位簽章。
想實際在雲端開一台虛擬機、把網站部署上線,可以接著上雲端軌;想學把程式打包成容器,可以接著上 Docker 軌。