DevOps—基本概念

这篇具有很好参考价值的文章主要介绍了DevOps—基本概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. DevOps

维基百科定义:
DevOps是一组过程、方法与系统的统称,用于促进 开发、技术运营质量保障(QA) 部门之间的沟通、协作与整合。我理解DevOps是一种软件管理思维模式。

为什么会有DevOps呢,或者说软件开发领域是怎么样演变出DevOps这个概念的呢?

项目管理模式的演变是受项目的规模大小影响的。

最初阶段,项目软件功能比较简单,工作量不大,程序员一个人可以完成规划、编码、构建、测试、发布、部署和维护所有阶段的工作。
DevOps—基本概念
后来,项目扩大,软件的规模也在逐渐变得庞大,采有传统瀑布流模型。团队里面除了软件开发工程师之外,又有了软件测试工程师,软件运维工程师,各个工种分工合作,一个阶段所有工作完成之后,再进入下一个阶段。

DevOps—基本概念
再后来,随着项目的再次扩大,用户对系统的需求不断增加,与此同时,用户给的时间周期却越来越少,时间周期比较长的瀑布流模式不再适用,于是就出现了“敏捷开发”,为的就是小步快跑,持续迭代,快速发现问题,快速解决问题,快速和用户、业主进行确认。
DevOps—基本概念
再然后,在现今这个时代,对变化进行响应的要求越来越高,可以一个项目几天就要迭代上线一版。而从上面的图也可以看到,敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节,运维部署成为瓶颈。运维的核心就是维稳,不出问题,这导致了开发快速迭代的版本很难快速正式上线。

这时候,DevOps这个概念才被提出和关注。从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠。而从DevOps概念提出到现在,也不仅仅只是要打通开发和运维的壁垒了,而是扩大到整个项目团队涉及到所有角色,也包括了市场、需求等人员。

DevOps—基本概念
DevOps 的三大支柱,即人(People)、流程(Process)和平台(Platform)。

DevOps = 人 + 流程 + 平台
人 + 流程 = 文化
流程 + 平台 = 工具
平台 + 人 = 赋能

这是这个行业演变过程,也是一个公司从成立,到发展壮大的过程,一个公司的项目管理模式演变过程是整个行业演变过程的缩影,不同阶段有不同阶段的模式,达到一定阶段才有改变的必要,不过我们如果提前有这些了解,提前有所准备,那边在转变的过程中就可以少些弯路和内耗。

DevOps要做就是使用技术工具按照标准化的流程统筹各个阶段的人和人的行为,实现快速交付。它的落地考验的不仅是一家企业的技术,更是管理水平和企业文化,需要一家公司从上到下进行思维转变,并且重新梳理全流程的规范和标准。技术(工具和平台)是最容易实现的,流程次之,思维转变反而最困难。

虽然思维转变是最重要的,但是思维转变没法凭空而来,不可能看一下概念,听一下别人的描述就可以转变过来。只有身处在那样的环境,体会到确切的痛点,如一个公司随着规模的扩大,项目变得复杂,发现按照以前的项目执行方式每次都是亏钱,这样才有可能引发思考,如果这时再体验到相关地技术带来的便利和好处,这样才有可能引发思维的转变。

对于DevOps的介绍,大家可以再看看以下文章,感觉这两篇还是讲得比较清楚的,我这里也借鉴了他们。
DevOps到底是什么意思?
https://www.zhihu.com/question/58702398?sort=created

对于开发人员个人而言,虽然DevOps实施落地中技术和工具是最简单的,但是我们还是要先了解技术和工具,从中体会它与我们日常工作流程的差别,引发思考,同时也为可能用到的时机进行准备积累。

2. CI/CD

DevOps涉及开发的各个阶段,涉及到各个阶段的人,人的思维转变是最难的,而标准的流程和规范是DevOps的基础,是将各个阶段的人和行为管理起来的根本,平台则是流程自动化的技术工具。其中,CI/CD是DevOps中最能体现流程化的一个阶段,旨在通过技术工具搭建标准自动化流水线过程,减少重复工作的资源浪费。

DevOps—基本概念
CI/CD是伴随着DevOps出现的两个词汇,CI是Continuous Integration(持续集成),而CD对应多个英文,Continuous Delivery(持续交付)或Continuous Deployment(持续部署)。所谓持续就是即时和反复,为的就是及时发现问题,及时响应。

持续集成:

持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起,然后进行自动化测试,并且不会相互影响工作。
DevOps—基本概念
持续交付:

持续交付是指在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
DevOps—基本概念
持续部署

在持续交付的基础上,把部署到生产环境的过程自动化。如果你对比上图持续部署就可以发现持续部署和持续交付的区别就是最终部署到生产环境是自动化的。
DevOps—基本概念
关于CI/CD概念更多的了解,可以再看一下以下文章:什么是CI/CD

从上面的几个图可以看出,要实现CI/CD最起码需要一个固定的流程和三个工具。流程需要规定从代码开发到生产环境需要经过哪些阶段,每个阶段需要做什么,如果一个阶段没有达到预期应该怎么做,这个流程不同公司会有所不同,也是每个企业管理方式的体现。最基本的三个工具包括源代码管理工具(SCM)、自动化构建平台,消息通知工具。

平台工具各个公司各有不同,大家日常工作中也各有熟悉的工具,DevOps也不仅仅CI/CD需要平台工具,如项目管理、需求、原型和UI管理都需要工具,这里只是介绍CI/CD过程相关的。

