1 - DevOps的含义

DevOps涉及领域广泛,其含义因人而异,在不同的理解和需求场景下,有着不同的实践形式。
DevOps可以理解为是一个职位、一套工具集合、一组过程与方法、一种组织形式与文化。
但从商业价值角度来说,DevOps是指通过Dev(开发)和Ops(运维)的紧密合作来实现和提高商业价值的工作方式和文化。
不仅包括了新技术和新工具的使用,还包括相关的团队组织建设和文化,实现持续改善的运维结构,以及开发流程设计等。
通过开发与运维之间的协作,能够消除对个人的依赖、减轻团队之间的损耗,提高质量和开发速度,并通过互相理解来增强变更的灵活性,快速满足商业需求。

各种支撑DevOps的思想、改善对策和工具共同组成了DevOps,难以在广泛的场景中明确地指出DevOps实践的准确定义。
但通常都会包括实现“基础设施即代码”和组建适合DevOps的体制这两部分。

“基础设施即代码”是在DevOps实践中支持开发和运维紧密合作的一个非常有效的方法。
“基础设施即代码”,可以简单理解为:

  • 将服务器、网络设备等基础设施的设置和架构代码化、信息化,把软件开发的开发模式应用到基础设施运维中。
  • 所有基础设施的构建、变更都根据其配置信息来进行,所有成员都可以访问配置信息,对配置信息的更改也都如实地反应在基础设置环境中。
  • 按照定义文件的要求来编写和更改配置信息,使用测试工具对其进行测试,并将配置信息和代码一样进行版本管理。

组建适合DevOps的体制,运维团队和开发团队共享信息,在变更时互相审查,深入了解对方的工作内容,进而理解并达成共识。
拥有共同的目的意识,双方通过自主行动来不断接近共同目标。

此外,DevOps是融合在业务中的持续性的改善和实践,而不是为了一次性完成所有的改善。

2 - DevOps的诞生与要素

2.1 两个关键因素

理解传统开发模式和敏捷开发模式的不同,以及各自的问题。

以敏捷开发为代表的持续开发方式的出现

瀑布模型明确划分了开发阶段和各阶段的产出物,无法有效应对新增需求。
敏捷开发以小规模团队为前提,每次只发布最低限度的功能集,然后听取反馈,进行持续改善。

持续开发带来的运维问题

开发和运维之间的产生“混乱”:运维产生技术负债、抵触变更和基础设施不足,开发忽略非功能性需求,运维和开发逐渐“割裂和对立”。

2.2 应对变化

开发部门确保需求的实现,运维部门确保系统稳定、快速地运行,但最重要的根本任务是确保商业的有效性,商业价值的实现
通过工具和文化来支持开发和运维紧密合作,消除专业性和复杂性,减少工作量,同时使信息可视化,以此来降低变更带来的风险。
团队中任何成员都可以基于相同的信息迅速开展工作,同时通过自动化和持续集成来大幅缩短应对变更所需要的时间,高效满足商业需求。

工具所具备的要素

  • 抽象化:通过“标准化”或“虚拟化”来抽象化所有资源,消除不同平台之间的差异,降低专业难度和复杂度
  • 自动化:通过自动化方式使用抽象化的资源,降低专业难度,减少开发、运维人员的工作压力
  • 统一管理:通过统一的版本管理系统和沟通工具使信息可视化,构建开发和运维之间的紧密联系,进行有效的信息传播和沟通
  • 即时沟通:通过互联网通讯工具和聊天机器人,加强点对点的联系和减少对敏感信息的反应时间
  • 持续集成与部署:统一开发部门和运维部门的开发及构建方法,一步式构建和部署,大幅提升系统改善的速度
  • 监控:对资源等信息进行集中管理和可视化,构建开发和运维的紧密合作关系

文化所具备的要素

文化的含义:尊重(Respect)、信任(Trust)、正确认识失败(Healthy attitude about failure)和避免指责(Avoiding Blame)。

  • 目的意识:相同的目标,共同创造服务、迅速满足商业需求,更容易实现紧密合作。
  • 同理心:互相考虑对方的感受,接受对方,建立紧密的关系
  • 自主思考:不互相依赖,能自主开展工作,以此来不断接近共同目标

3 - DevOps的工具应用

3.1 抽象化

  • 操作系统:使用LXC(Linux Containers)实现的容器技术Docker
  • 物理服务器:虚拟机,在虚拟机上混合型部署和运行容器
  • 存储:根据SDS(Software Defined Storage)思想用软件和API来对虚拟化存储进行控制
  • 网络:VLAN(Virtual Local Area Network)、SDN(Software Defined Network)

3.2 自动化

基于REST API可以根据指定的参数来进行自动化配置。
REST API可以用URL表示资源,通过HTTP协议来获取资源的状态或者变更资源的配置。

3.3 统一管理

在设计上支持和外部系统进行集成,可以将更新信息发送到外部沟通工具,也可以直接共享URL来访问指定的信息。

  • 问题跟踪系统(Issue Tracking System, ITS):也被称为Ticket管理工具,例如JIRA、Redmine等
  • Wiki:保存设计文档和会议记录,例如Confluence和Redmine的Wiki

3.4 即时沟通

例如通用的WeChat、Skype等,面向企业的Cisco Jabber、Chatwork等。
将聊天机器人与聊天工具、业务系统集成,可以代替部分的人工作业,提升反应速度。

3.5 持续集成与部署

