什么是devops开发运维

DevOps的定义,由Donovan Brown提供 是人员流程产品的结合,以实现向客户不断交付价值 ”它强调了持续交付价值的重要性。 让我们讨论一下实验是现代开发实践的核心。

回顾过去

在进行假设驱动的开发之前,让我们快速回顾一下如何使用瀑布式,敏捷性,部署环和功能标记来交付价值。

瀑布时代 ,我们得到了可预测的,流程驱动的交付。 但是,我们只是在开发生命周期的末期才交付价值,通常会因为解决方案偏离原始要求而失败,或者我们的杀手级功能在最终交付时就已经过时了。

在这里,我们有一个X版本和八个功能,所有这些功能都已部署并公开给耐心等待的用户。 我们一直在不断创造价值,但是随着发布时间的延长(通常为六个月到两年), 这些功能的价值随着世界的发展而下降 。 当有计划时间并且对更紧急的需求做出较低的期望时,它就足够好了。

敏捷的引入使我们能够创建并响应变化,因此我们可以不断交付有效的软件,感知,学习和响应。

现在,我们有三个版本:X.1,X.2和X.3。 在X.1版本之后,我们基于反馈改进了功能3,并在X.3版本中对其进行了重新部署。 这是一个简单的示例,该示例提供了更多功能,专注于工作软件并响应用户反馈。 我们正在持续交付的道路上,专注于我们的主要利益相关者:我们的用户。

使用部署环和/或功能标志 ,我们可以将发布部署和功能暴露分离到各个用户,以控制功能的暴露(爆炸半径)。 我们可以进行实验; 逐步公开,测试,启用和隐藏功能; 微调版本,并持续以学习和反馈为中心。

当我们将功能标记添加到以前的工作流程时,我们可以将功能切换为启用(启用和公开)或禁用(隐藏)。

此处,功能2、4和8的功能标志为OFF,这会使用户接触较少的功能。 所有功能均已部署,但尚未公开。 部署到生产环境后,我们可以微调每个版本的功能(价值)。

当我们通过观察逐步部署和评估一个或多个功能时, 基于环的部署限制了对用户的冲击(爆炸)。 环使我们能够逐步部署功能,并具有多个并行运行的版本(v1,v1.1和v1.2)。

在金丝雀和早期采用者环中公开要素,使我们能够评估要素,而不必担心全盘部署或全无部署。

功能标志将发布部署和功能暴露脱钩。 您“翻转标志”以显示新功能,通过重置标志执行紧急回滚,使用规则隐藏功能以及允许用户切换预览功能。

当结合部署环和功能标志时,可以通过环逐步部署发行版,并使用功能标志来微调已部署的发行版。

请参阅部署新版本:功能标记或功能环 , 功能标记 的成本是多少 ,以及在人员,流程和产品之间打破壁垒,以进行有关功能标记,部署环和相关主题的讨论。

将假设驱动的开发添加到组合中

假设驱动的开发基于一系列实验,以验证或反证在未知问题未知的复杂问题域中的假设。 我们想找到可行的想法或失败很快。 我们没有开发整体解决方案并进行大规模发布,而是通过假设进行了迭代,评估功能部件的性能,最重要的是,客户如何以及是否使用它们。

模板: 我们相信 {客户/业务部门} 想要 {产品/功能/服务} 是因为 {价值主张}。

示例: 我们认为用户希望能够选择不同的主题, 因为这将提高用户满意度。 我们希望50%或更多的用户选择一个非默认主题,并增加5%的用户参与度。

每个实验都必须基于假设,得出可衡量的结论,并有助于功能和整体产品学习。 对于每个实验,请考虑以下步骤:

  • 观察您的用户
  • 定义假设和实验以评估假设
  • 定义明确的成功标准(例如,用户参与度提高5%)
  • 运行实验
  • 评估结果并接受或拒绝假设
  • 重复

让我们再看一下具有八个假设功能的示例发行版。

