IaaS vs. PaaS vs. CaaS如何選擇?

IaaS vs. PaaS vs. CaaS如何選擇?

網絡託管的技術發展很快,選擇如此之多,用戶很容易感到不知所措,甚至會開始質疑是否如今所用的服務,對於當前的業務和需求來講是不是最好的選擇。本文會經過如下幾個服務產生的背景,分析其差別:html

  • 基礎設施即服務(IaaS)linux

  • 平臺即服務 (PaaS)git

  • 容器即服務(CaaS)web

 

讀完本文你應該會對如下內容有充分的瞭解:數據庫

  • 每一種服務實際上意味着什麼?編程

  • 爲何這種服務對你很重要?安全

  • 哪種解決方案對你來講最有意義?服務器

 

固然這些都要根據你的實際狀況考慮。網絡

 

 

專用服務器/Bare Metal

網絡託管服務的基礎,都是塞滿了服務器、交換機、路由器、存儲陣列和其餘網絡設備的數據中心。咱們要討論的PaaS / IaaS /CaaS是上層的東西,他們加上一層抽象層使管理更容易,並使那些過去運行緩慢或必須手動完成的任務自動化。架構

專用服務器,即咱們所知的Bare Metal有他的優缺點。

優點

  • 性能——你正在直接使用計算機,中間沒有任何附加的抽象層的開銷,例如虛擬化;

  • 可靠性——在沒有抽象層與虛擬化的狀況下更不容易出錯;

  • 資源用度——你的進程不會和其它的虛擬機或進程,去競爭CPU,內存和帶寬等資源。

缺陷

  • 管理困難:bare metal中沒有AMI貨鏡像的概念,因此不能快速複製;

  • 價格:多數狀況下實用bare metal須要提早爲硬件付費,還要支付放機器的房租。停下這些機器並不能幫你節省開支,你須要作好預算;

  • Bare metal環境下,全部的進程和應用都運行在一樣的操做系統上。出於擴展性的考慮,一般會在一臺服務器上只運行一個任務,好比web服務器,數據庫服務器。

 

虛擬化:讓事情簡單化

顯然這些缺點產生的影響蓋過了優勢,虛擬化成了很天然的選擇。

什麼是虛擬化?

簡單來講,虛擬化將物理機分隔成了更小的虛擬服務器,若是你的物理機有2個雙核的CPU和16G的RAM,你能夠分紅8個1 CPU和16GB RAM的虛擬機。

優點

  • 虛擬機能夠克隆;

  • 爲了安全和災備,能夠備份虛擬機鏡像

缺陷

  • 使用虛擬化意味着增長了開銷,並有潛在的性能下降;

  • 通常來講,經常使用的虛擬技術有Xen,KVM,VMware和Hyper-V等,這些虛擬機的鏡像並不能通用;

  • 使用虛擬機還是一項手動的工做,而且要求時間與專業知識。

 

 

從虛擬化到IaaS的質變

啥是IaaS?

  • 經過API虛擬化並管理其餘人的硬件資源;

  • 編程訪問計算、存儲和網絡資源和配置;

  • 當你須要時請求一個新的虛擬機,不須要時就中止,而且只爲你使用的資源付費;

  • 將數據中心資源當作通用的資源。

根據這些特性,2006年亞馬遜推出了AWS服務及其EC2的產品。

 

爲何此次進化如此重要?

之前當你想要加載一個在線業務時,你必須作不少計劃,以確保有數據中心和足夠的服務器和存儲空間來承載你的業務增加,足夠的帶寬來支撐你的用戶流量。作這個計劃不容易,特別是對於早期的、將來與發展路線都不肯定的業務。

1.開發者再也不被硬件資源所束縛:

  • 能夠迅速把想法付諸實踐;

  • 若是成功了,服務能輕鬆地隨之增加;

  • 若是失敗了,停掉虛擬機就沒有額外的花費了。

2.數據中心變得更自動化:

  • 徹底自動化的基礎設施成爲現實;

  • Web基礎設施能夠根據需求自動擴展和收縮;

 

IaaS的誕生確實是很重要的里程碑,但隨着技術的發展,人們也在想是否有更簡單的使用虛擬資源的方式。『我想要一個SQL服務,你卻給我一臺虛擬機?』這個思考了催生了PaaS和容器技術,有趣的是,不少PaaS的提供商都運行在IaaS之上,好比最受歡迎的是Heroku運行在AWS上。同時PaaS所依賴的底層技術又是CaaS的標準交付物。

PaaS雖然簡化了開發者部署和管理應用,但也向開發者隱藏了實現的細節,例如管理服務器,負載均衡,DNS等等。

PaaS減小了開發者將應用從idea到實現的時間,使那些本來須要手動的進程自動化,讓開發者專一於應用的開發,從這些角度來講,PaaS的產生是一大進步,就像從Bare Metal到IaaS的轉變。

 

