什么是DevOps?_老杨的码农生活的博客-程序员秘密_devops什么意思

技术标签: 软件工程  

    最近的DevOps的概念很火,大家都在讨论DevOps,有人说DevOps是自动化运维,有人说DevOps是流程和管理,还有人说DevOps是一种文化,以前的运维工程师也纷纷变成了DevOps工程师。

    那DevOps究竟是什么?

传统的运维模式以及面临的挑战

    在传统的瀑布模型开发中,软件生命周期中的运行维护工作是由运维工程师来完成的。

    开发人员完成编码,测试人员测试验收通过后,到发布时,就会将程序交给运维人员部署发布到生产环境。   

https://static001.geekbang.org/resource/image/2b/e0/2b3c01636b37728e5684d9bbc5e383e0.png

除了程序的部署更新,传统运维工程师最重要的职责就是保障线上服务的稳定运行,对服务器24小时监控,有意外情况发生时需要及时处理和解决。

除此之外,还有日常的更新维护比如安装升级操作系统、安装更新应用软件、更新数据库配置文件等。

早些年这种运维模式运行的很好,但是这些年互联网发展对传统的运维模式产生了很大挑战:

  • 服务器规模快速增长和虚拟化技术的高速发展

以前企业服务器数量不多,运维工作手工为主,自动化为辅,但这些年技术的快速发展,大型互联网公司的服务器数量越来越庞大,中小公司业务也开始往云服务上迁移,基于Docket的虚拟化技术来搭建在线服务的基础架构,这样需要更多的自动化和基于容器技术或者相关工具的二次开发,对于运维来讲需要更多的开发能力。

  • 高频的部署发布

传统的软件部署频率不高,一般几天甚至几个月部署一次,而敏捷开发和持续交付的概念兴起后,更新的频率越来越高,每周甚至每天都会有若干次的更新部署。高频部署带来的挑战,会导致开发和运维的冲突,开发想快速更新部署版本而运维想保持系统稳定。

所以为了解决开发和运维之间的沟通协作问题,提升运维开发和自动化能力,DevOps出现了。

什么是DevOps?

DevOps可以理解为一种开发(Development)和运维(Operations)一起紧密协作的工作方式,从而可以更快更可靠的构建、测试和发布软件。

那当我们的团队采用DevOps的方式工作的话,会带来哪些好处呢?

  1. 整个软件的构建、测试和发布过程高度自动化

        DevOps一个很重要的基础就是自动化,通过对自动化的应用,是最简单有效的打破开发和运维之间壁垒的方式。应用自动化后,对于运维来说,自动化的交付流程减少了繁重的手工操作,自动化测试可以有效对产品质量提供更好的保障,对于开发人员来说,就方便高频率地进行部署,如果你的团队还没有开始实施自动化,可以先从持续交付开始。

2.信息更加透明和易于测量

传统的开发和运维合作模式,两者之间的信息不是那么透明,对于开发来说,不了解程序在服务器上运行的情况,对于运维来说程序就是一个黑盒子,无法对程序内部进行监控,出现问题只能重启或者版本回滚。当采用DevOps时,信息变得透明,通过日志和工具,可以更直观的看到开发到部署需要的时间,哪个环节薄弱需要改进,当前服务运行情况如何,每分钟访问数多少,API出错率多少,当前用户数多少,有多少新增用户?这些数据,可以很好的帮助运维预警,帮助开发更好的优化程序,还可以帮助业务团队更好地了解服务的运营情况。

3.培养跨职能协作的文化

DevOps的核心文化就是不同职能工种之间的紧密协作的文化,不仅仅限于开发和测试之间,如果你的团队真正地实践了DevOps的工作方式,就会积极拥抱这种跨职能协作的文化,在日常工作中包容错误、对事不对人,能对项目的开发流程持续改进,鼓励创新。

DevOps的基本原则:自动化、信息透明可测量、构建协作文化,这意味着:

  1. 你需要去构建自动化部署的系统,从构建、测试到部署实现高度的自动化
  2. 建立数据监控的系统,让信息透明可测量
  3. 最后要形成跨职能协作的文化

 

DevOps工程师到底要做什么事情?

    首先,DevOps工程师要帮助团队建立基于持续集成和持续交付工作流程。

    这套工作流程是业界公认的好的实践,但是很多中小团队普及率还不高,主要的难点之一就是搭建比较复杂,还可能涉及二次开发;另一个就是不知道怎么建立这样的流程。

    其次,要建立一套基于日志的监控报警的系统,以及故障响应的流程。

    对于线上系统,应急响应非常重要,要在故障发生后第一时间作出响应,及时恢复生产,避免更大损失,这同样离不开工具和流程的支持。我们需要能建立一套基于日志的监控报警系统,设置报警阈值,将应用程序还有运行环境的各项数据监控起来,发现异常及时触发报警,进入应急响应的流程。对于应急响应,我们首先要能第一时间通知最合适的人去处理,不如值班的开发人员,至于怎么恢复要有计划,最后还需要对故障进行复盘总结,避免再次发生。

    然后,要建构基于云计算和虚拟化技术的基础设施。

    并非每一个软件项目都是基于云计算或虚拟化技术来搭建的,但云计算和虚拟化技术方面的计数其实是横跨开发和运维的,这就需要有人同时了解软件开发和云计算或虚拟化技术,或者一起协作,才能搭建出真正适合云计算或虚拟化技术的架构。

    最后,要形成DevOps文化。

    DevOps最核心的本质就是工作方式和协作的文化,多沟通、互相学习、出现问题不推诿、不指责,而是分析原因,共同承担责任,找出改进的方案。