部署每个功能时,我们可以观察用户的行为和反馈,并证明或反驳促成部署的假设。 如您所见,功能2和功能6的实验失败了,这使我们能够快速失败并从解决方案中删除它们。 我们不想携带无法带来价值或无法使用户满意的废物! 功能3的实验尚无定论,因此我们在X.2版中调整功能,重复实验并执行A / B测试。 根据观察,我们将变体功能3.2确定为获胜者,并在X.3版中对其进行重新部署。 我们仅公开通过实验并满足用户需求的功能。

假设驱动的发展点亮了渐进式曝光

当我们将假设驱动的开发与渐进式风险暴露策略相结合时,我们可以垂直分割我们的解决方案,逐步实现我们的长期愿景。 在每个切片中,我们逐步展示实验,启用使我们的用户感到高兴的功能并隐藏那些未完成的功能。

但是还有更多。 当我们接受假设驱动的开发时,我们可以了解技术如何协同工作或不协同工作,以及我们的客户需要和想要的东西。 我们还补充了测试驱动开发(TDD)原则。 TDD鼓励我们首先编写测试(假设),然后确认我们的功能正确(实验),然后通过测试(评估)成功或失败。 正如 《 敏捷宣言》的 原则1、3和7所述, 这一切都是关于质量和使我们的用户感到满意的

  • 我们最优先考虑的是通过及早和持续交付价值来满足客户。
  • 经常交付软件(从几周到几个月不等),并且倾向于较短的时间范围。
  • 工作软件是进度的主要衡量标准。

更重要的是,我们引入了一种新的思维方式,打破了开发,业务和运营之间的壁垒,可以通过一系列迭代实验,采用基于科学分析,用户行为,和生产中的反馈。 通过在生产过程中的观察和学习,我们可以在细粒度中发展我们的解决方案,这是航空航天或土木工程等其他工程学科只能梦can以求的奢侈品。

好消息是,假设驱动的发展支持经验过程理论及其三个Struts: 透明度检验适应

但是还有更多。 根据精益原则,我们必须在测量和检查反馈后坚持或坚持不懈。 通过将特征切换与假设驱动的开发结合使用,我们获得了两全其美的优势,并且能够使用A | B测试对反馈(如喜欢/不喜欢和价值/浪费)做出决策。

记得:

假设驱动的发展:

  • 关于确认或否定假设的一系列实验。 识别价值!
  • 得出可衡量的结论并能够继续学习。
  • 允许关键利益相关者(即用户)不断反馈,以了解未知/未知!
  • 使我们能够了解不断演变的价值演变格局。

渐进式曝光:

  • 不能隐藏未准备就绪的代码。 始终保证质量!
  • 关于通过生产中的环部署功能发布。 限制爆炸半径!
  • 关于启用或禁用生产中的功能。 微调释放值!
  • 依靠断路器来保护基础架构免受逐步暴露的影响。 观察,感知,行动!

您从渐进式暴露策略和假设驱动的发展中学到了什么? 我们期待您的坦诚反馈。

翻译自: https://opensource.com/article/19/6/why-hypothesis-driven-development-devops

什么是devops开发运维

