看了就懂DEVOPS - 全面总结DEVOPS基础概念
Posted 亿人至知
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看了就懂DEVOPS - 全面总结DEVOPS基础概念相关的知识,希望对你有一定的参考价值。
01
—
DEVOPS由来和价值
我们知道,现在很多企业都实现了敏捷转型,虽然能频繁地交付,但是却不能频繁地上线,为什么呢?原因大概有以下两个:
搞运维(Ops)的家伙们总是希望系统稳定、稳定、再稳定,稳定压倒一切。所以运维评审认为价值链上游的开发人员开发的软件非功能质量不满足要求,因此阻止变更。所以他们从骨子里不想频繁地上线,那不是给自己找麻烦吗?
然而在价值流上游的开发者(Dev)无法获得价值链下游的运维的真实运行环境,因此无法提升交付质量。敏捷软件开发就是要拥抱变化啊 !
于是,逐渐陷入了“无法提升质量”和“ 非功能质量不满足要求 ”的死循环中。
什么是DevOps
DevOps就是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系而产生的。DevOps其实包含了三个部分:开发、测试和运维。简单地来说,就是更好的优化开发(DEV)、测试(QA)、运维(OPS)的流程,开发运维一体化,通过高度自动化工具与流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
换句话说,DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。专家们总结出了下面这个DevOps能力图,良好的闭环可以大大增加整体的产出。
DevOps从计划、编码、构建,到测试、发布、部署,以及运营、监控,形成一个环路。这也是我们实施服务化或者采用微服务持续改进的要求。结合容器的搭建和微服务架构的采用,我们把DevOps分为下面几个流程:
持续集成:需求的不断变动触发持续的编码、构建流程。
持续交付:完成测试的业务应用以合适的方式交付到适当的节点。
部署发布:将交付的业务应用按照规则部署到生产环境,完成测试后发布。
持续监控:时时监控业务应用以及系统平台的运行情况,形成监控报告。
持续反馈:是基于监控和业务应用的使用情况,持续的数据分析,持续地提出完善意见。
持续改进:基于反馈的意见,启动新的改进计划流程。
Devops 有哪些好处与价值呢?
代码的提交直接触发:消除等待时间,快速反馈
每个变化对应一个交付管道:使问题定位和调试变得简单
全开发流程高效自动化:稳定,快速,交付结果可预测
持续进行自动化回归测试:提升交付质量
设施共享并按需提供:资源利用最大化
02
—
DEVOPS到底是什么
含义越来越丰富的 DevOps
DevOps 至今都缺乏一个清晰和统一的认识。缺乏“官方定义”好处是人人都可以定义,因此没有一个人或者组织可以垄断 DevOps 定义权。同时,DEVOPS也是不断的发展和演进的,对于 DevOps 的后来者 —— 那些没有参与进来的人,需要学习和理解的 DevOps 知识的广度和深度也越来越大。那么,你理解的 DevOps 是指的什么?最近看了DEVOPS资深专家顾宇的文章,我觉得他的理解的很到位,他认为DevOps 概念分成如下四类,分别是:
DevOps 是一组技术/实践
在工程师文化的组织里,对先进技术的渴望是最常见的学习动机。可以促进工程师用更有效率,更优雅的方式解决问题。以下是DevOps经常触及的技术话题:
高频部署(自动化部署)
持续交付
云计算/虚拟化技术
基础设施即代码
Docker
自动化运维
DevOps 是一个角色
当 DevOps 传播开来,大家都会倾向于去找叫做 “DevOps” 的人,希望通过招聘和培训来提升自己的 DevOps 能力。于是设置了一些称之为 "DevOps 工程师" 的岗位和角色。我们发现一般有四个不同但相关的 " DevOps 工程师 " :
作为 Dev 的 Ops(会开发技能的运维工程师)
作为 Ops 的 Dev(会运维技能的开发工程师)
基础设施开发工程师
全栈工程师
DevOps 是一种工作方式
这算是最贴近 DevOps 的目标的定义。但是在理解和时间上也是问题百出,片面的理解和机械的模仿都会造成 DevOps 之痛。对于 DevOps 的工作方式,有以下四个常见的理解:
用 Dev 的方法做 Ops 的事
换了名字的 Ops 团队
一个有 Ops 的 Dev 团队
一个 Dev 和 Ops 合作的团队
DevOps 是一种组织文化
我所说的“建立 DevOps 的文化“则是建立一种规则约束,这种约束不但包含了 DevOps 的行为准则,而且包含了奖励和惩罚的机制。而这种规则约束不能变成一纸空文,更要切实执行下去,形成一种行为习惯。以下是 DevOps 所鼓励的行为。尽管每个人都鼓励以下的行为,但实际效果则千差万别,往往抓住了形式而不是本质。
信任
沟通
学习
分享/共担
不要指责
如果什么都是 DevOps ,那么 DevOps 实际上什么也不是
关于DEVOPS到底是什么,或者以上说的四类理解都是DEVOPS吗?没一种理解独立起来都是不准确和全面的,反过来说如果什么都是 DevOps ,那么 DevOps 实际上什么也不是。我们不用追究DEVOPS到底如何来定义和诠释,只要在运用和实践过程中,落实以下几点DevOps 的原则,那就是DEVOPS的实践:
DevOps 有一个明确的目标:通过充分的合作解决由于责任模糊而相互推诿的问题。(没有 DevOps 痛点的团队自然也没有 DevOps 的动力)
DevOps 是一个团队属性而不是个人属性,这个团队需要处理开发和维护任务。(有单一任务都不算是 DevOps 团队,因为没有合作解决 DevOps 痛点的动机)
DevOps 是一种团队改进,对于团队的表现有明确目标和度量。(没有度量的改进就是耍流氓)
DevOps 是一种团队工作方式和文化,它包括了一系列促进 Dev 和 Ops 合作的具体技术和实践以达到上述目标。( DevOps 也不是缺乏技术的理论空谈)
03
—
DEVOPS与敏捷,CI/CD的关系
「敏捷软件开发」、「持续集成」、「持续交付」与「DevOps」的关系是什么呢?我们可以从几个方面看一下。
它们在空间和时间维度的关系请详细参考以下:
人或组织维度来看
持续集成(CI):CI持续集成是编码、构建的过程。持续集成要求每当开发人员提交了新代码之后,就对整个应用进行构建,并对其执行全面的自动化测试集合。根据构建和测试结果,我们可以确定新代码和原有代码是否正确的集成在一起。持续集成有助于打破开发人员和测试人员之间的「墙」。
DevOps:有助于打破开发团队与运维团队之间的「墙」。
运作流程或交付过程来看
持续交付:Continuous Delivery (CD) 持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。如果代码没有问题,可以继续手工部署到生产环境中。
持续部署:如果真的想获得持续交付的好处,应该尽早部署到生产环境,以确保可以小批次发布,在发生问题时可以轻松排除故障。
于是有了持续部署。持续部署是在持续交付的基础上,把部署到生产环境的过程自动化。
持续测试:持续测试是贯穿整个内部研发流程始终的,从持续集成到持续部署,都有自动化测试的存在。
04
—
DEVOPS与云计算、微服务,容器的关系
云基础平台作为底层支撑,既可以是Docker、Unikernel这样的容器技术,也可以像vmware或OpenStack这样以VM为管理单元的方式,旨在为上层提供有SLA能力的资源池管理与调度;
DevOps作为一层可选平台,以流程自动化、工具自动化为主要手段,通过长期的积累与优化,为最终业务交付提供更敏捷、更数字化的能力;
微服务使得我们更加自由的做出更优的决策、更快的研发、以及不久之后我们将会看到的更简便的服务扩展。
容器的出现解决了许多部署中存在的问题,尤其解决了和微服务一同使用时出现的问题。由于容器的不可变性,系统的可靠性也得到了一定程度的提高。
历史系统与微服务在企业会长时间并存(BiModal),不要试图一步到位,都是从部分外围应用开始试点,甚至是先拆应用、再拆数据这样循序渐进的。
05
—
DevOps 的技术栈与工具链
最后说一下DEVOPS技术栈和工具,Everything is Code,DevOps 也同样要通过技术工具链完成持续集成、持续交付、用户反馈和系统优化的整合。Elasticbox 整理了 60+ 开源工具与分类,其中包括版本控制&协作开发工具、自动化构建和测试工具、持续集成&交付工具、部署工具、维护工具、监控,警告&分析工具等等,补充了一些国内的服务,可以让你更好的执行实施 DevOps 工作流。
版本控制&协作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
自动化构建和测试: Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、phpUnit
持续集成&交付: Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
容器平台: Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)
配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere服务开通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
日志管理:Logstash、CollectD、StatsD
监控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana
以上是关于看了就懂DEVOPS - 全面总结DEVOPS基础概念的主要内容,如果未能解决你的问题,请参考以下文章