传统IT技术团队中通常都有多个独立的组织-开发团队、测试团队和运维团队。开发团队进行软件开发、测试团队进行软件测试,运维团队致力于部署,负载平衡和发布管理。 他们之间的职能有时重叠、有时依赖、有时候会冲突。

因为衔接与沟通问题,有时会导致开发-测试-发布的周期太长了,特别是对于互联网公司,时间就是生命。从而需要建立一支由开发,质量保证和运营组成的混合专业知识的团队的需求,并引入了DevOps来弥合团队之间的鸿沟,帮助他们快速而可靠地操作和开发应用程序。

一、什么是DevOps?

顾名思义,Devops是“开发”与“运维”的缩写。它定义了一组流程,这些流程通过在开发和运维团队之间进行协作带来组织文化上的转变。它包含四个关键组件:协作,实践,文化和工具。

二、为什么我们需要DevOps?

DevOps带来更高水平的协作和速度,使组织提高生产力,降低运营成本以有效地为客户提供服务并保持市场竞争力。它还有助于更快地发布产品,管理计划外的工作,更快地捕获和解决关键问题。

三、DevOps实践

独立devops团队

DevOps使用各种工具,例如docker、k8s、Jenkins,Terraform,Nagios,Grafana,Prometheus或Splunk等,组织应建立一个集中部门来创建和操作这些工具。这个集中管理部门负责开发团队中的敏捷实践设置,该团队将研究新的工具并坚持使用,并提供指导程序和培训以实施DevOps。该部门核心工作内容是追求测试、集成、部署的自动化,减少人员参与、降低沟通成本、弥合技术团队之间的鸿沟。

持续集成(CI)

CI是一种软件开发实践,可改善团队之间的协作并有助于构建高质量的软件。开发团队会定期检入存储库中的代码更改,CI会执行自动构建和测试以验证代码质量。持续集成所采用的实践可以在早期阶段快速检测出软件开发生命周期(SDLC)的挑战,从而有助于开发团队在开发阶段本身解决问题。

持续交付/部署(CD)

部署过程具有不同的阶段,例如开发→构建→验证→构建版本控制→部署→后部署等。持续部署过程的思想是,在构建通过QA阶段的所有阶段后,将已开发的代码自动部署到生产环境中。 -beta,Integration,UAT等。有一些可用的工具,例如Spinnaker,Jenkins,Harness,Ansible,Chef,Puppet等,使DevOps团队可以建立自动化管道,以最少的人工干预就可以在多个环境中进行部署。

持续交付是DevOps的一种实践,其中新的代码库由QA团队在自动和手动QA周期的不同阶段进行测试。如果代码库通过了QA周期并得到QA团队的批准,则它将部署到生产环境中。通过这种方式,DevOps将团队划分为较短的周期,从而使团队能够更快,更频繁地构建,测试和发布代码库。这使组织能够提供更多版本,减少手动部署,并将生产中的故障风险降至最低。

配置管理(CM)

配置和变更管理是DevOps周期的重要组成部分。配置管理是对基础结构和系统的所有实体(例如服务器,应用程序,存储,网络和所有托管服务)进行配置,监视,管理和维护的自动化。也有许多的集中配置管理工具可以使用,比如:nacos、apollo等。

配置管理带来了许多优势,例如简化了新环境的设置,降低了生产配置的风险,并节省了软件开发的大量时间,而无需花费时间和精力来使用基础结构即代码实践从头开始新服务。

变更管理

变更管理是一个请求,计划,实施和评估满足新要求所需的变更的过程。在配置管理过程中,如果现有系统和基础架构中需要进行任何更改,那么此时就要考虑更改管理。运营团队需要提供他们的意见,更改的原因,以及可能在更大范围内产生的后果,包括可能受到新更改影响的其他系统。

测试自动化

每个代码库的自动测试有助于运行更多测试,提高测试频率,并节省手动QA上花费的时间。此过程可及早发现错误,修复错误,并提高整体软件质量。有几种工具可以与DevOps工具集成,例如Selenium,RobotFramework,Appium,XCUITest,JUnit等,以实现自动化的测试。

持续监控(CM)

持续监控建议使用几种工具,仪表板和警报来监视所有系统和基础架构,包括对影响软件的不同指标的实时洞察,例如系统性能,测试次数,成功和失败率,部署状态,错误日志以及所有信息以图形,表格和详细报告格式显示。为了完成这样的监视,DevOps团队可以设置一些工具,例如Prometheus,Grafana,Nagios,Appdynamics,NewRelic,Splunk,Logstash,以及市场上可用的更多工具。

欢迎关注我的博客,里面有很多精品合集

  • 本文转载注明出处(必须带连接,不能只转文字):字母哥博客

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