源代码管理工具一般选择 GitLab,也可以用Gitbilit等其他的,这些大家都应该很熟悉,毕竟是日常工作中必不可少要接触的。

自动化构建平台成熟的有很多,GitLab也自带有CI/CD模块可以用,而这里要采有的是开源且发展历史长久,广泛使用和最好的CI/CD工具之一的Jenkins。

消息通知可以用邮件,也可以通知到钉钉等办公软件中。

之后的文章将介绍相关工具的部署和准备,并结合k8s做一些生产环境中的示例。

上一篇:容器技术—docker stack
下一篇:DevOps—源码管理工具文章来源地址https://www.toymoban.com/news/detail-412392.html

到了这里,关于DevOps—基本概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从定义到实际应用,详解项目管理的基本概念与核心内容

    项目管理是项目的管理者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。项目管理的内容包括项目范围管理,是为了实现项目的目标,对项目的工作内容进行控制的管理过程。它包括范围的界定,范围的规划,范围的调整等。

    2024年02月08日
    浏览(60)
  • 大数据开发之Hive(基本概念、安装、数据类型、DDL数据定义、DML数据操作)

    1.1.1 Hive产生背景 HDFS来存储海量的数据、MapReduce来对海量数据进行分布式并行计算、Yarn来实现资源管理和作业调度。但是面对海量的数据和负责的业务逻辑,开发人员要编写MR对数据进行统计分析难度极大,所以就产生了Hive这个数仓工具。Hive可以帮助开发人员将SQL语句转化

    2024年01月17日
    浏览(43)
  • 图的数据结构,系统学习图的基本概念、定义和建立,学会邻接矩阵、邻接表以及实现六度空间案例,遍历图的方式——广度、深度访问

    图 :G = (V,E) Graph = (Vertex, Edge) V:顶点(数据元素)的有穷非空集合; E:边的有穷集合。 有向图 :每条边都是有方向的     无向图 :每条边都是无方向的   完全图 :任意两点之间都有一条边相连    无向完全图:n个顶点,n(n-1)/2条边 无向完全图:n个顶点,n(n-1)条边 稀疏

    2023年04月22日
    浏览(45)
  • # DevOps名词定义梳理

    极限编程座右铭:如果它令你很受伤,那么就做更多的练习(If it hurts, do it more often) 构建:就是把源代码制成成品的过程,这个过程一般会有单元测试 集成:将各个项目整合到一起形成依赖关系,形成整体,是代码审查合并后,将项目服务全套集成部署到运行环境 测试:

    2024年02月09日
    浏览(29)
  • 前端要了解的k8s、CI/CD、Devops概念

    简单的理解,k8s就是 docker容器集群的管理工具 。他将容器进行更多自动化的操作,自动创建、自动重启、自动扩容等,这个过程称为 容器编排 。 k8s 抽象了硬件资源 ,将N台物理机或云主机抽象成一个资源池,容器的调度交给K8S(例如CPU 不够用就调度到一台足够使用的机器

    2024年02月03日
    浏览(48)
  • 什么是机器学习?监督学习的定义、概率论的基本概念以及模型选择、过拟合与欠拟合的问题。常见的监督学习算法,包括朴素贝叶斯(Naive Bayes)、决策树(Decision Tree)支持向量机随机森林

    作者:禅与计算机程序设计艺术 什么是机器学习?从定义、发展历程及目前的状态来看,机器学习由3个主要分支组成:监督学习(Supervised Learning),无监督学习(Unsupervised Learning)和强化学习(Reinforcement Learning)。这三类学习都可以使计算机系统根据输入数据自动分析和改

    2024年02月09日
    浏览(52)
  • Wikijs简介-强大&可扩展的开源维基软件

    使用 wiki.js 美丽直观的界面,让文档成为写作的乐趣! 优点 🔧 随时随地安装 几乎适用于任何平台,并与PostgreSQL、MySQL、MariaDB、MS SQL Server 或 SQLite 兼容! ⚙️ 管理强大 使用广泛而直观的管理区域管理维基的所有方面。 🚀 性能 Wiki.js运行在快速的Node.js引擎上,它是基于性

    2024年02月10日
    浏览(75)
  • 【DevOps-08-4】Jenkins实现自定义镜像并推送到Harbor

    打开Jenkins管理后台,进入项目详情 在构建-增加构建步骤-执行shell 添加编写构建执行shell脚本 更改Springboot java项目源码版本,并提交到Gitlab 登录到Gitlab管理后台,新建一个v3.0的tag 到Jenkins管理后台,对项目执行构建 构建记录详情,查看构建日志 在宿主机查看使用Jenkins打包

    2024年01月19日
    浏览(49)
  • 【项目实战】自定义设置Sonar的规则,要求DevOps工具链SonarQube只扫描指定模块

    开发微服务项目,很多会基于网络上现成开源的微服务框架进行二开,公司有单元测试覆盖率的要求,往往会使用SonarQube 来实现扫描代码的单元测试覆盖率,但是因为网络上现成开源的微服务框架很大部分是已经现成的代码,因此补充单元测试工作会很痛苦,于是,可以自定

    2024年02月14日
    浏览(45)
  • kafka--kafka的基本概念-副本概念replica

    Broker 表示实际的物理机器节点 Broker1中的绿色P1表示主分片Broker2中的蓝色P1表示副本分片,其余类似,就是主从的概念,如果一个Broker挂掉了,还有其它的节点来保证数据的完整性 P可以看做分区 同一时间点,绿色P1 和紫色P1 不会完全一致,存在一个同步的过程 绿色部分处理

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包