內容已複查
36 分鐘 · 6 張概念卡 · 6 題對應考古題

虛擬化、容器與 Serverless:分清隔離邊界

本頁為依教材與考古題整理的原創摘要;考古題答案經技術覆核,但不是官方答案。

第一次接觸也沒關係

這堂先懂這些詞

先記住白話意思,不必急著背英文。看到正文時,再把正式名稱接回來。

容器

也會看到:container、Docker container、容器化

把應用程式與相依環境封裝起來,但通常共享主機作業系統核心。

生活例子:
像便當盒分開裝菜,仍共用同一台冰箱與廚房。
別搞混:
容器不是完整虛擬機,隔離邊界與共享核心要另外評估。

虛擬機監控器

也會看到:hypervisor、VMM

在硬體與虛擬機之間分配 CPU、記憶體與裝置的管理層。

生活例子:
像大樓管理員把整棟資源分給不同住戶使用。
別搞混:
hypervisor 不是虛擬機裡的作業系統,也不是容器引擎。

無伺服器運算

也會看到:serverless、FaaS、Function as a Service

雲端平台代管伺服器與擴縮,使用者專注部署函式並依使用量付費。

生活例子:
像叫車時只管目的地,不必買車、保養或排司機班表。
別搞混:
serverless 背後仍有伺服器,只是營運責任轉交平台。

虛擬化與叢集

也會看到:virtualization、virtual machine、cluster、guest OS、host

虛擬化在一台實體機切出隔離環境;叢集則讓多台機器協同提供服務。

生活例子:
前者像一棟樓切成多間套房,後者像多家分店互相支援。
別搞混:
虛擬化不會自動帶來高可用,叢集也不等於把一台主機切成多台。

從 hypervisor 與 virtual machine 出發,比較 container 的共享 kernel 模型,再辨認 cluster、network virtualization 與 serverless 各自解決的問題。對應考古題答案均為非官方技術覆核。

先抓住這幾件事

  • 說明 virtualization、hypervisor、host 與 guest OS 的關係
  • 比較 virtual machine 與 container 的隔離邊界、啟動成本及相依條件
  • 區分 virtualization 與 clustering,並判斷兩者對可用性和資安的影響
  • 解釋 serverless 的資源管理與計費抽象,而不誤解為沒有伺服器

先想像這個場景

共享辦公大樓裡的獨立公司

同一棟辦公大樓可以切成多個互相隔離的工作空間。某些公司租下包含自己完整設備的一整間套房,像擁有自己的作業環境;另一些團隊只帶應用與用品進共享辦公室,沿用大樓共同的核心設施。兩者都能隔開工作負載,但隔離邊界與額外成本並不相同。

先別急著往下看,花十秒想一想:

一個舊系統必須使用與 host 不同的 kernel,只把它裝進一般 container 就能滿足需求嗎?還是需要有自己 guest OS 的 VM?

把故事換成電腦語言

生活中的角色對應到技術概念
提供空間、電力與設備的整棟實體辦公大樓host 提供 physical CPU、memory、storage 與 devices
大樓管理者替各套房分配空間並避免互相占用hypervisor 隔離並仲裁分配給 virtual machines 的 hardware resources
擁有自己完整內部設施與管理規則的獨立套房VM 看見 virtual hardware,通常包含自己的 guest OS 與 kernel
多個團隊各有獨立房間,但共用大樓核心設施containers 隔離 processes、filesystems 與 networks,但共享 host OS kernel
臨時活動只預約使用時段,空間配置與收拾都交給場地方serverless 由 provider 管理 provisioning、patching 與 scaling,常依實際呼叫與資源使用計量

題目出現這些字,先想到

  • 每個 instance 有自己的 guest OS/kernel、虛擬硬體:先想到 VM;多個 instances 共享 host kernel:先想到 containers。
  • 分配並仲裁 VMs 的 CPU、memory 與 devices 是 hypervisor;Type 1 直接控制硬體,Type 2 位於 host OS 上。
  • Cluster 是多 nodes 協同以提升 capacity、performance 或 availability,不是 virtualization 的同義詞,也不自動提供 security。
  • Serverless 是 provider 隱藏 server management、常按使用量計費;仍要考慮 cold start、配額、外部狀態與下游瓶頸。

1.Virtualization 把實體資源變成邏輯資源

