APP下载

Devops实施方案研究

2017-10-21王梦晓

科技信息·下旬刊 2017年11期
关键词:集约化代码开源

王梦晓

1 概述

DevOps 集文化理念、实践和工具于一身,可以促进企业高速交付应用程序和服务能力的提高,与使用传统软件开发和基础设施管理流程相比较的话,能够帮助企业对产品进行更快地发展和改进。这种速度使企业能够更好地服务其客户,同时可以更高效的参与市场上竞争。

在 DevOps 模式下,在整个生命周期(从开发测试到部署再到运营)内开发团队和运营团队相互协作,QA 和安全团队也会与开发和运营工作更紧密地结合在一起。通过 DevOps 工具可以帮助工程师独立完成通常需要其他团队协作才能完成的任务(例如部署代码或预置基础设施),从而进一步提高团队的工作速度。

根据Puppet牵头DORA(DevOps Research Assessment)主导的2017年度的DevOps最新现状研究报告,在2017年实施了Devops的企业中2000人以上的大型公司占到41%,100-2000人中等公司占比35%,100-10的小型公司22%,10人以下的初创公司为2%。

在交付的系统规模方面,2000台服务器以上的大型系统占比29%,100到2000台服务器构成的中型系统占比38%,100台以下的小型系统占比33%。

在实施Devops的过程中,有两种不同的选择,一种是选择开源的Devops工具链,一种是选择已经厂商集约化的解决包。

2 Devops实施方案

2.1 开源Devops工具链

开源的DevOps工具链中包括版本控制&协作开发工具、自动化构建和测试工具、持续集成&交付工具、部署工具、维护工具、监控,警告&分析工具等,可以更好的执行实施 DevOps 工作流。

版本控制&协作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar

自动化构建和测试:Apache Ant、Maven、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit、Nexus

持续集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go

容器平台:Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)

配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible

微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere

服务开通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat

日志管理:Logstash、CollectD、StatsD

監控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana

上述工具链可以应用于一种或多种类别,并在软件开发和交付过程的不同阶段能够得到体现:

√编码:代码开发和审阅,版本控制工具、代码合并工具

√构建:持续集成工具、构建状态统计工具

√测试:通过测试和结果确定绩效的工具

√打包:成品仓库、应用程序部署前暂存

√发布:变更管理、发布审批、发布自动化

√配置:基础架构配置和部署,基础架构即代码工具

√监视:应用程序性能监视、最终用户体验

Devops工具链虽然很完整,但对于不同类型的企业应用也存在一定的困难。例如:

众创空间/孵化器:

1、各企业办公地点研发工具不统一,项目协同难度大,单独搭建研发环境的难度大、成本高。

2、缺少研发流程,项目管理混乱,进度管控不好,没有代码规范,代码质量低。开发人员手工使用 IDE 打包、手工部署和发布,效率低。

中小企业 / 传统行业

1、缺少研发经验和项目关联经验,对常用的研发工具不熟悉,进度管控不好,没有代码规范,代码质量低。

2、缺少功能完备的研发工具链,搭建研发工具环境耗费大量时间,环境维护耗费精力,现有的研发工具上手慢,学习成本高。

互联网企业

1、各个研发团队研发流程参差不齐,步调不一致,缺乏统一管理。项目周期缺乏把控,内部研发协调经常容易出现问题。

2、搭建研发工具环境耗费大量时间,环境维护耗费精力,现有的研发工具上手慢,学习成本高。

3、异地开发协同效率不高,以手动部署为主,有比较复杂的版本管理,代码合并冲突频繁。

研究院 / 培训机构

面临问题

1、异地开发协同效率低,以手动部署为主,版本管理复杂,代码合并冲突频繁。

2、搭建研发工具环境耗费大量时间,环境维护耗费精力,现有的研发工具上手慢,学习成本高。

为了解决上述问题,许多大型软件开发企业就推出了集约化的Devops解决方案。

2.2 集约化的解决方案

从产品层面来看,集约化的解决方案提供了“项目管理-配置管理-代码检查-编译构建-部署-测试-发布”等全生命周期服务,不仅能帮助企业实现数字化转型需要的敏捷开发能力,包括一次开发、持续开发集成与发布、多版本共享、快速部署、快速迭代、快速反馈等,还能让企业的开发与运维能够得到高效融合,从而使开发与运维一体化可以得到真正实现,一站式服务也可以得到真正的实现。典型的产品包括华为的DevCloud,腾讯云等解决方案。

以华为的DevCloud为例,它提供的功能包括:

√项目管理:敏捷模式,缩短交付周期、对产品质量和协作效率进行提升、传承关键资产

√代码托管:在线代码托管服务,解决跨地域协同开发,便于代码合入审查

√流水线:业务流程按需制定;集成代码下载、代码检查、编译、构建、部署;实时监控流水线状态

√代码检查:对代码缺陷要进行精准定位,提供示例和修复建议,对代码质量进行提高,降低维护成本

√编译构建:混合语言并行构建;支持Maven等主流构建标准支持web/移动终端/IoT应用

√测试管理:端到端测试管理;流程双向追溯;多维度质量报告;快速创建缺陷

√移动应用测试:移动兼容性测试,覆盖主流Android机型,快速定位分析问题

√部署:一键式、快速、并行部署基础组件和应用到开发、测试、生产环境

√发布:安全Maven私有仓;急速开源镜像库,保障发布效率和质量

√CloudIDE:面向软件开发者的云端开发环境,支持在線编写代码,智能提示等功能

这些软件云优势包括:

多场景:支持互联网开发、移动应用开发、微服务开发等主流研发场景

全集成:端到端工具服务、全生命周期覆盖、和企业云紧密集成、简化部署、发布,简化应用上云。

全云化:实现在云中编码调试,开发、测试、部署、运维等一切研发活动都在云上。

高性能:充分利用云端开发加速,打造高效开发体验。

高安全:对全方位系统进行安全加固,加密传输储存核心数据,基于角色的企业级安全管控,保障企业数据安全。

高智能:智能分析和回放开发者行为,对项目风险进行预测,通过个性化智能报表和看板实现对项目透明化管理。

3 总结

企业数字化转型的关键就在于敏捷和DevOps的落地。在工具平台选择上,基于开源工具或者商业工具建立工具平台,将工具链定制开发,形成Devops产品,适用于有单独的IT部门的大型企业,这些企业通常流程装配复杂,需要多部门协作。

而对于只关注业务实现,希望快速上线业务,减少研发和运维成本的中小型企业,更适合使用集约化的解决方案。

猜你喜欢

集约化代码开源
校园武术“学、练、赛”一体化实践探索
五毛钱能买多少头牛
2019(第十四届)开源中国开源世界
2019开源杰出贡献奖
神秘的代码
基于SDN的IP RAN网络智能路由管理系统应用研究
保险企业运营集约化运营模式研究
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
集约化育苗助推现代农业