在一些针对客户量的软件开发项目中,往往在生产环境采用集群化部署,如使用负载均衡、分布式架构,这类应用的部署对运维人员是极大的挑战。第一,项目的架构复杂,使用的代码种类多,构建方式繁琐;第二,生产环境与开发、测试环境是否统一,相同的应用在不同的系统环境中,可能出现不一致的表现,如何确保发布的可靠性,尤为重要。第三,在服务器资源管理上,一般采用虚拟机进行资源隔离,怎样做到合理的资源分配,降低运行成本,对于运维人员需要丰富的实践经验。在2013年,Docker容器技术的推出可以说解放了运维人员,相比虚拟机来讲在保证了资源隔离的同时,又能够做到轻量化,便于应用的迁移。镜像的概念又使在不同的主机上,实现系统环境的完全一致,很好的做到快速的、可靠的持续交付。
综上所述,在互联网应用快速扩张的背景之下,实现更快速的软件交付是所有技术公司的最终目标。
1.2 本课题的目的和意义
本课题实现的目标在于帮助企业实现可靠、高速的软件开发过程,降低时间与金钱成本。通过DevOps概念能够有效的降低企业各个部门之间的沟通成本,在软件周期的各个环节快速过渡,达到开发运维一体化。对于潜在的问题,能够今早发现并今早解决,保障项目的稳定进行。利用Docker的容器技术,降低运维工作难度,实现重复性高、效率高、稳定性强的持续集成与持续交付。在此过程中,实现全自动化,避免人工干预的可能性,减少出错的概率,并且提升了效率。从容器技术的实现上来说,可以减少虚拟机的使用,降低了基础IT设施的成本与运维工作的繁琐。从简单的概念上降低对开发与运维人员对技术上的要求。敏捷开发的引入,可以实现了边开发边交付的能力,能够快速的满足用户的需求,并且从中及时对产品方向进行改良,提升软件开发的效率。与此同时,有效的激发了技术人员的工作热情与工作灵感。
在敏捷过程中使用基于Docker的持续交付方法,对整个企业的业务能力和技术能力,都有重要意义。让技术人员从过去的频繁手工化部署,解脱出来,加速项目进度。从技术深度角度,拓宽视野,能够了解到更加前卫的技术,从而推动互联网企业的信息化建设。
2 技术分析
在技术基础上,主要对敏捷过程中所需要的版本控制、迭代式开发做详细分析解释,同时重点描述Docker本身的使用,以及如何与持续交付进行结合。版本控制主要描述Git的基本概念与使用,持续集成与持续交付主要通过配置管理工具Jenkins进行实现。
2.1 版本控制
2.1.1 需求分析
在软件开发阶段,因为代码往往由研发团队编写,所以会涉及到多人同时编写的代码如何集成的问题,例如如何解决多人修改相同的部分导致代码冲突的问题,以及怎样能够及时得到每天的集成项目成果。同时,对代码的版本怎样进行保存,随时能够快速的得到需要的版本。针对不同的环境,还需要有同一个项目多个不同时间节点的快速获取。在每位开发人员编写的代码部分还应该包括摘要记录,保证其他开发人员能够了解项目整体情况。
在没有版本控制的情况下,需要开发人员手工保存各个历史版本,并自行进行整理与归纳,长期的开发过程之后,版本积累数量增多,造成管理上存在难度。没有良好的开发人员摘要记录,会造成协作开发时沟通成本增加,随着时间的推移,很难再对老版本快速了解其概况。对于后期运维来讲,选择需要的历史版本部署到对应的环境,也会成为一项浪费时间工作。由于版本控制的缺失,无法做到自动化的持续集成与持续交付,对项目潜在的问题无法提前定位,致使后期的问题暴露,耽误项目进度。 基于Docker的持续交付方法在敏捷过程中的应用(3):http://www.751com.cn/jisuanji/lunwen_48984.html