DevOps 是一种怎样的体验?

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

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

一、软件开发演变史

软件行业中, 每一个概念的提出都是为了解决某个特定的问题 。要了解 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 的质量便无法保证。
  • 需要学好多的工具,但是值得。

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

查看所有标签

猜你喜欢:

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

Cracking the Coding Interview

Cracking the Coding Interview

Gayle Laakmann McDowell / CareerCup / 2015-7-1 / USD 39.95

Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hund......一起来看看 《Cracking the Coding Interview》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具