PaaS難以構建

PaaS之下有幾個主要組件:

  • 構建系統:將代碼編譯爲隨時能夠運行的格式,並將其存儲起來供之後使用;

  • 應用管理數據庫:追蹤git修正,構建版本和應用元數據;

  • 集羣調度程序:把多個服務器看成一個大的計算機,在這個計算資源池中運行構建好的應用,並保持對失敗做業的檢測;

  • 負載均衡:合理引流內網和外網的流量;

  • DNS自動化:當你建立或修改應用時,會自動更新記錄;

  • 最重要的一點:經過FreeBSDjails,solaris zones或Linux Container來隔離用戶間的應用。

最後一點也是Docker爆炸性增加的重要緣由。Linux內核對container的支持已經有一段時間,但只有某些大公司或PaaS提供商將其自動化了。好比Docker公司的前身dotCloud,當其底層的容器技術Docker開源出來,馬上在社區獲得了普遍關注。Docker不但使linux container的處理簡單化,還提供了標準化的鏡像格式。

 這個功能很是強大,由於不少公司都面臨着用戶爆炸性增加帶來的挑戰:他們但願能擺脫超長的發佈週期,達到持續部署;他們想採用面向軟件的架構或微服務架構;他們但願實現自動部署和測試新代碼,而且在流量激增時儘量作到收放自如。但問題是沒有資源或必要的經驗向開發團隊提供該功能,因此他們將這些需求外包給了PaaS平臺。不幸的是當你這樣作的同時也放棄了不少控制權,花了不少錢,卻被綁定在了PaaS供應商之上。

 最好的選擇是在你本身的數據中心或者雲帳戶中運行一個PaaS,在那裏你擁有徹底控制權,而且你的團隊能夠直接部署應用,建立一個真正的DevOps文化。Docker,和其驅動的標準化的生態系統正在大步前進使之成爲可能。

 

容器託管平臺/CaaS

那麼CaaS是什麼呢?首先,上一段中PaaS所具有的功能CaaS都有:自動化構建系統,集羣調度,負載均衡,自動DNS,服務發現等,也就是說你能在CaaS上使用容器,託管複雜的分佈式多層應用。

Docker鏡像取代了janky buildpacks,很容易進行構建與測試,能夠在部署以前確保它們能工做;同時再也不侷限於PaaS供應商提供的集成功能,任何能構建成Docker鏡像的應用都能在其上運行。

 因爲Docker的可移植性,你的應用更容易在各個CaaS平臺間遷移。你再也不糾結於爲一個複雜問題創建解決方案,或者耗費人力學習某個供應商的自動部署工具。

 可是選擇適合的Docker託管平臺有一些須要注意的事:

  • 目前已經有了一些CaaS供應商,你可能不知道選哪一個。可是隻要你的應用Docker化了,就很容易去測試他們;簡單到什麼程度?讀一讀靈雀雲用戶文檔你就知道了:http://docs.alauda.cn/tutorial/introduction.html

  • 像Triton或ECS等託管提供商的解決方案,依然會將你綁定,而Docker最使人興奮的優點偏偏在於它的可移植性;

  • 許多CaaS解決方案的整個管理系統都運行在他們本身的硬件上,在你的服務器上只運行一個代理鏈接到他們API上。因此若是他們的硬件宕機了,你的服務器集羣也會被停掉;靈雀雲集成了AWS、Azure、金山雲等多個IaaS平臺,提供跨雲部署、遷移和容災服務,保證了某個IaaS宕機狀況下,您的服務不間斷;

  • 那些容許你在防火牆以後運行整個系統的解決方案是複雜的,而且會有不少碎片任務,這須要一個團隊來管理和升級;

  • 而那些比較簡單的,能夠運行在防火牆以後的解決方案,有時會不過重視高可用性;

 

 

值得從PaaS到CaaS嗎?

若是你已經使用了PaaS,還應該花時間學習Docker嗎?你的團隊會贊成你的想法嗎?你應該花時間學習一個新的容器託管平臺嗎?

答案是確定的,由於PaaS提供商正在向CaaS轉變,不要抗拒容器的這波浪潮,順應它!

  • CaaS比PaaS更省錢

例如,一個標準的2X的Heroku實例,提供的是一個普通的CPU和1 GB的RAM,要花費320元/月;

而在靈雀雲,運行1 CPU,1GB RAM的Docker容器,只須要58元/月。

  • 你有更多的權限來運行你的服務,可以從更深的層次理解你的應用是如何運行的

  • 你能享受到PaaS不能提供的Docker的優點

團隊中每一個開發人員都能在本地擁有一個和生產環境同樣的測試環境,測試他們的代碼,而後構建它。只要測試經過了,就能保證在生產環境經過,這是巨大的效率提高。

  • 能夠選擇最好的工具來工做,而不是從PaaS供應商已經集成的工具中選擇。

相關文章
相關標籤/搜索