謝浩安 陳琴
容器相比于傳統(tǒng)云計算技術(shù),具有快速持續(xù)部署、環(huán)境標準化和版本控制、高隔離性、跨云平臺可移植性、更高效的虛擬化等特點,是云計算發(fā)展的重要方向之一。本文基于容器技術(shù)的研究,設(shè)計一種開發(fā)測試一體化平臺,支持“互聯(lián)網(wǎng)+”應用的建設(shè),滿足新型的互聯(lián)網(wǎng)化應用在容量管理、發(fā)布速度和資源支撐等方面要求。
1 引言
隨著我國“互聯(lián)網(wǎng)+”應用的戰(zhàn)略貫徹與實施,軟件和信息技術(shù)服務業(yè)步入加速創(chuàng)新、快速迭代、群體突破的爆發(fā)期,加快向網(wǎng)絡化、平臺化、服務化、智能化、生態(tài)化演進。傳統(tǒng)模式的應用開發(fā)所基于的架構(gòu)模式、所依賴的開發(fā)資源庫以及所采用的開發(fā)進程都發(fā)生了變革。在架構(gòu)模式上,應用開發(fā)愈來愈原子化,所需要的運行資源逐步向網(wǎng)絡化擴展;開發(fā)資源愈來愈偏向開源體系或分散式處理體系;開發(fā)進程上逐步向迭代式敏捷開發(fā)演進。這就對現(xiàn)有應用的部署方式產(chǎn)生了新的影響。容器云作為一種基于LXC輕量級虛擬化的新型云計算技術(shù),相比于傳統(tǒng)云計算技術(shù),其具有快速持續(xù)部署、環(huán)境標準化和版本控制、高隔離性、跨云平臺可移植性、更高效的虛擬化等特點,快速響應“互聯(lián)網(wǎng)+”應用的建設(shè)要求。
2 國內(nèi)外發(fā)展現(xiàn)狀
容器技術(shù)是一種區(qū)別于虛擬機技術(shù)的操作系統(tǒng)級虛擬化化技術(shù)。它的發(fā)展和應用,為各行業(yè)應用云計算提供了新思路,可以更輕量的方式對云平臺進行虛擬化;同時也對云計算的交付方式、效率、paas平臺的構(gòu)建等方面產(chǎn)生著深遠的影響,可以幫助客戶快速構(gòu)建云原生應用,實現(xiàn)持續(xù)集成和交付,加快應用迭代周期。
容器技術(shù)最早應用在linux操作系統(tǒng),慢慢被互聯(lián)網(wǎng)公司用于部署分布式應用。隨著docker、rocket和rancher等容器引擎的興起和成熟,逐漸被各行各業(yè)普遍使用和認可。常用的容器編排項目有Mesos、Kubemetes和Swarm),現(xiàn)都已形成自己的生態(tài)體系,為企業(yè)和開發(fā)者提供了豐富的選擇空間。同時,隨著容器技術(shù)的快速發(fā)展及生態(tài)豐富,大型組織中的基本計算單位正在逐漸從虛擬機轉(zhuǎn)向容器。
在國內(nèi),容器云還處于起步階段。容器技術(shù)研究以初創(chuàng)小公司為主,大公司基本上處于觀望狀態(tài)。目前,主要的創(chuàng)新容器云企業(yè)有時速云、Daocloud、靈雀云、數(shù)人云等,主要的核心技術(shù)基本上來自國外的開源社區(qū),國內(nèi)的公司以基于開源做工程化落地為主。2016年,中國開源云聯(lián)盟發(fā)布了《2016容器技術(shù)及其應用白皮書》,推動容器技術(shù)的發(fā)展,提升容器技術(shù)在云計算領(lǐng)域中實踐和服務能力。
容器技術(shù)的應用仍然面臨著很多的問題,例如容器技術(shù)多樣,業(yè)內(nèi)沒有統(tǒng)一的標準;企業(yè)在進行容器技術(shù)應用的過程中一些傳統(tǒng)服務(例如數(shù)據(jù)庫服務等)很難與容器平臺進行整合等等。
3 技術(shù)方案設(shè)計
本文發(fā)現(xiàn)傳統(tǒng)開發(fā)模式中,開發(fā)、測試、運維人員被分割成獨立的階段,每個階段分別交付不同的內(nèi)容,開發(fā)人員交付代碼、測試人員交付測試包,運維人員部署運行環(huán)境,在這樣的協(xié)作方式下,軟件迭代達到了極限,已經(jīng)無法滿足“互聯(lián)網(wǎng)+”趨勢對于快速迭代的需求。因此,本文提出了基于容器的開發(fā)測試一體化平臺關(guān)鍵技術(shù)研究,以滿足新型的互聯(lián)網(wǎng)化應用在容量管理、發(fā)布速度和資源支撐等方面要求。
3.1 容器云基礎(chǔ)架構(gòu)設(shè)計
本文認為容器云的設(shè)計重點在于其自動化部署架構(gòu)、容器資源及微服務調(diào)度編排策略、異構(gòu)云基礎(chǔ)設(shè)施資源支持、開發(fā)與微服務開發(fā)的通用平臺模塊化市場等重要內(nèi)容,它們?yōu)檐浖芷诜仗峁┨摂M化和分布式的標準支撐環(huán)境。
在容器云基礎(chǔ)架構(gòu)設(shè)計中,底層IT資源兼容了異構(gòu)云計算資源平臺,解決異構(gòu)云資源的復雜性問題;在容器基礎(chǔ)設(shè)施上,提供容器網(wǎng)絡、監(jiān)控、存儲、基礎(chǔ)服務等功能;支持應用編排和資源調(diào)度服務;上層實現(xiàn)各種開發(fā)資源應用聚合,滿足設(shè)計服務架構(gòu)及流程,實現(xiàn)軟件開發(fā)、測試、交付的全流程服務,從環(huán)境流、業(yè)務流和數(shù)據(jù)流的一站式服務。
3.2 容器云的開發(fā)環(huán)境研究
容器云的開發(fā)環(huán)境主要關(guān)鍵技術(shù)有調(diào)度編排引擎、任務調(diào)度、資源管理等技術(shù),通過這些關(guān)鍵技術(shù),可構(gòu)建容器云的開發(fā)環(huán)境開發(fā)環(huán)境中聚合了代碼倉庫、DevOps工具、多租戶管理、安全組件等功能,并實現(xiàn)軟件開發(fā)持續(xù)集成與持續(xù)發(fā)布,支持多語言開發(fā)環(huán)境,形成自動水平伸縮架構(gòu),智能負載均衡等功能特性的PaaS服務能力。
3.3 云應用中心研發(fā)
針對微服務的快速開發(fā)與應用,本文提出搭建企業(yè)應用中心,實現(xiàn)服務的自動化部署。項目通過企業(yè)應用中心實現(xiàn)通用功能服務擴容的自動化及服務發(fā)現(xiàn),例如提供負載均衡、云主機等通用基礎(chǔ)設(shè)施服務,降低軟件開發(fā)中自動化部署問題,減少公共通用服務的重復開發(fā)工作。
3.4 服務門戶研發(fā)
容器云平臺服務門戶,需要提供在用戶安全管理、單點登錄、流程管理等一站式服務的執(zhí)行與可視化,為用戶提供在線化和智能化的服務模式。
4 容器云的關(guān)鍵技術(shù)探討
4.1 DevOps解決方案
在開發(fā)測試一體化平臺設(shè)計中,需要通過實現(xiàn)軟件開發(fā)微服務組件技術(shù),并形成開發(fā)者的微服務市場,發(fā)揮微服務的可組裝、可靈活替換、多版本支持,快速集成部署等特點,從而提高件開發(fā)效率和開發(fā)的靈活性。同時,需要提供一套完整的DevOps解決方案,實現(xiàn)Code to Cloud全流程自動化;使得開發(fā)者只需要關(guān)注最核心的代碼層面,而不需關(guān)鍵接下來的測試、構(gòu)建、集成、部署等過程。
4.2 多種調(diào)度編排引擎的兼容問題
為了更靈活地支撐各種應用,本文采用底層框架與Rancher合作完美解決容器相結(jié)合,解決同時支持Kubernetes、Mesos和Swarm的管理。當需要部署和創(chuàng)建業(yè)務環(huán)境的時候,用戶可以在Kubemetes、Mesos和Swarm中根據(jù)需要任意選擇。
4.3 云計算基礎(chǔ)設(shè)施服務微服務化問題
為了不受限于底層IT資源,本文認為需要解決底層異構(gòu)的云計算基礎(chǔ)設(shè)施資源的調(diào)度問題,支持根據(jù)集群中物理資源的情況,可動態(tài)調(diào)度IaaS環(huán)境,滿足軟件開發(fā)用戶和項目對外運營測試應用微服務申請合適規(guī)格的資源(例如云主機)作為承載微服務容器運行的物理資源加入到容器平臺集群中。
5 總結(jié)與展望
本文研發(fā)的基于容器的開發(fā)測試一體化平臺,能快速響應“互聯(lián)網(wǎng)+”應用建設(shè)的要求,為用戶提供可視化構(gòu)建微服務的方式,用戶通過簡單的點擊、拖拉拽,就可以構(gòu)建自己的微服務,有助于推動“互朕網(wǎng)+”應用的發(fā)展。同時,持續(xù)豐富著整個容器技術(shù)生態(tài),為企業(yè)和開發(fā)者提供了豐富的選擇空間,降低技術(shù)選擇風險。