2023总结-从0到1实现云原生DevOps实践|社区征文

2023总结

2023年已经接近尾声,总结了一下自己2023年的工作内容,发现在公司从0到1实现了DevOps实践是一件比较有挑战和成就感的事情,所以这里想和大家分享一下自己是如何在完成云原生DevOps实践的。

何为DevOps

在云原生爆火的时代,DevOps的理念早已深入人心,大家对DevOps的理解也都不尽相同,很多人以为DevOps是由develop+operation两个单词组成,顾名思义DevOps的出现是为了打通开发和运维之间的壁垒,让开发和运维共同承担发布的责任,一起想办法提高系统发布的效率。诚然,提高发布效率确实是DevOps要解决的问题之一,但并不是全部。DevOps真正的目的是为了提高研发效能,将产品经理、开发工程师、测试工程师、运维工程师结合在一起,化为一个有机的整体,共同推动产品的快速迭代和更新。所以DevOps是根据公司的实情,基于研效平台并通过一定的规则将一堆工具集整合在一起,帮助产品、开发、测试、运维共同推动产品快速、稳定迭代的方法论。

如何推动DevOps落地

在工程师文化还尚未成型的小公司,如何推动DevOps落地,是一个不小的挑战。可以采用了自上而下和自下而上两种方式在公司内部推广,自上而下就是告知高层领导云原生和DevOps能够给公司带来哪些效益。自下而上就是给工程师们进行培训,讲解云原生和DevOps具体实践,提高大家对云、DevOps的兴趣,之后推广平台,让工程师使用,切实感受到DevOps的好处。如此双管齐下,即可推动DevOps落地。

工具集和平台

云原生的DevOps实践,除了项目本身采用微服务架构和云原生的开发方式以外,主要流程包括项目管理、代码管理、代码安全扫描、项目的持续集成、自动化测试、制品库管理、项目的持续发布等步骤。可以选择一些开源的工具集,然后基于自动化测试和研效平台按照既定的发布流程将工具排列组合起来,用以完成上述任务,这里推荐一些业内常用的工具集供大家参考:
项目管理工具:禅道
代码管理工具:gitlab
代码安全扫描:sonarqube
制品库:nexus、harbor、fastDFS
容器管理工具:docker
容器编排工具:kubenertes
K8S管理界面:rancher
为了满足公司整个DevOps流程的要求,自动化测试平台和研效平台采用的是自研的,这里简单地说一下自动化测试平台和研效平台的在DevOps流程中的主要功能。

自动化测试平台

自动化测试平台主要是在项目发布到测试环境后,自动对项目进行测试。实现方式是测试开发工程师根据需求,将自动化测试脚本集成到自动化测试平台,项目发布到测试环境后,自动触发脚本完成测试。

研效平台

研效平台的主要功能包括项目编译、微服务Dockerfile文件生成、制作微服务镜像、上传制品库、发布微服务到K8s集群等,主要实现方式是将脚本集成到流水线中,由流水线完成发布。
另外研效平台还统计了周期内项目发布的次数、每次项目发布的耗时以及项目发布的成功率等,起到量化发布效率的作用,运维可以基于发布数据对发布流程进行整改和优化,提高研效平台的发布效率。

发布流程详情

研效平台结合其他工具集,整个发布流程如下:
产品需求(产品经理)->代码开发(开发工程师)->代码扫描(运维工程师)->持续集成(开发工程师)->自动化测试(测试工程师)->制品管理(运维工程师)->持续发布(运维工程师)
该流程至少包括三套环境,分别是开发环境、测试环境和生产环境,开发环境主要用于开发发布代码并自测,开发测试完成之后即可将代码发布到测试环境,测试工程师基于自动化测试平台完成项目测试,之后由运维工程师将项目发布到生产环境。
整个流程产生的jar包、镜像、测试报告、执行结果等制品会存放到制品库,用户跟进发布的整个流程,保证发布流程的每一步都是可以回溯的。

总结

当前云原生的DevOps实践是基于微服务架构、k8s集群、开源工具集、研效平台等实现的,基于好的DevOps实践,是可以有效地提高公司的研发效能的。当今随着AI技术的不断发展,目前也在思考如何将AI技术同DevOps流程相结合,相信未来在AI技术的加持之下,一定可以让DevOps流程更加智能、更加高效。

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论