Virtualization(虛擬化)是把一份實體資源(CPU、記憶體、儲存、網路)抽象成多份邏輯資源的技術。最常見的形式是 server virtualization — 在一台 physical server 上同時運行多個 virtual machines(VM),每個 VM 有自己的 OS 和應用程式,彼此隔離。 【Hypervisor(虛擬機器監控器)】管理 VM 的軟體叫做 hypervisor,分為兩種類型: • Type 1(Bare-metal):直接安裝在實體硬體上,不需要 host OS。效能好,適合資料中心。例如 VMware ESXi、Microsoft Hyper-V、Xen、KVM(Linux 內建)。 • Type 2(Hosted):安裝在 host OS 之上,作為一般應用程式運行。方便但效能較差。例如 VMware Workstation、VirtualBox、Parallels。 【虛擬化的好處】 (1) Server consolidation — 多個低使用率的 physical server 合併到一台,提高硬體使用效率。 (2) Isolation — 每個 VM 互相隔離,一個 VM crash 不影響其他。 (3) Flexibility — 可以快速建立、複製、遷移 VM。 (4) Legacy support — 在新硬體上運行需要舊 OS 的軟體。 【具體數字感受】一台 64 核 CPU、512 GB RAM 的實體伺服器,可能同時運行 20-50 個 VM(每個 VM 分配 2-4 核、8-16 GB RAM)。如果每個服務只用一台 physical server,大部分時間 CPU 使用率 < 10%。虛擬化把使用率提升到 60-80%。 【考試連結】(1) Type 1 和 Type 2 hypervisor 的差異。(2) 虛擬化的好處列舉。(3) 不要把 virtualization 和 emulation 混淆 — virtualization 在同架構上直接執行指令,emulation 是翻譯指令到不同架構(例如在 x86 上模擬 ARM)。

  • Host 是提供實體資源的一方,guest 是 VM 內執行的作業系統與工作負載
  • CPU virtualization 讓多個 virtual CPUs 分享實體處理器時間
  • Network virtualization 可把一個實體網路切成多個邏輯網路,也可建立跨實體網路的 overlay
  • Virtualization 不只等於 VM;storage 與 network 也能虛擬化

2.VM 與 Container 的隔離層不同

VM 和 Container 都能在同一台 physical server 上運行多個隔離的環境,但它們的隔離層級根本不同: 【VM(Virtual Machine)】 每個 VM 包含一個完整的 guest OS(如一個 VM 跑 Ubuntu、另一個跑 Windows)加上應用程式。Hypervisor 模擬硬體給每個 VM。 層級:Hardware → Hypervisor → Guest OS → App 優點:強隔離(每個 VM 有獨立的 kernel)、可以運行不同 OS。 缺點:啟動慢(需要開機載入整個 OS)、佔用空間大(每個 VM 的 OS image 數 GB)、overhead 高。 【Container(容器)】 所有 containers 共享 host OS 的 kernel,每個 container 只包含應用程式和它的依賴(libraries、config),不包含 OS。Container engine(如 Docker)利用 Linux kernel 的 namespace(隔離 PID、network、filesystem 等)和 cgroups(限制 CPU、記憶體使用量)實現隔離。 層級:Hardware → Host OS → Container Engine → App + Libs 優點:啟動快(秒級,不需要開機)、佔用空間小(MB 級)、overhead 低。 缺點:隔離性較弱(共享 kernel,kernel 漏洞可能影響所有 containers)、所有 containers 必須用相同的 OS kernel(不能在 Linux host 上跑 Windows container)。 【Docker image & container】Docker image 是唯讀的模板(包含 app + 依賴),container 是 image 的運行實例。Dockerfile 定義如何建立 image。Docker Hub 是公開的 image registry。 【Kubernetes (K8s)】管理大量 containers 的編排系統(orchestration)。負責自動部署、擴縮容(scaling)、負載均衡、故障恢復。 【考試連結】(1) VM vs Container 的比較表是常考題。(2) Container 共享 kernel 但 VM 有獨立 kernel。(3) Docker 是 container runtime,Kubernetes 是 container orchestration。

  • 多個 containers 可以共享同一 host kernel,但擁有隔離的 namespaces 與受限資源
  • VM 可在同一硬體上執行不同 guest operating systems
  • Container 較輕量不代表零 overhead,也不代表沒有 resource contention
  • VM 通常提供較強的 kernel 隔離;實際安全仍依設定與漏洞狀況

3.Cluster 與 Virtualization 不是同義詞

