DevOps是什么?是软件吗?

百度词条是这么解释的:

“ DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。”

优势:基于持续部署于持续交付,是部门之间协作的一组流程和方法,提升效率,提高员工参与感。

个人理解来说,Devops就是一种便捷,适合于公司的一套体系,这套体系包括开发到测试再到运维的一个流程,总之有了这个体系就能更加快速的实现客户的需求。这东西就是为了更好的服务客户!

上图意思就是代码需求设计到开发到提交构建到测试再到部署到运维到监控的流程。

转自 络

上图来自 络比较形象表示应用实现的演变过程。

发展到现在的DevOps,之前有哪些流程在被使用,第一种就是传统的单架构,集中部署式,这个怎么理解,就是一台机器,一个应用。想做个应用,找个服务器,上传打包好的demo-jar包,开启服务,监控就是看一下日志,没问题就OK。基本就是:设计-开发-测试-部署

第二种就是多个机器多个应用所谓的敏捷开发。这时候一个人就不够了,公司大了,机器多了,开发一个人管不过来了,就得找点专门管理机器,管部署的运维人员了。开发也多了,水平也是参差不一,全都要是能直接连机器,这上面领导估计都睡不好觉。然后运维就搞点脚本,减少重复的操作,然后还不太愿意开发变动太多。开发本能又不得不变动,导致开发运维还是有点矛盾的,开发想部署还得统一听指挥,这里开发运维其实还不是那么紧密。

打个数学图形比喻,本来需求分析要个六边形,到设计变成长方形,到研发变现菱形,实际交付变成三角形。

我们知道,一个软件从零开始到最终交付,大概包括以下几个阶段:产品规划、开发编码、构建、QA测试、发布、部署和维护。

最初大家说到DEVOPS,都是指的‘开发运维一体化’,如下图:

转自 络

看了上面这个图,就知道了,devops就是不断开发测试部署重复这过程,就实现了快速开发快速部署快速实现,反正就是快速实现客户的需求,客户是上帝,这样快速开发,客户也能快速看到结果,省得像以前开发半天,开发出来客户说我去你这是啥,我是要这么个东西?

现在好了,客户想看就看,不满意快速改动实现,客户想要啥就给开发啥,到时候客户满意了咱也能赚钱不是。

再说说构建devops平台需要哪些工具,工具组件啥的其实很多,但关键在于适合自己的公司和团队才是最关键的。我下面列举一下。

项目管理(PM):jira。运营可以上去提问题,可以看到各个问题的完整的工作流,待解决未解决等;

代码管理:gitlab。jenkins或者K8S都可以集成gitlab,进行代码管理,上线,回滚等;

持续集成CI(Continuous Integration):gitlab ci。开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

持续交付CD(Continuous Delivery):gitlab cd。完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

镜像仓库:Harbor

容器:Docker、containerd

编排:K8S

镜像扫描:Clairctl

配置:Nacos

服务注册与发现:etcd

服务治理:Consul

脚本语言:Python

日志管理:ELK

显示面板:Grafana

系统监控:Prometheus、zabbix

负载均衡:Nginx

关:Kong,zuul

链路追踪:Zipkin

公司内部文档:Confluence、nextcloud

Web服务器:Nginx、Tomcat

数据库:Oracle、Mysql、redis

警:各种机器人api推送到工作群

这个图来自 络,可以看到这过程中有哪些组件应用参与其中

转自 络

个人理解,想实现DevOPs就得形成一套标准的持续集成部署流水线,没有一套好的流水线,实现DevOps是空中楼阁,至于典型的CICD流水线过程,我还得专门写一篇文章讲解下,各位朋友敬请期待!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月6日
下一篇 2022年1月6日

相关推荐