DevOps 是一种怎样的体验?

栏目: 编程工具 · 发布时间: 5年前

内容简介:软件行业中,需求分析,软件设计,程序编写,软件测试,运行维护。

一、软件开发演变史

软件行业中, 每一个概念的提出都是为了解决某个特定的问题 。要了解 DevOps ,就要讲下软件开发的演变史。

传统瀑布模型

DevOps 是一种怎样的体验?

需求分析,软件设计,程序编写,软件测试,运行维护。

瀑布模型被淘汰的原因

  • 各个阶段的划分完全是固定的,阶段之间 产生大量的文档 ,极大地 增加工作量
  • 由于开发是线性的,所以用户只有在开发的 末期才可以到成果 ,所以增加了风险。
  • 早起的 错误等到最后测试再发现 这样会带来严重的后果。

敏捷开发模型

DevOps 是一种怎样的体验?

缓慢而繁琐的瀑布模型演变成敏捷,开发团队在短时间内完成软件开发,持续时间甚至 不超过两周 。如此短的发布周期帮助开发团队处理客户反馈,并将其与 bug 修复一起合并到下一个版本中。

虽然这种敏捷的 SCRUM 方法为开发带来了敏捷性,但它在 运维 方面却失去了敏捷实践的速度。 开发人员和运维工程师之间缺乏协作仍然会减慢开发过程和发布

DevOps 是一种怎样的体验?

DevOps 是一种怎样的体验?

DevOps 就是为了 更好地协作和更快地交付 而产生的。下面让我们来详细看看 DevOps 是什么。

  • 注:这里需要强调的是 DevOps 中的 Dev 不但包括 开发者(developers)而且包括测试人员(testers)

二、DevOps

DevOps 是一种软件开发方法, 专注于 IT 专业人员之间的通信,集成和协作 ,以实现产品的 快速部署 。 DevOps 是一种重视“软件开发人员(Dev)”和“IT 运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过 自动化 “软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地 快捷、频繁和可靠

从概念中不难提炼出:

  • DevOps 解决的是 Dev 和 Ops 的沟通问题
  • DevOps 的目的是 快速部署
  • DevOps 有利于 快捷、频繁和可靠地发布软件
  • DevOps 强调 自动化

Dev 和 Ops 有什么沟通问题?

Ops 看重的是保障系统的 稳定性、可靠性和安全性 ,而 Dev 则想着如何 尽快发布新的版本,增加新的功能 ,这两者本身就是一种矛盾和冲突,尽管他们的 共同目标都是为 用户提供软件产品或服务

为什么 DevOps 强调自动化?

  • 提高效率:Dev 和 Ops 的手动工作,如果可以实现自动化,将显著提升效率水平。
  • 减少错误:即使再谨慎的人也难免会犯错误,尤其是面对重复性工作时。通过自动化 工具 来完成这样的工作,能将错误率大大降低。
  • 最大化员工使用:通过自动化,Dev 和 Ops 可以将精力集中在更复杂、更有战略意义的事情上。同事也避免了雇佣许多员工来应对工作量增加的需求。
  • 提高团队的信心:通过自动化,解放了手动的重复性工作。能让员工体现出更大的价值,也让产品更快捷、频繁和可靠地到达用户手上,提高了团队对产品的信心。

DevOps 会替代敏捷吗?

个人认为 DevOps 只是对敏捷的补充 ,完善了敏捷在 Dev 和 Ops 之间的问题。两者之间,不存在包含或者替换关系。

三、DevOps 流程

DevOps 的流程就像它的图标一样,包含:计划,编码,构建,测试,发布,部署,运维,监控, 反馈

DevOps 是一种怎样的体验?

而 DevOps 之所以能快速部署的原因在于,DevOps 拥有一套 自动化的持续集成、部署系统 。 在 DevOps 中有许多“持续”,包括:持续开发、持续测试、持续集成、持续部署、持续监控、持续反馈。

持续开发

与瀑布模型不同,DevOps 软件交付成果被分解为 短开发周期的多个任务节点 。这个阶段包括编码和构建阶段,并使用 Git 和 SVN 等工具来维护不同版本的代码,以及 Ant、Maven、Gradle 等工具来构建/打包代码到可执行文件中,这些文件可以转发给 自动化测试系统进行测试

持续测试

开发提交代码,构建完成后就被推到测试系统。对于测试人员,使用自动化测试工具,如 Selenium、TestNG、JUnit 等持续测试。这些工具允许质量管理系统完全并行地测试多个代码库,以确保功能中没有缺陷。一旦代码测试通过,它就会不断地与现有代码集成。

持续集成

开发人员不断的开发,更新后的代码需要不断地集成,并顺利地与系统集成,以反映对最终用户的需求更改。更改后的代码,还应该确保运行时环境中没有错误。 更为详细的持续集成可以观看我的专栏 《被轻视的持续集成》

持续部署

它将代码部署到生产环境。 在这里,我们确保在所有服务器上正确部署代码。 如果添加了任何功能或引入了新功能,那么应该准备好迎接更多的网站流量。 因此,系统运维人员还有责任扩展服务器以容纳更多用户。新代码是连续部署的,因此 配置管理工具 可以快速,频繁地执行任务。 Puppet,Chef,SaltStack 和 Ansible 是这个阶段使用的一些流行工具。

Docker 这类容器工具在这一阶段,有助于保证 开发,测试,生产环境一致性

持续监控

通过监控软件的性能来提高软件的质量。这种做法涉及运营团队的参与,他们将监视用户活动中的 错误/系统的任何不正当行为 。这也可以通过使用专用 监控工具 来实现,该工具将持续监控应用程序性能并突出问题。这些工具包括 Splunk,ELK Stack,Nagios,NewRelic 和 Sensu 。这些工具可帮助密切监视应用程序和服务器,以主动检查系统的运行状况。发现的任何重大问题都可以向开发团队报告,以便可以在持续开发阶段进行修复。

持续反馈

持续反馈是 DevOps 中非常重要的环节,从 Dev、Ops、测试系统、监控系统等不断反馈回问题,并修复。 尽早发现问题是解决问题的关键

四、使用 DevOps 的感受

经过一段时间 DevOps 的实施,个人有些感受,整理如下:

  • 快:交付产品变得很快。
  • 稳:每次迭代的东西虽然不多,但却走得越来越稳,实际的速度更快了。
  • 持续集成是整个 DevOps 的中心 ,只有先建立持续集成,整个 DevOps 自动化流程才能跑起来。
  • 问题暴露快:团队的人被 DevOps 都激活了,持续反馈问题。
  • 面对面沟通是最有效的沟通方式。
  • 测试非常重要:测试是质量的保证,如果测试没做好,DevOps 的质量便无法保证。
  • 需要学好多的工具,但是值得。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一胜九败

一胜九败

柳井正 / 徐静波 / 中信出版社 / 2011-1-19 / 28.00元

优衣库成长的过程,就是一个历经了无数次失败的过程。他们经历过无法从银行融资的焦灼,经历过“衣服因低价热销,但人们买回去之后立即把商标剪掉”的难堪,经历过为上市冲刺而拼命扩张店铺的疯狂,也经历过被消费者冷落、疏离的苦痛……但正是从这些失败中学到的经验与教训,让柳井正走向了成功。 《一胜九败:优衣库风靡全球的秘密》就像是柳井正的错误集,在这里,他毫不隐晦地将公司业绩低迷的原因、进军海外失败的因素......一起来看看 《一胜九败》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具