Cluster(叢集)和 Virtualization(虛擬化)經常一起使用,但它們解決的問題不同: 【Cluster】把多台 physical server 連接起來,對外表現為一個系統,目的是提高效能和/或可用性。 類型: • High-Performance Computing(HPC)cluster:把計算任務分配到多台機器平行處理。例如科學模擬、天氣預報。 • High-Availability(HA)cluster:多台機器提供相同服務,一台故障時其他接手(failover),確保服務不中斷。 • Load-Balancing cluster:把客戶端 request 分散到多台機器,避免單台機器過載。 【Virtualization】在一台 physical server 上虛擬出多個邏輯環境。目的是提高單台機器的使用效率。 【差異】 • Cluster:多台 physical → 一個邏輯系統(scale out) • Virtualization:一台 physical → 多個邏輯環境(scale up / consolidation) 兩者可以組合:在多台 physical server 上各自運行多個 VM,再把這些 VM 組成 cluster。這就是現代雲端資料中心的典型架構。 【Grid Computing vs Cloud Computing】 • Grid:跨組織的鬆散耦合資源共享(如 SETI@home),各節點可能異質。 • Cloud:透過網路按需提供計算資源,由單一供應商管理(如 AWS、Azure、GCP)。 【考試連結】(1) 區分 cluster 和 virtualization 的方向(多→一 vs 一→多)。(2) Cluster 的三種類型。(3) Grid 和 Cloud 的差異。(4) 考古題 112-9 考過 computer cluster — 注意 clustering(叢集)和 ML clustering(分群)是完全不同的概念。

  • Cluster 關注多節點協同,VM 關注單一工作負載看到的虛擬硬體邊界
  • Fault tolerance 需要 replication、health checks 與 failover,不能只靠節點數量
  • 高效能 cluster 可平行處理工作,但仍受通訊與不可平行部分限制
  • Clustering 不是 security control;錯誤設定也可能在所有節點複製

4.Serverless 仍然有 Server

Serverless computing 不是「沒有 server」,而是開發者不需要管理 server。雲端供應商負責所有基礎設施(server provisioning、scaling、patching、monitoring),開發者只需要寫 code 和定義 trigger。 【FaaS(Function as a Service)】Serverless 的核心模式。開發者把程式邏輯寫成一個個 function,上傳到雲端。Function 在事件觸發時自動執行,執行完畢後資源釋放。按實際執行時間和呼叫次數計費,閒置時不收費。 代表服務:AWS Lambda、Google Cloud Functions、Azure Functions。 【Serverless vs Traditional Server】 | | Traditional | Serverless | | Server 管理 | 開發者/DevOps | 雲端供應商 | | Scaling | 手動或設定自動規則 | 自動,每個 request 獨立 | | 計費 | 按時間(即使閒置) | 按呼叫次數和執行時間 | | 啟動時間 | 持續運行 | Cold start(首次可能延遲數百 ms) | | 執行時間限制 | 無 | 有(如 Lambda 最長 15 分鐘) | 【Cold Start 問題】如果一個 function 很久沒被呼叫,雲端可能回收其容器。下次呼叫時需要重新建立容器和載入程式碼,產生額外延遲(cold start)。解法:定期 warm-up 呼叫、使用 provisioned concurrency。 【BaaS(Backend as a Service)】另一種 serverless 模式,把常見的後端功能(認證、資料庫、推播通知)做成現成的服務。開發者直接呼叫 API,不需要自己實作。例如 Firebase(Google)、Supabase。 【考試連結】(1) Serverless 不是沒有 server — 只是開發者不管 server。(2) FaaS 的特點:event-driven、auto-scaling、pay-per-use。(3) Cold start 是 serverless 的主要缺點。(4) 和 IaaS/PaaS/SaaS 的關係:Serverless 可視為 PaaS 的進一步抽象。

  • Serverless 的 server 由 provider 管理,不是物理上消失
  • 通常不需預先購買固定 instance capacity,但仍可能有最低費用或配額
  • 自動擴縮不保證無限容量,也不消除 downstream bottlenecks
  • Function instance 通常視為短暫執行環境,持久狀態應放在外部服務

一起拆題目

範例 1一台 host 有 16 GB RAM。三個應用各需 1 GB;若每個 VM 的 guest OS 另需 2 GB,而三個 containers 共用 host kernel、不另計 guest OS,兩種方案的工作負載與 guest OS 記憶體需求各是多少?

  1. VM 方案每個 instance 需要 1 GB app + 2 GB guest OS,共 3 GB。
  2. 三個 VMs 合計 3 × 3 GB = 9 GB。
  3. Container 方案只計三個應用的 3 × 1 GB = 3 GB,因題目明定共享 host kernel 且不另計 guest OS。
  4. 兩者仍會有未列出的 runtime、page cache 與管理 overhead,不能把 3 GB 當成真實系統總占用。

所以答案是:依題目簡化條件,VM 方案 9 GB,container 方案增量 3 GB;差額 6 GB 來自三套 guest OS。

