深度剖析:最新云端开发工具如何实现敏捷+DevOps开发落地
2017-11-29 10:40 老鱼大哥 阅读(421) 评论(0) 编辑 收藏 举报相信很多软件开发人员们对今年国内新兴的云端开发工具——华为软件开发云都有耳闻,有些人可能还免费体验过,由于它5人以下的团队是免费使用的,很庆幸本人的这个项目正好5个人,就注册使用了。下面就自己的使用心得,为大家深度剖析下这个最新的云端开发工具是“怎样实现敏捷+DevOps开发落地的”。
云端开发感触:开发者专注做开发,云平台自动化处理传统四大问题,效率显著提高
开发人员可只关注代码的编写,传统开发中遇到的“开发工具统一、环境部署、项目管理、并行协同开发“四大问题,云平台可以直接处理掉,不用再耗费人力逐一手动处理琐碎的代码之外的工作,大大提高了项目的开发效率。
我之前项目开发中一亿行的代码采用传统模式的话,编译时间超过25分钟的,采用华为软件开发云平台,编译时间只用了7分钟;而版本的编译速度从94分钟减少到了31分钟;研发环境的准备时间由月级降低到了小时级。
- 缺陷自动检查:代码缺陷模式库融合华为优秀代码实践与编程规范与业界通用的检查规则,覆盖常见的编码风格、架构、Web安全等方面的问题。
- 大规模分布式任务调度:基于并行智能任务调度算法,对检查节点进行自动弹性伸缩,检查任务根据检查规则类型智能分片和并行执行,支持大规模代码仓库的代码检查。
该技术支撑下的开发优势:
- 支持Java、JavaScript、CSS、HTML、C++等语言检查,持续增加语言支持广度。
- 精确定位缺陷,针对每个代码缺陷,提供详细的缺陷影响说明、正确示例、错误示例、修改建议。
- 如果系统的检查不满足需求,SE可通过定制规则集来实现挑选规则集;
- 针对大量代码缺陷,用户可根据问题级别、问题分类、语言、文件目录等进行过滤,分级处理。
- 并行智能任务调度:实现智能任务调度算法,用户根据任务特点自行编排并行/串行任务,系统感知执行器状态和健康度,动态分配执行器的任务,故障节点任务实现自动转移和熔断,结合资源弹性伸缩策略,实现调度器和执行器高可用和水平扩展。
- 资源弹性伸缩:使用华为企业云弹性伸缩服务,感知到业务集群资源使用情况,资源利用率超过阀值时,动态扩容;反之,自动缩容。流水线根据不同业务类型,配置不同的弹性伸缩策略和资源弹性伸缩组,从而实现短时间内迅速提升流水线总体吞吐量。
- 编译构建并行技术:通过使用精准增量编译技术,结合并行智能任务调度,可实现按技术栈、目录等编译策略增量并行编译,加速编译构建的速度,大幅降低编译构建等待时间。
该技术支撑下的开发优势:
- 对于一切可以解放双手的任务都由工具自动化实现。
- 一键式完成代码下载/代码检查/编译构建/系统部署/产品发布整个交付流程.。
- 任务并行执行,按需动态分配资源,显著提升资源利用效率及执行效率。
- 可实现单模块或者单独子系统的个人级交付,也可实现多模块、多子系统的版本级交付可随时查看流水线执行进度/结果/报告/日志。
- 部署编排技术
提供一定的服务编排能力,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤。并且可以同步或异步的发起任务。
用流水线同时集成编译构建、代码检查、部署,从代码提交开始触发操作,完成整个DevOps的自动化流程。流水线支持编排部署任务之间的依赖和顺序,通过串行任务和并行任务以及子流水线来组合、调度各个任务,从而实现高效部署。
- 大规模部署技术
Ansible本身就支持多并发部署,缺省的并发任务数是5. 但是DevCloud的部署采用python API实现,我们封装了python的任务以多线程方式运行;同时采用了gunicorn框架提供多进程复用技术,以最大限度的利用Ansibe引擎的并行部署能力;对于超过200以上并发的大规模部署,我们会采用横向扩展即增加AnsibleRest的节点数来支持更多的并发部署; 此外,我们还提供部署任务排队机制来保障峰值任务时系统仍然能够正常运行。
该技术支撑下的开发优势:
- 一键式自动化部署,部署机器无需安装代理,过程可视化,支持主流编程语言和技术框架,支持并行部署和流水线无缝集成
- 支持Web应用程序和微服务的部署,支持Tomcat、Java、Python、NodeJS、Go、PHP、Ruby语言。
- 通过流水线定制交付流程,支持并行和串行任务,系统自动执行所有任务,并可查看所有任务的执行状态、日志及报告。
- 提供高级编辑功能,满足用户更改部署参数和自定义执行参数以在部署任务执行时动态输入执行参数。
业内分析:
正所谓英雄所见略同,业界也有很多DevOps方案和实践经验,比如微软公司Visual Studio + Team Foundation Server方案、AWS和Google基于云的DevOps模块化组件、其他公司自研搭建的DevOps链。
华为推出的DevCloud的侧重点是一站式的解决方案,用于帮助企业在软件开发的过程中提升效率和质量。DevCloud的中文名称为“华为软件开发云”,即面向的目标群体是团队规模在10-50人的中小团队,如中小企业的软件开发者、众包开发团队、个人开发者、高校软件/计算机类的大学生。