什么是devops开发运维_为什么假设驱动的开发是DevOps的关键相关推荐

  1. devops开发运维训练营_嗨,网络开发人员训练营的毕业生:这是您第一份工作需要了解的内容。...

    devops开发运维训练营 by Rachel Bird 雷切尔·伯德(Rachel Bird) 嗨,网络开发人员训练营的毕业生:这是您第一份工作需要了解的内容. (Hey web dev bootc ...

  2. devops开发运维训练营_软件开发训练营生存指南

    devops开发运维训练营 教学网站开发 在多个新手训练营培训了数百名开发人员后,我相信我有责任分享我的学习成果,包括什么才是优秀学生,以及在密集的软件开发新手训练营中可以采取哪些步骤生存和发展. 在 ...

  3. DevOps开发运维:Buddy中文版正式发布

    Buddy中文版正式发布! Buddy: DevOps(开发运维一体)自动化平台.最易用的CI/CD没有之一.大大降低DevOps的入门门槛. 中文版:www.buddy.red 英文版:www.bu ...

  4. DevOps 开发运维一体化~EXIN

    当我们谈到DevOps时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是'DevOps'呢? 随着软件发布迭代的频率越来越高,传统的「瀑布型」(开发一 测 ...

  5. devops开发运维一体化_进阶 | 中国电信系统集成公司:100% 应用 DevOps 理念,做好企业级行业应用...

    2020年9月25日,2020 GOPS 全球运维大会在深圳圆满举行.本次大会盛况空前,精彩纷呈,中行.招行.腾讯.阿里.京东.广东移动等名企专家献上一场精彩的分享. GOPS 全球运维大会由云计算开 ...

  6. 搭建Cockpit服务器,Linux集群管理工具,DevOps开发运维一体化集群系统/持续集成

    Cockpit平台演示 # 打开浏览器,访问 http://ip-address:9090 ip-address为搭建cockpit服务器的IPAddress #进入管理界面 可以参考 CPU MEM ...

  7. Devops 开发运维基础篇之Jenkins部署与使用

    文章目录 一.Jenkins 概述 1. Jenkins 介绍 2. Jenkins 环境部署 3. 安装 JDK 及配置环境变量 二.Gitlab 仓库概述 1. Gitlab 简介 2. Gitl ...

  8. Devops 开发运维基础篇之使用Maven构建项目

    文章目录 一.Jenkins项目构建类型 二.自由风格项目构建 1. 拉取代码 2. 编译打包 3. 部署 4. 演示改动代码后的持续集成 三.Maven项目构建 1. 安装 Maven Integr ...

  9. Devops 开发运维基础篇之使用Maven编译和打包项目

    文章目录 引言 一.Maven安装和配置 1. 安装Maven 2. 配置环境变量 3. 全局工具配置关联JDK和Maven 4. 添加 Jenkins 全局变量 5. 修改 Maven 的配置文件 ...

最新文章

  1. python基础语法手册format-Python-输出格式化format()方法的基本使用(2)
  2. php中的thumb函数,phpcms v9教程:thumb(缩略图) 函数说明
  3. alibaba cloud sdk使用工作笔记0001---通过alibaba cloud sdk动态操作自己的阿里云产品,设置,或者查询信息
  4. 成立十个月,融资五个亿,创新奇智完成超4亿人民币A轮和A+轮融资
  5. 【译】技能测试解决方案:Python中的数据科学(一)
  6. Qt调用CUDA动态库及配置
  7. C语言函数传入字母参数,c语言详细讲解函数参数作为数组传递的几种方式
  8. 3dmax、python3、Rational Rose、DTLite、commons-math3、VM12、DreamWeaver、SPSS、sqlserver2008、mySQL等软件安装包最全集合
  9. 使用JavaScript打开Chrome的设置页面
  10. Java项目:文具学习用品商城系统(java+SSM+JSP+jQuery+Mysql)
  11. nyoj 题目172 小柯的图表
  12. 2019成长复盘2020成长规划
  13. 手札 江湖的完美窗口化研究
  14. csm和uefi_[整理]BIOS设置UEFI和安全引导
  15. ultraos win10启动盘_使用ultraiso软件制Win10专业版U盘系统盘制作安装教程
  16. 02-Vue基础之条件渲染和列表渲染
  17. 用Paddle自动生成二次元人物头像
  18. 豆瓣的架构—专访豆瓣网站的技术总监洪强宁
  19. jsp物流信息发布管理平台
  20. 2014年国内餐饮O2O大事件

热门文章

  1. Docker容器(container)详解
  2. Springboot整合zookeeper
  3. redis单机安装并配置服务脚本启动
  4. 极限编程创始人Ron Jeffries建议开发者放弃敏捷
  5. solr集群搭建,zookeeper集群管理
  6. 实施 or 开发 ?
  7. CentOS6.5下安装iRedMail中需要解决的问题
  8. jquery ajax post 传递数组 ,多checkbox 取值
  9. 微信公众平台开发(47)公交查询
  10. Google Chrome 1.0.154.46稳定版本发布 修复高危安全漏洞