谢浩安 陈琴
容器相比于传统云计算技术,具有快速持续部署、环境标准化和版本控制、高隔离性、跨云平台可移植性、更高效的虚拟化等特点,是云计算发展的重要方向之一。本文基于容器技术的研究,设计一种开发测试一体化平台,支持“互联网+”应用的建设,满足新型的互联网化应用在容量管理、发布速度和资源支撑等方面要求。
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 总结与展望
本文研发的基于容器的开发测试一体化平台,能快速响应“互联网+”应用建设的要求,为用户提供可视化构建微服务的方式,用户通过简单的点击、拖拉拽,就可以构建自己的微服务,有助于推动“互朕网+”应用的发展。同时,持续丰富着整个容器技术生态,为企业和开发者提供了丰富的选择空间,降低技术选择风险。