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