一个都不能少: DevOps的3大核心基础架构
DevOps的涵盖面非常广,因为这个概念的火热,又有很多文章和技术都在把DevOps的帽子扣在自己头上,让很多人迷惑不解。其实,DevOps的知识体系如果从顶层上来分解,只有2块:方法论和工具链。方法论这块,因为DevOps的很多理念脱胎于敏捷,所以你所能了解到的各种敏捷理念,实践和方法都可以作为DevOps知识体系的一部分,关于这部分后续我单独写一篇文章来谈。今天想要和大家聊聊的关于DevOps工具链这块内容。
前段时间看到有人整理了一个这样的DevOps工具链周期表,说实话,上学的时候就最烦背元素周期表了,看着这个玩意儿我只是想吐(声明:不是说这个玩意儿不好哈,挺好的东西,就是戳中了吐点而已)。
人类不善于记忆复杂的数据和零散的知识,所以需要简化简化再简化,一图解千言:
简而言之,实现DevOps工具链你只需要3个核心基础架构:
– SCM 配置管理系统
– Automation 自动化系统
– Cloud 云(或者说可伸缩的,自服务的,虚拟化系统)
SCM 配置管理系统
配置管理是DevOps最底层的基础设施,无论是Configuration As Code 还是 Infrastructure As Code 强调的都是用管理代码的方式来管理环境,将环境版本化对于无论快速创建,还是可稳定的重复创建这些DevOps的基本要求来说都是最重要的基础。
在周期表的左侧第二列所列出的就是各种可供选择的配置管理系统,如:GIT, SVN, Mercurial, GitHub, Bitbucket 等。对于实施DevOps来说,选择哪种SCM的一个重要考虑点就是后续的Automation和Cloud这两个环节中的其它工具对这些工具的集成情况如何。作为这两年的明星Git来说,这一切都不是问题,当然是最好的选择。
SCM中所放置的内容又可以再分成2个层次,分别为
- AppCode:就是你的应用代码
- EnvCode:就是环境相关的代码,这部分内容又可以进一步细化成环境配置(Config)和配置数据(ConfigData)。
- 环境配置:是那些针对当前应用基本上固定的环境配置
- 环境数据:是那些需要在部署的同时根据情况调整的数据,如:配置文件,开发/测试/生产环境的地址等等。
Automation 自动化系统
自动化在DevOps中的作用不用多说了,这部分的主线一般由各种类型的Build系统来实现,如:Jekins, Team City, Travis CI, CC等等。但仅仅有这些还不够,为了能够完成应用从开发环境到生产环境的迁移,我们还必须处理如编译,自动化测试,依赖恢复,容器构建,打包,编排等很多操作,所以还需要配置如:Junit, Xunit, FitNesse, Selenium, NuGet, NPM,JMeter等许多其它的工具来实现;但这些工具都只是在自动化系统中实现某一部分的功能,一般都是由Build系统来驱动,并依赖于SCM中所提供的各种代码来实现的。
在我的那张图中,所有这些内容最终会汇总到一个叫做MOF的节点,作为后续进入环境的起点。MOF是DMTF这个标准化组织提出的一个工具和厂商无关的描述性语言,当前已经被很多厂商所接受并正在工具中逐步实现,DMTF的厂商列表可以在这里查到:
http://www.dmtf.org/cn/about/list
说实话,各种DevOps部署工具的标准化做的非常不好,基本上你使用了某种工具就被绑定了,虽然DMTF提出了这个标准一段时间了,一些主流的工具对它的支持仍然有限,如:Puppet 和 Chef等。对于用户来说,熟悉了某种工具也不太愿意更换其它的,所以对于DMTF的前景我是持怀疑态度的。这是一场博弈,对于用户来说,有标准总比没有好,多了解一些总是好事。
Cloud云
虚拟化和云计算的出现应该是催生DevOps的重要因素,没有云所提供的弹性,自服务等特性,很多DevOps的理念只能停留在纸面上。
对于实施DevOps来说,我们需要了解的就是各种云所提供的API,因为无论是自动化系统还是前面的SCM的产出最终都需要调用这些API来完成最终应用部署。
这部分的内容很多,就不展开了。
写这篇文章的原因很简单,就是觉得东西太多,需要梳理,其中如有不妥之处,还望各位多多指正。希望这篇文章至少能帮大家找到了解DevOps工具链的入手之处,形成自己的知识体系,逐步扩展。
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