什么是DevOps?该如何正确的在企业内进行实践的更多相关文章

  1. 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记

    首先,这本书是Linux.CN赠送的,多谢啦~ http://linux.cn/thread-12733-1-1.html http://linux.cn/thread-12754-1-1.html ...

  2. [转载]DevOps在传统企业的落地实践及案例分享

    内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...

  3. [转]DevOps实战:百度持续交付体系与最佳实践大解密!

    本文转自:http://dbaplus.cn/news-21-471-1.html “互联网+”时代,软件产品要想满足快速增长的用户需求,高效.快速的迭代转型必不可少,面对时刻发生改变的互联网及业务模 ...

  4. CODING DevOps 系列第四课:DevOps 中的质量内建实践

    什么是质量内建 随着时间的推移,我们项目的开发效率会逐渐降低,直到几年之后整个项目可能就无法维护,只能推倒重来.具体的表现首先就是随着时间推移,我们会发现整个需求列表里面能做的需求越来越少,因为每当我 ...

  5. DevOps研发模式下「产品质量度量」方案实践

    在当今互联网环境下,需求变更越来越快,交付周期却越来越短, 怎么判断一个系统是否测试充分? 产品质量满足什么样的条件才能投产? 如何判断测试工作.研发团队工作的效率是高还是低? 这些问题不能靠感觉.拍 ...

  6. 年度十佳 DevOps 博客文章(后篇)

    如果说 15 年你还没有将 DevOps 真正应用起来,16 年再不实践也未免太落伍了.在上篇文章中我们了解到 15 年十佳 DevOps 博客文章的第 6-10 名,有没有哪一篇抓住了您的眼球,让您 ...

  7. 年度十佳 DevOps 博客文章(前篇)

    如果说 15 年你还没有将 DevOps 真正应用起来,16 年再不实践也未免太落伍了.国内 ITOM 领军企业 OneAPM 工程师为您翻译整理了,2015 年十佳 DevOps 文章,究竟是不是深 ...

  8. 全球顶级专家为你解读:什么是真正的 DevOps?

    [编者按]本文是 Skytap 内容主编 Noel Wurst 对 DevOps Enterprise Summit (DOES)的不完全综述,内容包括了 Noel 和一些与会嘉宾的思考,旨在勾画 D ...

  9. [转载]你所不了解的DevOps

    DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...

随机推荐

  1. Java实现 蓝桥杯 历届试题 城市建设

    问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有n个比较重要的地点,市长希望这些地点重点被考虑.现在 ...

  2. Java设计模式之亨元模式

    之前在项目中接触过亨元模式这一种设计模式,当时因为项目赶进度,因此只不过是大概的了解了一下,刚好今天有时间,就写一篇博客详细的学习一下亨元模式. 一.概念 运用共享技术有效的支持大量细粒度的对象.(来 ...

  3. Openshift 4.4 静态 IP 离线安装系列:准备离线资源

    本系列文章描述了离线环境下以 UPI (User Provisioned Infrastructure) 模式安装 Openshift Container Platform (OCP) 4.4.5 的 ...

  4. mui消息弹出确认框

    var btnArray = ['以后再说', '前往添加']; mui.confirm('你需要即时添加员工才可正常使用', '添加员工', btnArray, function(e) { if ( ...

  5. JDK Base64编解码1.7和1.8的坑

    场景 对接一个第三方api接口,其中签名部分用的是JDK8的编码.我们线上采用JDK7,导致项目无法编译 替换编解码部分为1.7的代码,然后签名又不对 所以坑就在这里,结论,1.7的编解码有换行符导致 ...

  6. Firefox中input元素,不能重新获取焦点函数focus()

    js校验输入框的函数: function is_number(feild) { var strRegExp = /^\d+(\.\d{1,2})?$/; if (!strRegExp.test(fei ...

  7. 结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程

    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程 目录 结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程 一. 实验准备 二. 实验过程 I 分析中断上下文的切换 ...

  8. 超详细实战教程丨多场景解析如何迁移Rancher Server

    本文转自Rancher Labs 作者介绍 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有6年的云计算领域经验,经历了OpenStack到Kubernetes ...

  9. (十)HttpClient以multipart/form-data上传文件

    原文链接:https://blog.csdn.net/wsdtq123/article/details/78888734 POST上传文件 最早的HTTP POST是不支持文件上传的,给编程开发带来很 ...

  10. gulp压缩html,css,js文件流程、监听任务、使用gulp创建服务器、同时运行多个任务、反向代理

    一.初始化 首先先做一个项目初始化,用来记录你项目中用到的工具 再你项目文件下打开一个控制台,输入命令 yarn init -y 进行初始化 输入命令yarn add gulp -g  --- 全局安 ...