電商手札|淺談雲端運算與虛擬化技術|虛擬機(VM)和容器(Container)差異

Lina
Lina’s Diary
Published in
11 min readMay 20, 2020

本篇會從組成伺服器的要件軟硬體說起,再談目前最流行的雲端運算和虛擬化,並區分虛擬主機和容器的差別,以及雲端運算環境(公有雲、私有雲和混合雲)和服務(IaaS、PaaS和SaaS),依序用文字和自製圖片說明。

伺服器 (Server)

向網路上的用戶端的電腦提供特定服務的硬體(Hardware)和軟體(Software)整合起來就稱之為「伺服器(Server)」,它的作用是共享數據,也就是共享資源和分配工作,伺服器的功能主要是由應用程式的種類來決定,有許提供許多不同的服務,要了解雲端技術就必須先認識伺服器。

一般來說常見的伺服器功能和其代表性的應用程式有:

(1) 網域名稱系統伺服器(DNS server):Bind9。

(2) 網頁伺服器(Web server):Apache、Windows Server IIS 。

(3) 代理伺服器(Proxy server):Squid。

(4) 檔案傳輸協定伺服器(FTP server):Pureftpd、Proftpd、WU-ftpd。

(5) 資料庫伺服器(Database server):Oracle Database、MySQL、PostgreSQL、Microsoft SQL Server 等。

(6) 應用伺服器(Application server):Bea WebLogic、JBoss。

(7) 郵件伺服器(Mail server):Lotus Domino、Microsoft Exchange 等。

硬體 Hardware

  1. 主機板(Motherboard):主機板是電腦工作的核心, 上面裝載著有如大腦般的CPU,並且是所有硬體組件運行的集線器,在需要的地方分配功率,協調組件間的聯繫。
  2. 中央處理(CPU):為電子產品的大腦,對數據進行各算術運算和邏輯運算,包含有暫存器、快取記憶體,其核心數越多,電腦的效能越高。目前市場上兩大製造商為Intel和AMD。
  3. 記憶體(RAM):是電腦中的工作存儲器,電腦正在運行的程式與數據必須暫時存放的地方,其存取速度快,但存儲容量小,但對於執行程式的流暢度是有幫助的。舉例來說,如果一次開很多個分頁,2G RAM 可能可以開啟5個分頁,而 4G RAM 則可開至10個分頁,而經常使用電腦的使用者至少要配備4–8GB。
  4. 硬碟(Hard Drive):存儲容量大,在電腦實際執行程式和加式處理數據時,輔助存儲器中的信息需要先傳送入記憶體後才能被CPU使用,目前主要分為傳統硬碟(HDD)和較新的固態硬碟(SSD),相較於 HDD,SSD 開機更快、可靠性,耐用性也更好。
  5. 顯示卡(GPU):負責處理大量批次的圖像資料, 是高品質影片編輯系統的核心。

軟體 Software

在CPU上面必須安裝作業系統與應用程式。

  1. 作業系統(OS:Operating System):平常常見到的 Unix 系列作業系統有 IBM-AIX、HP-UX、Linux、Mac OS X Server 等,微軟有 Microsoft Windows 系列作業系統 Windows NT Server、Windows Server 2000/2003/2008/2012 等。
  2. 應用程式(APP:Application Program):應用程式可以讓用戶執行特定任務,桌上型電腦和筆電的應用程式稱為桌面應用程式,而移動設備的應用程序稱為移動應用程式。比較著名的APP Store和Android Stores,裡面都有數百萬個應用程式。

虛擬化 Virtualization

雲端應用服務是由實體伺服器 (Host) 上的「虛擬機 Virtual Machine (VM)」所提供,虛擬化技術可說是雲端運算的基礎

將原本在實際伺服器運作的伺服器作業系統,變成在虛擬化的軟體上執行,而一套具備多核心中央處理器的硬體,可以透過虛擬化來執行多個作業系統,讓硬體資源可以分享出去,因此這個技術是雲端運算很重要的基礎建設。

若硬體有發生故障的情形,這些伺服器系統也可以容易地轉移到另外已經設置好有虛擬化軟體的硬體上,系統不需要重新安裝與設定,新硬體與舊硬體也不一定要是同規格,可簡化伺服器的管理,因此現今許多企業紛紛將主機搬移到雲端。

虛擬機(VM)與容器(Container)

  1. 虛擬機(Virutal Machine,VM):VM裡每個應用程式擁有獨立甚至相互不同的作業系統和環境,是個以作業系統(OS)虛擬化的技術
虛擬機 VM (Source: Self-Collection)

2. 容器(Container):在實體伺服器上安裝了 Docker,應用程式與其相依性資源(Dependency)會被封裝在容器(Container)中,沒有額外運行作業系統(Guest OS),容器的移轉性強,無論 Host OS 為任何作業環境,皆能正常運行容器化後的應用程序,容器間也彼此獨立運行,是個以應用程式(App)為單位的虛擬化技術

容器 Container (Source: Self-Collection)

3. 相依性資源(Dependency):官方是以二進位執行檔(binaries,bins)和函數庫(libraries,libs),運行App所需要的執行環境,可以說是解決方案堆疊(solution stack)或軟體棧(software stack)。

