分享

联想企业云docker开发实践

Docker容器技术发展势头如此迅猛,以至于很多开发人员跟不上节奏,Docker不仅是有史以来人气最高的开源项目之一,同时也已经给人们构建应用程序的方式带来了根本性变革。其实docker是基于LXC(Linux Container)容器技术发展而来,通过内核虚拟化技术(namespaces及cgroups等)来对容器进行资源隔离,容器运行时相当于宿主机上一个进程,没有额外操作系统开销,由此带来docker隔离性、便携性和轻量性等优点。
随着Kubernetes和相关管理工具的发布,docker容器技术和配套工具越来越完善。早在2014年时候,我们已经将docker引入到联想企业云开发过程中。联想企业云为企业提供云存储服务,企业更重视可靠和稳定性,所以经过深入研究和大量测试后,才决定将docker应用到实际的生产环境。除了上面提到一些特性外,我们分享在实际开发过程中docker带来的好处。
1.        持续集成,加强开发、测试迭代能力
传统开发测试流程,是通过代码驱动的,开发人员将代码提交到代码库,测试人员从代码库拉去代码,然后去模拟环境中测试,这种流程能够使得测试和开发人员看到同样的代码,但是由于环境变化,配置成为问题,这种效率较低。引入docker之后,我们可以将镜像驱动这个开发和测试过程。如图所示。
QQ图片1.png
在实际开发过程中,每天开发人员根据产品需求和问题,进行开发,然后将开发后的提交到代码仓库中。之后,系统会自动调用编译服务,自动编译代码仓库中的代码,然后将编译后的程序整合到基础镜像中,生成可执行镜像,然后运行可执行镜像进行自动化测试,主要运行系统的测试集,从逻辑和业务层面检测可执行镜像是否合格。验证通过后,将镜像推送到镜像仓库中,并进行发布新版本。在测试人员接收新版本通知后,从镜像仓库拉取相应版本的镜像,然后在测试进行部署,对特定的功能和问题进行测试,然后将测试结果反馈给开发人员。通过这种开发流程,可以将开发和测试人员都集中到特定的需求和问题上,增加了版本迭代更新能力,快速推进项目的进度。
2.        隔离环境差异,方便追踪调试
传统开发模式中,代码从开发人员的环境到最终在生产环境上的部署,需要经过很多的中间环境,每一个中间环境都有自己一些的差别,导致开发环境和生成环境存在很多差别。一旦出现bug,经常要耗费大量时间和精力,解决环境不一致的问题。而使用Docker,开发环境和生成环境都是用相同的镜像,应用就会运行在相同的环境中,这样不仅简化代码流水线管理,也使得问题追踪起来非常方便。同时Docker提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug,快速定位Bug,从而有针对性进行修复和完善。
3.        快速部署,持续交付
在虚拟机或者物理机部署分布式系统,通常比较耗时,即使是最快的虚拟机也要30秒到1分钟左右。Docker的虚拟化技术在创建容器过程,通常秒级时间就可以完成,大大提高部署效率,而且这种方式部署出来的系统还较为可靠。
4.        方便应对需求定制和版本升级
联想企业云为企业用户提供定制需求服务,每个企业都会有自己独立的定制服务,如果使用传统方式应对定制服务,将会耗费大量的时间和精力处理环境和应用程序的版本控制上。而使用docker容器技术可以轻松应对企业定制需求。因为Docker容器的一个特性就是应用程序与数据分离,可以保持数据不变的情况,对应用程序进行升级。具体我们在实践时,首先企业内部的私有镜像仓库升级,然后其他各台机器的镜像与私有仓库同步,然后启动新的容器,就会完成整个分布式系统的升级。通过这种方式,开发人员不用关心企业的网络环境和版本管理,只要关注定制需求的研发上,不仅提高了研发效率,而且增加企业定制服务的能力。
         现有的管理工具,如kubernate,并不是容易使用,尤其对于中小企业的运维人员,操作起来较为困难。如果直接使用这些管理工具,一方面不能和我们的产品很好对接,另一方面会影响我们的私有云产品的体验。于是为了满足上面需求,结合联想企业云存储的特点,我们开发了一套管理系统,主要模块和功能如图所示。这套管理系统融合了docker自动化部署、动态配置、自动化监控和报警和动态扩容等功能,操作起来比较简单,非常容易使用。开发人员、测试人员和运维人员都可以很方便使用这套系统,我们的企业客户用了我们这套管理系统,都表示容易上手,再加上能够对系统和容器的监控和报警,他们觉得联想企业云存储产品比较可靠,用起来比较放心。
QQ图片2.png
Docker容器技术轻松解决了开发环境和生成环境不一致的难题,将开发人员、测试人员和运维人员从繁杂的部署环境解脱出来,让他们专注于自己关注的内容上,降低了人力和物力成本,同时提高了工作效率。docker容器发展至今,相应的配套工具和解决方案层出不穷,在具体选取时,不要盲目追求技术的‘高精尖’,要注意与自己的产品和需求相结合,容易使用和稳定可靠往往更重要,这也是docker能够迅猛发展和推广的一个主要原因。

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条