除了开源的持续集成和部署工具Jenkins,还有云的持续集成工具服务,例如Circle CI和Travis CI。
在持续交付阶段,可采用蓝绿部署方法来确保部署的安全性。

3.6 监控

主流的监控工具主要是指Zabbix。

  • 实时把握资源的使用状态和业务的运行状态
  • 获取和分析商业活动所需的数据,进行持续改善
  • 指标监控,对关键指标进行定量分析和优化

3.7 日志分析

通过组合不同的中间件,可以将日志作为监控信息来进行分析处理。

  • 用于日志收集:Logstas
  • 从收集的日志中检索过滤信息:Elasticsearch
  • 将结果可视化:Kibana
    以上三个中间件统称为ELK栈,是被广泛使用的主流组合。

DevOps - DevOps精要 - 溯源的更多相关文章

  1. DevOps - DevOps精要 - 变革

    特别说明 本文是已读书籍的学习笔记和内容摘要,原文内容有少部分改动,并添加一些相关信息,但总体不影响原文表达. <DevOps入门与实践> :本书结合实例详细介绍了在开发现场引入DevOp ...

  2. DevOps - DevOps精要 - 歧途

    前言 如果在实施DevOps的过程中,周围没有一个人支持你,也没有得到领导和团队成员的理解: 如果在采用DevOps的工具和方法之后,难以获得明显的效率提升,甚至得到了不少的消极反馈: 那就需要反省一 ...

  3. DevOps - DevOps精要 - 落地

    1 - 关键问题 如何向不具备相关基础知识的人说明和解释DevOps? 如何在组织和团队中推广和实施DevOps? 2 - 在组织中实施DevOps 在全新的组织或服务开发中,没有既定规则和老旧的习惯 ...

  4. DevOps - DevOps工具链

    不要满足于使用世界上已存在的各种方法和技术,而应重点放在希望达到的效果上! 单单使用工具不难,困难的是在团队开发中熟练使用,并形成一套理想的工作流程,只有在团队中工具和思想才能发挥最大价值. 开源工具 ...

  5. SAP成都研究院DevOps那些事

    今天的文章来自我的同事平静静,SAP成都研究院一位程序媛.平静静2010年加入SAP,熟悉她的人一般都叫她平静.在她待过的每个小组,平静静都不是最引人瞩目的开发人员,然而她总是能一如既往,保质保量地完 ...

  6. DevOps团队交付了什么?

    一.简介 "你在团队里是做什么的?" "DevOps." "DevOps是什么呢?" "DevOps是一种文化.一种实践,目标是加 ...

  7. 什么是 DevOps?看这一篇就够了!

    本文作者:Daniel Hu 个人主页:https://www.danielhu.cn/ 目录 一.前因 二.记忆 三.他们说-- 3.1.Atlassian 回答"什么是 DevOps?& ...

  8. DevOps

    DevOps DevOps(英文Development和Operations的组合)是一组过程.方法与系统的统称,用于促进开发(应用程序/软件工程).技术运营和质量保障(QA)部门之间的沟通.协作与整 ...

  9. 翻译-DevOps究竟是什么?

    原文地址:http://www.drdobbs.com/architecture-and-design/what-exactly-is-devops/240009147 作者:Neil Garnich ...

随机推荐

  1. python - 使用psutils

    oshelper.py #encoding=utf-8 import psutil import datetime #查看cpu的信息 print u"CPU 个数 %s"%psu ...

  2. aix 10代oracle zabbix2.4.4 日志监控

    同一类型的监控项,zabbix 2.4的客户端也支持日志监控,可是在参数个数上有问题,如果把所有参数都放满,监控项会提示too mant parameters,无法 生效取数据, 对于不同的正则式.m ...

  3. myaliyun ECS 启动内外穿透工具shell脚本

    #!/bin/bash tbp=/usr/local/ngrok cmd=$1 if [[ -z $cmd ]];then echo "err!usage{sh $0 1|0 to star ...

  4. [SCOI2016]妖怪

    嘟嘟嘟 离NOI最后一周,把自己容易忘的知识点和板子复习一下. (刚答完loj的笔试模拟,感觉上不了90--) update:哦,我89-- 先把式子写出来,每一个妖怪的战斗力\(S(i) = A + ...

  5. LibreOJ #524. 「LibreOJ β Round #4」游戏

    二次联通门 : LibreOJ #524. 「LibreOJ β Round #4」游戏 /* LibreOJ #524. 「LibreOJ β Round #4」游戏 找找规律就会发现.. 当有X的 ...

  6. 利用Synplify Pro 加时钟约束的问题

    可以改名称为"design.ucf"加成新约束. 在使用Xilinx ISE进行综合时,可以与Synplify Pro软件配合,实现较高的综合性能.但是,有时会出现如下问题: “E ...

  7. js 中的方法注入(aop)

    js 中的方法注入 java中很多框架支持 apo 的注入, js中也可以类似的进行实现 主要是通过扩展js中方法的老祖 Function 对象来进行实现. Function.prototype.af ...

  8. win10系统中对本地端口进行简单分析

    突然有事情涉及到本地端口,对相关内容进行了了解,这部分知识应该偏向运维,有些不好理解,查起来也零零散散的,理解的可能也有误……只记录一部分东西 想要查看本地端口的情况,在cmd下使用 netstat ...

  9. jquery中$.get()如何让跨域请求携带cookie?

    在这个get请求前面加上这个就好了~~~~

  10. docker技术入门(1)

    1Docker技术介绍 DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实 ...