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

那DevOps究竟是什么?

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

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

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

除了程序的部署更新,传统运维工程师最重要的职责就是保障线上服务的稳定运行,对服务器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的文化

什么是DevOps?相关推荐

  1. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  2. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. [DevOps] 认识一下

    大家都在说DevOps(Develop Operation),大概知道就是开发和运维沟通交流,一条线,然后使产品能够顺利的.短时间内上线.维稳什么的. 今天特意看了下 DockOne里面的一篇文章,再 ...

  4. 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门

    新书速递 查尔斯·狄更斯的<双城记>中有句耳熟能详的名言:"这是一个最好的时代,也是一个最坏的时代."作为技术从业者,在这个数字化浪潮和技术变革接连发生的时代,我对这句 ...

  5. git review devops过程

    自己搭建的devops环境是gitlab/gerrit/jenkins 1. 首先自己checkout一个自己的代码分支,一般不要在master上做直接修改 2. 修改后git add file,   ...

  6. #QCon# Devops

    今天参加了QCon2011 杭州.听了百度项目管理部的乔梁关于"Devops"的分享.比如如下: continuous integration -- Dev , QA agile ...

  7. 最佳DevOps工具获奖者:CloudBees Jenkins平台

    最新一期<IT新架构>宣布了第三届影响力奖的最终结果.这些获奖的产品和技术由我们读者.行业专家和编辑人员参与投票评选,并且预计将对2016年的IT运营产生显著影响.首先向所有的获胜者表示祝 ...

  8. 我眼中的DevOps(转)

    过去一年以来,一批来自欧美的.不墨守陈规的系统管理员和开发人员一直在谈论一个新概念:DevOps.DevOps 就是开发(Development)和运维(Operations)这两个领域的合并.(如果 ...

  9. DevOps:怎么实现源代码注释和系统文档的自动化更新?

    [编者按]计算机软件传统定义为:软件是计算机系统中与硬件相依存的另一部分,软件包括程序.数据及其相关文档的完整集合.然而在时下的开发中,文档的合规性往往被忽视的干干净净.本文由 Todd Waits ...

  10. [译]一个系统管理员眼中的DevOps

    前言 原文发表在Patrick Debois大神的官网上,传送门>> 通篇围绕运维工作进行阐述,始终是在强调运维人员和开发人员需要通力协作,这大概也是DevOps理念的核心价值所在吧!大概 ...

最新文章

  1. 解决MYSQL大表问题-实战篇(二)
  2. 已解决:modprobe: FATAL: Module nf_conntrack_ipv4 not found.
  3. 如何上传webshell后改回原来的webshell的格式
  4. java中asl_带你认识绕不开的ASLR
  5. mysql语法之update
  6. 卖货文案二:建立消费者信任
  7. 微信朋友圈抓取 附近人自动加 附近人朋友圈抓取 最近一直在研究(有兴趣的看网址)...
  8. 字符串折叠、涂色问题
  9. 班级网页制作 HTML个人网页设计 我的班级网站设计与实现 大学生简单班级静态HTML网页设计作品 DIV布局班级网页模板代码 DW学生校园网站制作成品下载
  10. worldpress 的 GPG 加密插件
  11. java 计算年龄_Java根据日期计算年龄——精确到天
  12. Android8.0 蓝牙系统
  13. phonegap 微信登录总结
  14. Java之手写实现ORM框架
  15. LabVIEW基础-程序发布至web
  16. ibatis之——sqlMapConfig.xml配置文件详解
  17. 在JS中 onclick=return false; return false是什么意思
  18. 哆啦A梦 or Bingo
  19. vue + echarts 多条折线图
  20. Python 将数据写入pkl文件,读取pkl文件

热门文章

  1. centos7 安装keepalived
  2. e盘计算机管理无法格式化,D,E,F盘无法格式化.急急急!
  3. 如何设计一个高性能积分系统
  4. OSGEARTH3 绘制点线面
  5. java标识符命名规范 java关键字 标识符
  6. 收藏 - android
  7. js通过mousewheel事件手写滚轮条
  8. 百度网盘平均提速3.2倍?官方新增免费提速功能,你知道吗?
  9. SQL(结构化查询语言)简介
  10. java版企业工程项目管理系统源代码-功能清单 图文解析