5daofeng•2018-10-25 18:19:19•阅读次数:1741
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
DevOps的落地实施一般分为3个阶段:敏捷开发流程规范阶段、持续交付、技术运营阶段。
在敏捷开发的流程打造中,通过集成gitlab、jira、confluence完成了对于产品需求、项目计划、过程管理的全流程高效集成,结合相关系列生态的工具插件的使用,保证了产品研发的高效流程。
三年连发3大重磅产品工具,憋不住想要分享的DevOps实操干货……
易观在产品研发中采用基于springcloud的微服务应用架构,遵循一切皆组件/服务的设计原则,保证了各组件服务、业务服务最大程度的复用,极大提高了研发的迭代交付效率。
三年连发3大重磅产品工具,憋不住想要分享的DevOps实操干货……
而在持续交付(CI&CD)这一层面,通过jekins、docker整合CI&CD以及自动化测试的工具,完成了各产品、项目的快速验证和交付。
三年连发3大重磅产品工具,憋不住想要分享的DevOps实操干货……
开发提交
开发人员将代码在本地测试后,提交到版本控制系统,如Gitlab代码仓库中。
自动构建
持续整合系统(如GitLab CI 或Jekins CI),检测到版本控制系统有更新时,自动从Git仓库里拉取最新的代码,进行编译、构建, 其中包括如checkstyle、sonar、pmd、findbugs等检测工具。
单元测试
Jenkins完成编译构建后,会自动执行指定的单元测试代码, 易观针对在前后端的UnitTest中选型使用了Karma& Spock工具,同时还利用了jacoco工具来进行一些单元测试覆盖率分析。
测试环境
完成单元测试后,Jenkins会将应用部署到与生产环境相近的测试环境中进行系统性的测试;基于Selenium的GUI自动化测试及JMeter的API接口贯穿自动化测试极大的提高了测试能效和产品测试质量。
UAT测试
在UAT环境里,同样会使用Selenium、JMeter自动化测试工具及脚本进行一些最后的自动化集成测试,保证高效的CD;当然, 这个阶段,易观的QE、产品人员会进行大量的场景覆盖测试,以保证产品的功能及用户体验。
生产部署
通过所有测试后,便可以使用灰度更新将最新的版本部署到实际生产环境;目前易观产品服务50%以上实现了灰度更新。
在持续的技术运营方面,最重要的是实现服务的弹性伸缩及监控预警。易观在弹性伸缩方面,尤其大数据运营分析工具易观方舟中,通过Ambari及自定义的插件开发,完成了整体大数据及服务平台可视化一键打包部置、扩展;而在整体SaaS产品服务方面,通过利用Prometheus、Grafana整合docker、kubernates、springcloud以及其它生态组件和工具, 完成了所有服务链路、中间件、组件、产品服务的可视化监控和预警,保证了SLA不低于99%。
三年连发3大重磅产品工具,憋不住想要分享的DevOps实操干货……
三年连发3大重磅产品工具,憋不住想要分享的DevOps实操干货……
所谓工欲善其事,必先利其器。在DevOps的落地实践中, 易观引用了相当多的组件和工具集。同时,也基于这些工具和组件做了相当多的整合开发和二次开发,方才形成了完善的研发流程及体系。
三年连发3大重磅产品工具,憋不住想要分享的DevOps实操干货……
易观CTO郭炜曾经提出关于技术管理者应该具备的5个核心能力,即:
领导力——“成事”的能力;
文化构造能力——“影响意识”的能力;
人员管理能力——“人*100”的能力;
体系搭建能力——建巢、管事”的能力;
技术实力——“技术肌肉”的实力。
DevOps在易观产品研发中的落地,不仅是易观技术研发体系搭建能力的体现,同时也是易观技术研发人员不断追求卓越的表现。