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