欸黑,我的主機不在我家-託管(hosting)

前言

前幾天的主題大概已經描述一個輪廓Web: 一般而言我們使用瀏覽器作為client,透過HTTP,去與一台一個具有特定ip位置的server用GET方法取得網頁內容,並透過瀏覽器引擎渲染出網頁的畫面。

這邊我們用一個問題代入今天的主題: server都被放在哪裡?

事實上具有運算、儲存的設備都可以作為主機使用,但管理一台主機的成本還蠻高的,包括能源、維護甚至是因為流量變大而有的擴充需求。

所以出現了Hosting服務,也就是今天的主題,通常具有較大型的主機,也有專門的人進行維護,一般來說成本相對個人管理來的低,而這些託管商則透過規模化來減少成本獲取利潤。

今天會大概介紹託管的分類並舉一些對應的例子。

分類

常見的Hosting分類包括有:

  1. 共享主機 shared hosting
  2. 虛擬專用伺服器 VPS hosting
  3. 專用主機 dedicated hosting
  4. 雲託管 cloud hosting

前三者大部分的Hosting服務商都有提供,僅最後一個服務,受限於規模及技術,僅少數服務像是AWS, GCP, Azure

若讓我將Hosting各個類別做成雷達圖,它包含的取向包括: 資源隔離度、維運成本、單位費用。

那接下來我們就透過雷達圖一一來看一下不同的hosting模式及特性。
打個預防針,這裡的數字只是比較性的,有利用我們理解各個服務的差異而已XD

共享主機 shared hosting

  • 資源隔離度: 1
  • 維運成本: 1
  • 租借費用: 1
  • 風險: 5
  • 擴充性: 1

共享主機指的是共享一台物理主機的所有資源,此處的資源包括網路、CPU、記憶體,雖然大部分會設定資源使用的最高限制,但不包括最低限制,常會發生「超賣」的狀況,意思是指,我們如果將該台物理主機上所有的網站的最高限制加起來會超過該台機器所能承擔的物理上限。

好處

這也是為什麼他那麼便宜,因為他的訂價本身就鎖定了一些資源消耗極低的網站的客戶,並且使用一些平衡資源使用的機制確保這樣的狀況不常發生。

二來通常這樣的服務提供全託管,除了上傳你的網站文件外不用再做額外的維運。

壞處

但會產生的風險也顯而易見,當遇到小概率事件,比如網站的總資源占用已經達到了上限時,我們架設在上面的網站也會被影響。

另外他的擴充性幾乎可以無視,因為你的擴充還是受限於該物理主機的整體用量,若遇到大流量時還是會受到其他人的影響

虛擬專用伺服器 VPS

  • 資源隔離度: 3
  • 維運成本: 2
  • 租借費用: 3
  • 風險: 4
  • 擴充性: 3

虛擬專用主機和Shared Hosting一樣共享一台主機的資源,但差別在於,你對於你所能用的資源掌握的是下限,代表你能夠擁有保證不會被奪走的資源。

好處

透過確保資源的獨佔,你可以避免前面提到的相關問題: 共同資源被占用導致的限制。

另外你的技術彈性又更高了一些,可以多做一些客制化的設定。

壞處

前面提到的客制化設定見仁見智,因為通常這也代表需要維運的部分變多了。
於是也出現了一些服務是讓你去購買VPS,而他負責為你維運,像是cloudway。

另外因為還是共享著同一台物理主機,如果有其他在同一物理主機的網站遭到攻擊,導致你所在的主機遭受到系統級的損害,一樣會對你的網站造成傷害。

專用主機 dedicated

  • 資源隔離度: 5
  • 維運成本: 4
  • 租借費用: 5
  • 風險: 3
  • 擴充性: 2

顧名思義,你擁有一台物理主機的全部資源,基本上可以視為一台請服務商幫你維運硬體層面的主機了。

好處

前面提到的系統級風險再次降低。
通常可以取得root access,等同你擁有一台雲端主機,高客製化。

壞處

很貴,且軟體維運幾乎也都仰賴用戶自行處理,維運成本也高,除非是公司有資安需要硬體級別的隔離,不然很難找到理由需要使用這樣子的服務。

另外擴充上也會在物理主機達到極限時出現明顯的瓶頸,需要進行硬體擴充,但因為相較於VPS,通常這也同樣是VPS的極限,所以我姑且給了他擴充性2的評分,比VPS略低,但也不是說他的上限就比VPS多多少就是了。

雲 cloud

  • 資源隔離度: 4
  • 維運成本: 5
  • 租借費用: 4
  • 風險: 2
  • 擴充性: 5

Cloud hosting與前面的服務最大的差別在於你所購買的主機的部署方式並非在單個物理主機上,而是多個物理主機組成的虛擬化大型主機之上。

好處

可以想像你的服務器架設在超大型主機之上,於是你的服務所需資源的擴充性是相當大的,另外,租借成本通常來說,是根據你的用量來決定你的費用,這句話有時候很含糊,需要根據不同雲服務的服務商來計算費用。

另外關於風險,以AWS為例,資源分成由大至小分為Zone、AZ(Available Zone),最佳實踐提到你可以至少在AZ部署多個server避免AZ級的損失,或甚至在不同Zone部署server避免Zone級的損失,當然費用也會往上,端看對於server停止服務的重要性來做判斷。

壞處

相對於專用伺服器來說,資源隔離度下降,可以說是對安全的部分妥協。
另外的,與專用伺服器相同的是維運成本及server設置也都是相對高的。

另外他的費用來說其實也是不低的,若需要大量的資源,也會是每個月的巨額開支。

小結

了解Hosting的需求對於營運及提供技術建議帶來幫助,不過對於開發本身的幫助似乎就不是特別大了XD

以目前的經驗來看,若是商業需要,通常會至少選擇VPS作為託管,不過目前最流行應該是雲服務吧,不只提供了託管服務,還能夠透過他本身提供的其他雲服務做串接,像是靜態儲存、MQ、LB等,也減少了公司成長前期在維運上所需要花費的成本。

參考資料

Different between hosting
Top 10 Hosting Service