範例 2團隊要在 Linux host 上同時跑兩個 Linux Web apps,要求秒級擴縮;另有一個必須使用不同 kernel 的舊系統。應選 containers 還是 VMs?

  1. 兩個 Linux apps 可使用 host kernel,且重視快速啟動與密度,適合 containers。
  2. 舊系統要求不同 kernel,不能只靠共享 host kernel 的一般 container 提供。
  3. 為舊系統建立 VM,讓它擁有自己的 guest OS 與 kernel。
  4. 兩種技術可以混用:containers 也能部署在 VMs 之上。

所以答案是:兩個 Linux Web apps 用 containers;需要不同 kernel 的舊系統用 VM。VM 與 container 不是互斥部署選項。

範例 3公司把同一服務部署到三個 cluster nodes,任一節點失效就由其他節點接手。這是否同時保證服務不會被攻擊?

  1. 多節點與 failover 主要改善 availability,讓單點故障不立即中斷服務。
  2. 攻擊者仍可能利用共用軟體漏洞、外洩憑證或錯誤設定入侵所有節點。
  3. 若惡意流量耗盡共享依賴或控制平面,單純增加 nodes 也不一定有效。
  4. 仍需 patching、authentication、network controls、monitoring 與 incident response。

所以答案是:不保證。Cluster 能改善故障容忍與可用性,但不是自動的資安防護。

範例 4某 function 每次配置 0.5 GB、執行 0.2 秒,一天執行 10,000 次。若平台按 GB-second 計費,先不計免費額與其他費用,總用量是多少?這是否代表沒有 servers?

  1. 每次使用量是 0.5 GB × 0.2 s = 0.1 GB-second。
  2. 10,000 次合計 0.1 × 10,000 = 1,000 GB-seconds。
  3. 按實際 execution resource 計量符合 serverless 的常見抽象。
  4. 平台背後仍以實體機、VM 或 containers 執行,只是 provisioning 由 provider 管理。

所以答案是:總用量為 1,000 GB-seconds;serverless 仍有 servers,只是開發者不直接配置與維護它們。

這裡最容易選錯

  • 把 virtualization 只理解成 virtual machine,忽略 storage 與 network virtualization
  • 認為 containers 各自包含完整 guest kernel;一般 containers 共享 host OS kernel
  • 把較低 overhead 誤解為零資源競爭、零啟動成本或保證即時效能
  • 把 cluster 與 VM 當成同一層技術;cluster 是多節點協同,VM 是資源抽象與隔離
  • 認為 clustering 能自動阻止 security attacks;高可用與安全是不同目標
  • 把 serverless 解讀成沒有 server,或以為 provider 自動擴縮就不再有配額、冷啟動與狀態限制

換你快速判斷

先在心中作答,再展開答案。答不出來時,回頭找本課的對照關係。

1Virtualization 的核心概念是什麼?

以軟體建立硬體平台、storage 或 network resources 的虛擬版本,讓實體資源能被抽象、分割或組合。

VM 只是 virtualization 的一種;virtual storage 與 virtual network 也屬於相同抽象思路。

2Hypervisor 在 VM 架構中負責什麼?

建立並執行 VMs,將實體 CPU、memory、storage 與 devices 仲裁、映射給各 guest。

Type 1 直接控制硬體;Type 2 位於 host OS 之上。兩者都讓 guest 看見 virtual hardware。

3Container 為何通常比 VM 輕量?

Containers 共享 host OS kernel,不必為每個 instance 啟動完整 guest OS,因此通常啟動較快、額外資源占用較少。

共享 kernel 不代表零 overhead 或零風險;container 仍需要 isolation、resource limits 與安全設定。

4需要在同一 host 執行不同 kernels 時,應優先考慮 VM 還是一般 container?

VM。每個 VM 可執行自己的 guest OS 與 kernel;一般 container 依賴並共享 host kernel。

Containers 可以部署在 VMs 裡,因此兩者可以組合,不是只能二選一。

5Cluster 能提高 fault tolerance,是否也會自動防止 security attacks?

不會。備援與 failover 改善 availability;漏洞、憑證外洩與錯誤設定仍需獨立安全控制。

多節點甚至可能複製同一漏洞。Clustering、virtualization 與 security controls 解決的是不同問題。

6Serverless computing 的 defining characteristic 是什麼?

Cloud provider 動態管理執行資源與擴縮,使用者通常按實際執行所消耗的資源計費,而非自行預先配置固定 server capacity。

背後仍有 servers;serverless 表示 infrastructure management 被平台抽象化,不表示容量、延遲或狀態限制消失。

最後用考古題驗證

本課連結的題目都已通過可重現的技術覆核,可逐題練習與判分。

開始本課考古題練習

參考來源