一个都不能少: DevOps的3大核心基础架构的更多相关文章
- Coursera台大机器学习基础课程1
Coursera台大机器学习基础课程学习笔记 -- 1 最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正. 一 机器学习是什么? 感觉和 Tom M. Mitche ...
- Java轻量级业务层框架Spring两大核心IOC和AOP原理
IoC(Inversion of Control): IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些 ...
- css核心基础总结篇
今日这篇是整合前面的css补充知识的. 我觉得前面的关于css的知识补充进去有点乱,今日整理整理一下. 层叠样式表 层叠是什么意思?为什么这个词如此重要,以至于要出现在它的名称里. 层叠可以简单地理解 ...
- Android应用的核心基础
Android4开发入门经典 之 第二部分:Android应用的核心基础 Android应用中的组件 Application Components Android应用中最主要的组件是: 1:Activ ...
- Servlet---JavaWeb技术的核心基础,JavaWeb框架的基石(一)
初学JavaWeb开发,请远离各种框架,从Servlet开始. Web框架是开发者在使用某种语言编写Web应用服务端是关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的, ...
- 大数据基础知识问答----hadoop篇
handoop相关知识点 1.Hadoop是什么? Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速 ...
- 【原创】大数据基础之Zookeeper(2)源代码解析
核心枚举 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING; } zookeeper服务器状态:刚启动LOOKING,f ...
- C#复习笔记(2)--C#1所搭建的核心基础
通过对C#1所搭建的核心基础的深入了解,可以知道之后的C#版本在C#1的基础上做了很多扩展,而这些扩展都是基于C#搭建的核心基础而来的. 委托 一.编写委托的过程 委托经常和C语言的“函数指针”挂钩. ...
- Java入门到精通——框架篇之Spring源码分析Spring两大核心类
一.Spring核心类概述. Spring里面有两个最核心的类这是Spring实现最重要的部分. 1.DefaultListableBeanFactory 这个类位于Beans项目下的org.spri ...
随机推荐
- 十大面试难题解惑,看完秒杀一切 HR 面。程序员必读!
最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余. 小编收集了10个面试官最爱提的问题,虽然题目千变万化,但是万变不离其宗,只要掌握了答题的 ...
- [HNOI2012]永无乡
题目描述 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达 ...
- ●CodeChef Sereja and Game
题链: https://www.codechef.com/problems/SEAGM题解: 概率dp,博弈论 详细题解:http://www.cnblogs.com/candy99/p/650434 ...
- 51nod1295 XOR key(可持久化trie)
1295 XOR key题目来源: HackerRank基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个长度为N的正整数数组A,再给出Q个查询,每个查 ...
- ●BZOJ 3672 [Noi2014]购票
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3672 题解: 斜率优化DP,点分治(树上CDQ分治...) 这里有一个没有距离限制的简单版: ...
- 计蒜客NOIP2017提高组模拟赛(四)day1
T1:小X的质数 小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小 X 认为,质数是一切自然数起源的地方. 在小 X 的认知里,质数是除了本身和 1 以外,没有其他因数的 ...
- [BZOJ]1050 旅行comf(HAOI2006)
图论一直是小C的弱项,相比其它题型,图论的花样通常会更多一点,套路也更难捉摸. Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权 ...
- [Java] 设计模式:代码形状 - lambda表达式的一个应用
[Java] 设计模式:代码形状 - lambda表达式的一个应用 Code Shape 模式 这里介绍一个模式:Code Shape.没听过,不要紧,我刚刚才起的名字. 作用 在应用程序的开发中,我 ...
- 修改hosts不必重启 立刻生效
打开命令提示符窗口执行以下命令: 显示DNS缓存内容 ipconfig /displaydns 删除DNS缓存内容 ipconfig /flushdns ps.电脑卡的话,先关机再开机(别直接重启)
- vue之生命周期
vue的生命周期的过程提供了我们执行自定义逻辑的机会,好好理解它的生命周期,对我们很有帮助. 1.vue实例的生命周期(vue2.0) 2.生命周期描述:(参考截图) 3.例子 window.vm = ...