公有云環(huán)境下應(yīng)用程序的自動化部署與水平擴展
先介紹了一下公有云計算環(huán)境下的一些特點,再根據(jù)這些特點探討一下作為云計算用戶而言,如何對應(yīng)用程序做好自動化部署和水平擴展(彈性計算)的問題。閱讀本文需要有一定的云計算知識、開發(fā)運維知識。
公有云環(huán)境的優(yōu)勢及其特點
公有云為企業(yè)用戶或個人用戶(以下統(tǒng)稱為用戶)可提供三種服務(wù),基礎(chǔ)服務(wù)、應(yīng)用服務(wù)和運維服務(wù)。
- 基礎(chǔ)服務(wù),為用戶節(jié)省了服務(wù)器、網(wǎng)絡(luò)、存儲等硬件成本以及這些硬件相關(guān)的運維成本,通過虛擬化這一核心技術(shù)能讓用戶通過公有云服務(wù)平臺使用和管理自己硬件資源。
- 應(yīng)用服務(wù),為用戶提供可用性和可靠性等系統(tǒng)級解決方案,如負(fù)載均衡、智能DNS、CDN等了;為用戶的軟件等應(yīng)用程序提供應(yīng)用級解決方案,包括文件共享、對象存儲、關(guān)系型/非關(guān)系型數(shù)據(jù)庫等。
- 運維服務(wù),為用戶提供安全防護、監(jiān)控報警、虛擬機備份等功能,保證用戶數(shù)據(jù)的機密和安全。
根據(jù)這些公有云的特點可以看出,用戶將應(yīng)用程序部署在公有云是非常方便和容易的,既能降低硬件成本和運維成本,又能利用云服務(wù)提供商提供的各種應(yīng)用服務(wù),又對用戶的用戶屏蔽了服務(wù)的具體細(xì)節(jié),提升了用戶體驗和用戶滿意度(具體不一一詳細(xì)列出)。
用戶要做什么
用戶要公有云是為用戶本身或者用戶的用戶來提供服務(wù)的。用戶有了公有云環(huán)境后,作為用戶而言,要解決的問題的核心就在于如何在盡可能降低成本的情況下將用戶體驗和用戶滿意度***化。
盡管相對于傳統(tǒng)的計算和服務(wù)模式而言,公有云環(huán)境的是相當(dāng)廉價的,但當(dāng)用戶的用戶達(dá)到一定的數(shù)量時,幾個云主機就不足以承擔(dān)巨大的用戶量,造成用戶體驗和用戶滿意度急劇下降,為此用戶需要更合理的軟件架構(gòu)和服務(wù)提供方式。
關(guān)于系統(tǒng)架構(gòu),此處特指硬件基礎(chǔ)架構(gòu)已經(jīng)由所選擇的云計算環(huán)境所決定,因此暫時不做分析。
軟件架構(gòu)的改良包括提高單個軟件或應(yīng)用程序自身的可用性和可擴展性:能盡可能的選擇合適的模型承載更多服務(wù)但占用更少的軟硬件資源;軟件或應(yīng)用程序支持一定規(guī)模的水平擴展,以便于服務(wù)更多的用戶。
服務(wù)提供方式,這個是說更好的部署升級方式,對用戶而言產(chǎn)品/服務(wù)的變更升級變得更加的無縫和細(xì)膩,對開發(fā)人員和運維人員來說,要更加快速更加省力的開發(fā)、部署方式。
只有以上兩者同時具備才能做好、維護好一個產(chǎn)品。
軟件架構(gòu)的改良
由于自身是運維出身,只能從系統(tǒng)架構(gòu)和運維的角度對軟件的開發(fā)上提出一些合理化的建議和要求,無非就是上面提到的提高單個軟件或應(yīng)用程序自身的可用性和可擴展性,這是為用戶提供服務(wù)的基礎(chǔ),也是服務(wù)的開始。
自動化(部署、升級、變更等)
一套產(chǎn)品可能是由多個軟件或應(yīng)用程序共同完成的,而這些軟件和應(yīng)用程序可能用不同的語言或者工具開發(fā)的,因此對自動化部署的要求可能比較高,比如一套自動化部署工具可能不能滿足由不同語言和開發(fā)工具開發(fā)出的軟件和應(yīng)用程序。針對操作系統(tǒng)的云端自動化部署提出了虛擬機模板(鏡像)的概念,而針對應(yīng)用程序自然也有虛擬化的相關(guān)概念,例如最近火熱的docker這一應(yīng)用虛擬化工具。
引入之前總結(jié)的IT架構(gòu)概括,“原先傳統(tǒng)模式是物理主機、操作系統(tǒng)和業(yè)務(wù)應(yīng)用。當(dāng)虛擬化、集群和高可用等技術(shù)發(fā)展較為成熟時,傳統(tǒng)模式就形成了三種演變模式。***種縱向發(fā)展(分層解耦合),典型的就是虛擬化的分層技術(shù);第二種橫向發(fā)展(單層(個體)解耦合),典型的就是無狀態(tài),無狀態(tài)的特性使得橫向擴展和動態(tài)伸縮變得更加容易,具有無關(guān)性(無依賴性)和無差別性(一致性);第三種就是混合發(fā)展,即縱向和橫向都有,例如典型的例子就是硬件采用Cisco UCS結(jié)合VMware vSphere,然后再結(jié)合優(yōu)秀的軟件架構(gòu),實現(xiàn)高可用的業(yè)務(wù)系統(tǒng)。”
還是以分層為例,除了虛擬化中所提到的分層技術(shù)還應(yīng)該不能忘記OSI 和TCP的分層思想。毫無疑問,應(yīng)用層是OSI和TCP的頂層,但應(yīng)用層以上是什么還能有什么就沒有一個固定的標(biāo)準(zhǔn)和模型來概括??梢詫⑵髽I(yè)管理人員、最終用戶、開發(fā)人員和運維人員等都容納到應(yīng)用程序之上。為了切近問題的實際,把應(yīng)用層看作是各種軟件和應(yīng)用程序的基礎(chǔ)(如應(yīng)用層為軟件和應(yīng)用程序提供協(xié)議),可以把軟件和應(yīng)用程序拿到應(yīng)用層之上,而自動化部署以開發(fā)運維的角度就可以拿到軟件和應(yīng)用程序之上。
應(yīng)用的虛擬化可以說將應(yīng)用層以上的軟件和應(yīng)用程序再虛擬出一層,有了應(yīng)用虛擬層,所有的應(yīng)用程序可以認(rèn)為對自動化部署是無差別的,屏蔽了軟件和應(yīng)用程序的差異,所有的軟件和應(yīng)用程序?qū)Σ渴鸲远际峭该鞯?,這樣僅有一些簡單配置的一套自動化部署工具或許就能實現(xiàn)部署、升級和變更的自動化。
TODO: 此處應(yīng)該有圖。
關(guān)于Docker
也許還有其他應(yīng)用虛擬化方案,但docker可以被認(rèn)為與軟件和應(yīng)用程序靠的最近的虛擬化提供工具。
借助docker可以實現(xiàn)在單一操作系統(tǒng)中同時快速部署多個隔離的應(yīng)用,盡管這些應(yīng)用可能需要持有不同的訪問端口。
題外話:如果能有什么方法實現(xiàn)docker容器內(nèi)部與宿主主機進行無端口無socket式的通信方法,也許會更讓人覺得不可思議或是更不可理喻吧。
tag:差異化的自動化部署,IT架構(gòu)總結(jié),公有云計算優(yōu)勢和特點,應(yīng)用虛擬化,docker自動化部署。