总结

    DevOps是一种文化,是建立一种相互合作的工作方式,总结起来如下几点可以帮助团队实践DevOps的工作方式:

  1. 建立1.基于持续集成和持续交付的工作流程
  2. 建立基于日志的监控报警的系统,以及故障响应的流程
  3. 构建基于云计算和虚拟化技术的基础设施
  4. 形成DevOps的文化
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangrendong/article/details/90486835

智能推荐

# Cobalt Strike:使用已知的私钥解密流量-Part 1_爱你'非我莫属。的博客-程序员秘密

博客系列:Cobalt Strike:流量解密Cobalt Strike:使用已知的私钥解密流量-Part 1(当前部分)Cobalt Strike: 使用已知的私钥解密流量 - Part 2Cobalt Strike: 使用进程内存解密流量 - Part 3Cobalt Steike: 解密被掩盖的流量 - Part 4Cobalt Strike: 解密DNS流量 - Part 5我们发现6个流氓软件Cobalt Strike的私钥,可以用来将C2网络流量进行解密Co

数据结构排序-------插入排序(C,Java实现)_楠哥学IT的博客-程序员秘密

 1、插入排序简要概述  它的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 2、插入排序图解  3、代码实现public class test { public static void main(String[] args) { int array[] = new

NFS共享存储服务安装_huryer的博客-程序员秘密_安装nfs网络共享服务的步骤

NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源NAS存储: NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在Centos 7系统中,需要安装nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。nfs端口:2049R

android开发环境的搭建!浅谈Android消息机制原理,重难点整理_普通网友的博客-程序员秘密

开头技术的发展产生了程序员这个职位,从这些年各大互联网公司曝光的一些员工收入水平来看,程序员的工资还是相对比较高的,可是我们在互联网上还听到了另外一种声音,很多程序员想转行,特别是大龄程序员,这可能会令很多人纳闷。为什么工资这么高还想转行呢?其实他们也很无奈,从下面几点可以看得出来。Android高级知识点一、Android性能优化1.描述一下android的系统架构?2.Android线程间通信有哪几种方式3. 如何避免OOM异常4.Android程序运行时权限与文件系统权限的区别?5.H

HCIA学习笔记#4_沙漏hx的博客-程序员秘密

第四天补充遗漏的点:暂无路由

IOS 获取系统时间戳_dianli0581的博客-程序员秘密

IOS 获取系统时间戳常用方法通用方法有如下三种: NSLog(@"1 ========== %.0lf",(double)time(NULL)*1000); NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0]; NSTimeInterval a=[dat timeInterv...

随便推点

Coursera - Algorithm (Princeton) - 课程笔记 - Week 4_支锦铭的博客-程序员秘密

Week 4优先队列 Priority Queues接口和基本实现 APIs and Elementary Implementations集合(Collections):插入和删除元素的基本数据结构,不同的集和区别在于如何选择下一个删除的元素优先队列:对于全序的数据类型,其返回最大或者最小的元素API如下:(注意,要求泛型类型必须是Comparable的)public class ...

多测师肖sir_高级金牌讲师_第2个月第17讲app搭建之安装(001)_多测师肖sir的博客-程序员秘密_在线安装python操作客户端

我们主要讲解app自动化环境的搭建以及定位和app测试================================================================app原生+H5===================================================================(一)app测试手工app测试和自动化app测试手工app测试:就是点的地方不同,一个在bs结构上点,在cs结构上点(或模拟器或H5)自动化app测试:用代码来代替

【特征检测】Harris角点检测中的数学推导_lbaihao的博客-程序员秘密

简介本文主要是对Harris角点检测的数学公式进行推导,更加深入的掌握原理性的理论知识。预备知识椭圆的矩阵方程表示在高中课本中,我们学习到标准椭圆及其方程(如下图所示):其实,矩阵在运算中使用非常广泛,现将上述标准方程写成矩阵形式(方便接下来的处理):椭圆半轴与系数矩阵的关系         一个nxn的矩阵,

ROM测试工程师岗位考核标准_三千红尘客的博客-程序员秘密_测试工程师试用期考核标准

1.出勤率及工工作时长 (测试部评审委员会评分)不迟到不早退(出勤一天满9小时)自主适当加班完成任务加班时间用于提升自我,输出有效文档2.任务完成情况(1)任务量(组长)每月正常完成分配的任务每月平均每日相当于1.2人工作分量每月平均每日相当于1.5人工作分量(2)用例执行质量(测试部评审委员会评分)用例规范执行,非PASS项需要清晰备注用例不规范处有建议用例执行完成无空白,专项有报告,有标注主动...

MapReduce中使用字符串拼接导致的问题_快乐程序员的博客-程序员秘密_reduce字符串拼接

今天在帮业务方优化mapreduce作业时遇到一个用字符串拼接的问题。

SQL删除某个时间段的数据_weixin_30802273的博客-程序员秘密

DELETE from dbcp_log_read where time BETWEEN '2017-02-20 00:00:00' AND '2017-03-06 00:00:00'转载于:https://www.cnblogs.com/ouyanxia/p/6510781.html

推荐文章

热门文章

相关标签