4. 虛擬機器監視器(Hypervisor/ Virtual machine monitor,VMM): 提供虛擬的作業平台來執行客作業系統,負責管理與分配硬體資源。

5. Docker Engine:像是VM中Hypervisor在硬體的上層建置一個可以運行虛擬機的環境,Docker也同樣需要在Host OS上建置一個可以運行容器的環境,可讓您使用容器快速地建立、測試和部署應用程式,可將Docker Image轉換成Container,使其可重複利用與搬遷。

下面的兩張圖比較VM和Container更加明顯他們的不同:

用房屋來比擬的話,VM像是獨棟房屋,有自己獨立的庭院、泳游池和大門;Container比較像是社區型的房子,和其他同社區的住戶共同使用廣場、游泳池等設施。VM的獨立性相對Container更高,在環境的配置上有更高的自由度;而Container則是在資源的共享上更有效率,能節省不必要浪費的空間。

虛擬機 vs 容器 (Source: Self-Collection)

雲端運算環境(Cloud Computing)

雲端運算環境(Source: Self-Collection)

1. 公有雲(Public Cloud)

第三方雲端提供商透過網路將資源共享給用戶使用的一種雲端運算模式,只要是平台的註冊且付費用戶都可以用,其中資源包括:虛擬主機、儲存空間、應用程式等。就像是雲端提供商擁有這些資源,並將這些資源租給用戶做使用,用戶僅需根據自己的用量付費(Pay-as-you-go)以及基礎訂閱費用。

優點是不用購買龐大的硬體軟體資源,也不需要公司內部技術人員的維護,還有易於擴展空間容量等特性,能夠靈活化組職的操作、降低營運成本。目前市佔率最高的服務提供商為:AWS(40%),還有Microsoft Azure、Google Cloud和阿里雲。

2. 私有雲(Private Cloud)

為第三方提供商透過網際網路將資源提供給「特定用戶」,無需和其他用戶共享同樣的雲端基礎建設,具備較高的穩動度和資料安全性,但同樣享有公有雲的優勢如:不需支付硬體成本、易用性、易擴展性;然而,其資料與程式皆為客戶自行管理和維護,可賦予企業更多控制權與更高安全性,因此營運成本高於公有雲。IBM Bluemix Cloud、Dell Cloud、VMware Cloud為目前有提供私有雲服務的公司。

3. 混合雲(Hybrid Cloud)

結合公有雲和私有雲的優點,用戶若同時在多個環境下使用公有、私有雲端即代表混合雲,通常會將非企業的關鍵資訊在公用雲上處理,但在保存重要的資料和服務於私有雲端上。市面上的服務提供商有:IBM OpenShift、Microsoft Azure Stack、AWS Outposts、Google Cloud Anthos。

雲端運算服務的模式

雲端運算服務的模式(Source: Self-Collection)
  1. 基礎設施即服務(Infrastructure as a Service, IaaS):只有提供硬體的環境及網路頻寬給企業用戶使用,其他由用戶自行管理。像是:Amazon Web Services(AWS)、Microsoft Azure、Google Compute Engine(GCE)。
  2. 平台即服務(Platform as a Service, PaaS):除了提供硬體和網路環境,還提供平台來運算或解決方案,還包括作業系統、程式語言執行環境、資料庫、Web伺服器的計算平臺等,並提供整合的應用程式介面(API),讓顧客在其中發展自己的應用程式、放在該平台上代管,更加便利且節省成本。例如:Google App Engine,Apache Stratos、Yahoo Application Platform。
  3. 軟體即服務(Software as a Service, SaaS):是三種中服務最完整的,是一整套的服務,客戶可以直接訪問安裝在伺服器上的應用程式,不必下載或安裝任何型別的設定或作業系統,例如SAP、Salesforce、Google Map、Youtube、Facebook等。

這三個服務模式可以用平地、廠房和房屋來比喻,IaaS就像是供應商只提供空地給用戶自由搭建和製造,彈性度高;PaaS是已經提供場地和有搭建空間,但裡面的空間讓使用者使用;而 SaaS是供應商建設好房屋,裡面的空間都已經有格局和規劃,自由發揮的程度較小,但帶著行囊即可入住。

在選擇雲端運算的服務時,依照每個企業的需求和資源配置做選擇。若企業對於開發環境的客製化需求高,也需要彈性和創新的發揮空間,那IaaS就是很好的選擇,但前期的建置成本較高,公司需要配置專業的技術人員;相反的,若企業的要求是較為標準化,且有相當明確的需求,如:顧客關係管理(CRM)、企業資源規劃(ERP)等,使用SaaS的前期建置和導入時間較為迅速,且對內部人員的技數要求也相對較低。

以上的文字和圖片資料都是課堂上理解的內容,加上參考下方文獻和網路資料,若有任何敘述有誤或是可以再理解更深層的部分,歡迎留言或來信與我討論!

E-mail: tingchung77@gmail.com
LinkedIn: https://www.linkedin.com/in/tingchunchen/

--

--

Lina
Lina’s Diary

Warwick 🇬🇧 |Management Associate|Digital Marketer