如今,「即服務(wù) 」的時(shí)代已經(jīng)到來,將能力服務(wù)化,萬物皆可具備基礎(chǔ)設(shè)施的特征。在it界更是如此,譬如,基礎(chǔ)設(shè)施即服務(wù)(iaas)、平臺即服務(wù)(paas)、軟件即服務(wù)(saas)等等。容器即服務(wù)(caas)無疑是這波浪潮中的又一位重量級參與者。
那么作為開發(fā)者,想探究caas的「真諦」,首先應(yīng)該明白這一系列問題——caas是什么?它能干什么?和paas的區(qū)別是什么?構(gòu)成caas有哪些基本要素?有什么代表性的產(chǎn)品值得了解? 在本文中,我們將探討這一系列問題,幫助開發(fā)者「破除迷霧 」、「看清真相 」。
什么是容器?
容器即服務(wù),英文全稱container-as-a-service,簡寫caas,它提供一種上傳、運(yùn)行、擴(kuò)展以及管理應(yīng)用程序容器的方法。這類服務(wù)全面提供執(zhí)行這些功能的api或cli,有些甚至提供gui或web門戶。這里的容器可以是多種不同類型,包括docker、lxd以及openvz等等。聽起來似乎跟paas差不了多少,但二者也有一些區(qū)別。下面我們從概念出發(fā),看看二者之間的差異所在。
平臺即服務(wù)(paas),以iaas為基礎(chǔ)構(gòu)建而成。此外,也有一部分paas供應(yīng)商也開始以caas作為服務(wù)基礎(chǔ)。
從傳統(tǒng)意義出發(fā),paas解決的是應(yīng)用程序的托管、打包與分發(fā)問題,強(qiáng)調(diào)零停機(jī)時(shí)間部署、自動規(guī)模伸縮與負(fù)載均衡功能。此外,它還可以集成多種開發(fā)人員工具以及運(yùn)行狀態(tài)與指標(biāo)統(tǒng)計(jì)信息。paas的核心優(yōu)勢之一,在于開發(fā)人員可以輕松構(gòu)建應(yīng)用程序,而不再分神于應(yīng)用程序運(yùn)行所處的具體環(huán)境。像cloud foundry, heroku以及google app engine等,都屬于典型的paas供應(yīng)商。
而caas提供一種輕松快捷的容器部署方式。它還能夠保證全面完善的可移植性,確保容器能夠在幾乎任何位置上運(yùn)行。caas還提供用于容器乃至容器集群的配置及管理功能。
從表面上看,caas與paas好像沒什么不同。二者都管理著應(yīng)用程序的部署與托管任務(wù),而且基本功能也區(qū)別不大。paas的不少優(yōu)勢,都可以通過使用容器鏡像加容器注冊表的方式實(shí)現(xiàn)。此外,kubernetes能夠幫助用戶滾動部署并實(shí)現(xiàn)負(fù)載均衡與自動規(guī)模伸縮。典型的caas解決方案包括google kubernetes engine (gke)與azure container service。
要paas?還是要caas?
要paas?還是要caas?實(shí)際上,選擇哪種解決方案要根據(jù)你的應(yīng)用場景來決定。
這二者都能幫助開發(fā)人員部署并運(yùn)行應(yīng)用程序。但是,paas會隱藏一部分容器化任務(wù)。換句話說,使用caas,開發(fā)者仍然需要管理一部分應(yīng)用程序容器化任務(wù);但使用paas,開發(fā)者就不用額外操心了。再有,paas在所使用的語言及技術(shù)方面也有更多要求。雖然能夠支持多種不同語言,但數(shù)量畢竟有限,這是因?yàn)閜aas通常依靠構(gòu)建軟件包來運(yùn)行應(yīng)用程序,而不像docker那樣使用通用型容器。
此外,caas能更輕松地運(yùn)用多云托管功能,這也是因?yàn)樗幌駊aas那樣「獨(dú)斷專行 」。只要云服務(wù)商支持容器,開發(fā)者也可以借此發(fā)布并運(yùn)行自己的服務(wù)。
如果企業(yè)擁有強(qiáng)大的基礎(chǔ)設(shè)施團(tuán)隊(duì),或者已經(jīng)習(xí)慣于處理網(wǎng)絡(luò)及運(yùn)營問題,那么使用caas將幫助企業(yè)更好地發(fā)揮自身技術(shù)優(yōu)勢。但如果企業(yè)并不熟悉該如何將服務(wù)部署至云端,或者運(yùn)營團(tuán)隊(duì)在這方面的經(jīng)驗(yàn)不是很豐富,那么paas無疑是更理想的入門級選項(xiàng)。
在paas與caas之間進(jìn)行選擇時(shí),另一大重要考量因素在于速度與控制。如果企業(yè)希望快速推出應(yīng)用程序,又不想為其他事情分神,那么paas的效果更好。但如果打算更好地控制服務(wù)的容器化及管理方式,那么caas解決方案將成為好選擇。
說了半天,好像凈是好事。但caas難道就沒有任何缺點(diǎn)了嗎?
當(dāng)然有。首先,根據(jù)云服務(wù)商的具體方案,大家會發(fā)現(xiàn)其可能并不支持某些容器類型。絕大多數(shù)服務(wù)商當(dāng)然都在支持docker,但現(xiàn)在caas當(dāng)中限定容器類型的現(xiàn)象正愈發(fā)普遍。云服務(wù)商越來越多地將其產(chǎn)品耦合起來,確保客戶能夠滿足云服務(wù)提出的種種使用要求。因此如果企業(yè)希望在容器類型當(dāng)中做出選擇,至少應(yīng)確保其符合多數(shù)caas供應(yīng)商提出的oci標(biāo)準(zhǔn)。
此外,由于caas并不怎么強(qiáng)制限定能夠在容器中運(yùn)行的服務(wù)類型,所以企業(yè)往往難以找到適當(dāng)?shù)墓ぞ吲c監(jiān)控方案。請確保使用scaylr等工具持續(xù)監(jiān)控容器運(yùn)行,目前大多數(shù)caas供應(yīng)商要求用戶自行跟蹤容器狀態(tài)。
構(gòu)成caas的基本要素
下面來看構(gòu)成caas的各類組件。
(1) 容器注冊表
容器注冊表是容器鏡像存儲庫,我們可以將它視為容器的maven庫。在將鏡像放入存儲庫后,容器管理系統(tǒng)即可提取鏡像并加以運(yùn)行。
大多數(shù)開發(fā)者最熟悉的注冊表當(dāng)數(shù)docker hub,可以使用這類公共注冊表,也可以使用某些本地內(nèi)部版本。
(2) 容器管理
caas的容器管理與編排組件負(fù)責(zé)管理容器與容器集群。常見的容器管理工具包括kubernetes與docker swarm。
首先,容器管理能夠自動執(zhí)行容器部署。這類組件會創(chuàng)建新實(shí)例,監(jiān)控這些實(shí)例以確保其正常啟動,并在發(fā)生問題時(shí)加以回滾。一旦應(yīng)用程序順利啟動并開始運(yùn)行,容器管理還可監(jiān)控服務(wù)運(yùn)行狀態(tài)。如果某個(gè)服務(wù)實(shí)例發(fā)生故障或無法響應(yīng),則容器管理組件將啟動新實(shí)例以接管相應(yīng)負(fù)載。
容器管理組件還幫助實(shí)現(xiàn)負(fù)載均衡并控制容器之間的通信。例如,其僅允許客戶端應(yīng)用程序及容器在完全啟動并運(yùn)行之后,方可調(diào)用服務(wù)實(shí)例。
(3) 開發(fā)者工具
除了容器管理與注冊表,caas解決方案中還提供多種開發(fā)者工具。最常用的工具包括cli或api。這些工具將幫助監(jiān)控并管理容器實(shí)例。雖然很多開發(fā)者希望以自動化或腳本化方式處理大部分管理任務(wù),但這些開發(fā)者工具還是可以幫助快速對實(shí)例進(jìn)行規(guī)模伸縮、或即時(shí)修改配置與部署選項(xiàng)。
總結(jié)
多年以來,容器已經(jīng)憑借自身強(qiáng)大的特性進(jìn)入主流市場,但caas供應(yīng)商并沒有絲毫松懈。他們以更靈活的方式滿足著大多數(shù)開發(fā)團(tuán)隊(duì)的需求,成功從paas手中奪下不少市場份額。但是,caas并不適合所有用戶、所有場景。換言之,它只是我們?nèi)找纨嫶蟮拈_發(fā)者空間中的另一款工具。究竟適不適合,請務(wù)必認(rèn)真考量。
選擇上海網(wǎng)站建設(shè)公司,上海網(wǎng)站設(shè)計(jì)公司我有好的方法企業(yè)如何制作自己的官方網(wǎng)站?SEO優(yōu)化_使用dedecms進(jìn)行網(wǎng)站構(gòu)建時(shí)的幾個(gè)注意事項(xiàng)seo技術(shù),SEO優(yōu)化內(nèi)部鏈接有哪些常見的表現(xiàn)形式?這個(gè)開學(xué)季正流行的網(wǎng)頁設(shè)計(jì)趨勢香港云服務(wù)器的性能是否有故障,如何判斷?站長如何才能選擇一款好的SEO優(yōu)化推廣軟件?需要考慮哪些因素?如何巧妙提升SEM推廣效果