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