一个都不能少: DevOps的3大核心基础架构

2023-11-11

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研发运维一体化的信息

qrcode_for_gh_b7c158df1fd1_430

转载于:https://www.cnblogs.com/wuyida/p/6300118.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个都不能少: DevOps的3大核心基础架构 的相关文章

  • 是否有一个 Git 命令可以在推送到 master 之前添加通知/警告

    我有一个用例 其他人依赖我在从 master 下拉时没有启用标志 但我需要在本地处理存储库时启用它 我希望 希望 Git 有一种方法可以添加通知或警告 当请求推送到 master 时会触发 作为某种 提醒 所以也许我的工作流程可能是这样的
  • 在 Jenkins API 中,有没有办法找到上次构建的 git 提交?

    我想编写一个脚本来自动创建热修复的功能分支 为了做到这一点 我需要弄清楚如何查看当前构建中的最后一次提交 有没有办法从 Jenkins API 获取最后一次提交 git checkout b hotfix
  • 将更改推送到 Cloud Foundry 时出错

    从我的本地主机 我连接到 blue mix cf api https api ng bluemix net 我登录然后用以下命令推送更改 cf push 然而 在控制台中 Uploading MY PROJECT Uploading app
  • 压缩 git log --graph 输出?

    有没有办法压缩输出git log graph那么它会在视觉上压缩遵循线性历史的提交吗 基本上 我只想查看图中某些分支分歧 合并的点 以获得我的分支结构的顶层 概述 举个例子 如果我有这个 A Z H B G C F D E 我希望它显示类似
  • 编辑 git patch 给出“您编辑的块不适用”

    我正在交互地添加一个文件 git add template panels panel reports php p diff git a template panels panel reports php b template panels
  • 如何正确处理git中仅本地使用的文件?

    我想重新排序 git commits 中更改文件的输出 因此我创建了一个名为submodule orderfile并配置diff orderFile https git scm com docs git config指向该文件 现在出现了很
  • git | git将旧提交移至另一个分支的过去

    我过去错误地进行了分支 并且在另一个分支的开头留下了一个提交 03431cb HEAD gt bar a2 d332e4d foo b2 9b29ae3 b1 4656a98 a1 6ebca20 master root 我怎样才能移动a1
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • 从另一个分支或从 master 创建 Git 分支?

    所以我是 Git 新手 我最近从存储库中提取了主分支的新版本 我创建了一个branch 1 获取某个功能并将其推送到存储库并创建拉取请求 现在我创建了一个新的branch 2 具有另一个功能 但由于我的拉取请求尚未合并 再次拉取 maste
  • 哪些Git命令无法在本地执行?

    当我和同事谈论 Git 时 我告诉他们 一旦本地存储库初始化 只有三个 Git 命令不能在不访问远程存储库的情况下执行 假设origin当然 不在本地计算机上 git fetch http www kernel org pub softwa
  • 是否可以在具有高山风味的 docker 容器内构建 AOSP?

    我对 AOSP 非常陌生 我正在尝试在 Docker 上设置完整的 AOSP 以构建 Docker 映像 例如 Alpine 或 Ubuntu 映像 如果不可能 请让我知道无法在内部设置 AOSP 的原因泊坞窗图像 或者我需要编写 Dock
  • GIT Rebase 协作的分支?

    阅读本文后 重新设置基点以收集从主分支到我的功能分支的更改是有意义的 Git 工作流程以及 rebase 与合并问题 https stackoverflow com questions 457927 git workflow and reb
  • 如何为Git存储库组织和设置镜像备份服务器?

    我正在将一些 svn 存储库移至 Git 所以 我基本上尝试做的是 设置一台带有裸 Git 存储库的服务器 我将从中拉取和推送到该存储库 为第一台服务器上的所有存储库设置一些备份服务器 所以 假设我的服务器上有一个目录 例如 HOME gi
  • 用于维护项目扩展分支的 Git 工作流程?

    我们在 GitHub 上分叉了一个 OSS 项目 并向其添加一些自定义扩展 我们希望将我们所做的一些更改发送回原始项目 错误修复等 但其他更改是原始项目维护者目前不感兴趣的功能扩展 我正在尝试找出管理这种情况的最佳工作流程 我希望我们的主分
  • Git - 致命:无法获取当前工作目录?

    When I git clone从回购协议中 我得到 fatal Could not get current working directory No such file or directory 我该怎么办 我检查了服务器并发现 git文
  • 尝试匿名克隆 github 存储库时权限被拒绝

    作为匿名用户 github 上没有存储公钥 我尝试通过以下方式克隆公共存储库 git 网址 但它失败了 git clone email protected cdn cgi l email protection mikehaertl phpw
  • 单个分支的 Git 导出

    我在本地的 git 存储库上工作 它有各种分支 例如开发分支 一些用于实验更改的分支等等 当然还有主分支 我想设置一个公共 嗯 确实是一个局域网的东西 最好说 共享 存储库来仅包含主分支 如何导出该分支以便我可以将其复制到目标文件夹 谢谢
  • GIT:查找包括子模块的文件列表(例如使用 git ls-files)

    我一直在试图弄清楚如何获取 git 存储库中所有文件的列表 包括子模块中包含的文件 现在 git ls files将提供顶级子模块目录 但不提供子模块中包含的文件 经过进一步调查 我发现使用git submodule 你可以递归地找到所有的
  • 如何在 GitHub 中创建嵌套存储库?

    我可以通过创建一个存储库https github com https github com say repo 并有 https github com username repo git 如何创建另一个存储库 例如sub repo 置于rep
  • 如何在不下载文件对象的情况下进行 git 克隆

    是否可以下载所有提交但不能下载文件本身 我想运行 bisect 但从构建服务器下载版本而不是自己编译 当你跑步时git bisect你可以提供 no checkout如果您不想为每次迭代签出新的工作树 请作为参数 同样适用于git clon

随机推荐

  • java21天打卡 day10-字符串2

    字符串2 1 截取子字符串 1 取从第三个字符开始到最后 2 取第二到第四个字符 2 分割字符串 public class Day10 public static void main String args 字符串2 1 截取子字符串 1
  • websocket协议简介

    概念介绍 单工通信 数据传输只允许在一个方向上传输 只能一方发送数据 另一方接收数据并发送 半双工 数据传输允许两个方向上的传输 但在同一时间内 只可以有一方发送或接收数据 全双工 同时可进行双向数据传输 websocket介绍 WebSo
  • 微信小程序java登录授权解密获取unionId(填坑)

    官方流程图 第一步 获取code 说明 小程序调用wx login 获取 临时登录凭证code 并回传到开发者服务器 开发者服务器以code换取 用户唯一标识openid 和 会话密钥session key 之后开发者服务器可以根据用户标识
  • 数据科学与大数据分析项目练习-2使用R进行K-means聚类分析

    使用R进行K means聚类分析 使用Rstudio读取grades km input csv并进行练习 yearly sales csv包含620条数据 包含4种变量 student English Math 和 Science 首先还是
  • 目标检测之Generalized Focal Loss介绍

    Generalized Focal Loss介绍 论文地址 https arxiv org abs 2006 04388 mmdetection已经实现了GFL 简单的说是继承的onestage loss改成作者提出的qfl dfl 正负样
  • DELL服务器R230 RIAD1创建

    DELL服务器R230 RIAD1创建 服务器开机后 按Ctrl R键 进入配置RIAD 第一步 删除虚拟硬盘中的硬盘 可以看到Virtual Disk中显示的2个硬盘都是1 8T的 但前面1和2都是Non RAID 说明这两块硬盘没有进行
  • java异步编程

    java异步调用 定义 Java异步调用是指在调用某个方法时 不需要等待该方法执行完毕才能继续执行下面的代码 而是通过多线程或回调函数等方式 让该方法在后台执行 同时允许程序继续执行下面的代码 这种方式可以提高程序的并发性和响应速度 特别是
  • 【翻译】Attention Is All You Need

    Attention Is All You Need 注意力是你所需要的一切 论文地址 https proceedings neurips cc paper 2017 file 3f5ee243547dee91fbd053c1c4a845aa
  • x86汇编指令学习

    ltr 使用方法 ltr ax 意义 将寄存器ax中的值加载到任务寄存器 TR 中 jnz 和 jne jnz or jne 是指令测试之后的条件跳转 jnz 如果Zero flag ZF 被清零 它将跳转到指定位置 jnz 通常用于显示测
  • Python 程序设计与算法基础教程(第二版)第八章上机实践

    第八章上机实践部分参考答案 2 求阶乘 3 Fibonacci 斐波那契 数列 4 利用可变参数定义求任意个数数值的最小值的函数min n a b c 5 利用元组作为函数的返回值 求最大值 最小值和元素个数 函数后缀带D为递归哦 2 求阶
  • opencv 识别图片和视频中的人脸

    识别图片中的人脸 import cv2 加载图像并创建一个人脸识别的级联分类器 image cv2 imread test jpeg face cascade cv2 CascadeClassifier D pyTest venv Lib
  • wireshark常见提示错误

    TCP dup ack 重复应答 TCP dup ack XXX X 表示第几次重新请求某一个包 XXX表示第几个包 不是Seq X表示第几次请求 丢包或者乱序的情况下 会出现该标志 RST ACK 重置 一般问题不大 TCP Retran
  • 关键词爬取图片(Python)

    废话不多说 直接上代码 测试了好几遍 确认管用才发出来 import requests import os import re headers User Agent Mozilla 5 0 Windows NT 10 0 WOW64 App
  • pandas 获取不符合条件/不包含某个字符串的dataframe

    工作中数据的处理中往往会遇到筛选出不符合条件的或者不包含某个字符的dataframe 我们会如何去做呢 可能你会想到用python写一个函数 然后用panda的apply函数或者map函数来进行处理 不可否认这是一中方法 但是实际上pand
  • JS面向对象编程浅析

    在AJAX兴起以前 很多人写JS可以说都是毫无章法可言的 基本上是想到什么就写什么 就是一个接一个的函数function 遇到重复的还得copy 如果一不小心函数重名了 还真不知道从何开始查找错误 因为大家总是用面向过程的编程思想来写JS代
  • Hexo个人博客主题配置

    系列文章目录 1 Hexo Github Gitee 搭建个人博客 2 Hexo个人博客主题配置 目录 系列文章目录 配置站点信息 修改主题 Next主题配置 样式 favicon avatar rss 代码块 回到页面顶部 阅读进度条 G
  • AI商业化如何落地?看设计师如何利用AI细化工作流

    自从AI爆火之后 人类是否会被AI取代一直都是打工人格外关注的问题 而最近 在小编深入探索到我们用户的使用情况后 发现已经有人拿神采PromeAI直接实现了商业应用 将AI的设计创意应用得淋漓尽致 并且直接进军房地产及家装行业 让我们一起来
  • CSS样式–被忽略的前端基础(二)

    CSS样式 被忽略的前端基础 二 前言 写css的时候有没有觉得属性值千奇百怪 有数值 有带单位的数值 有百分百 有函数 有颜色 red fff rgba 255 255 255 0 CSS属性值种类 1 数值 长度值 用于指定例如元素宽度
  • react-router-dom

    进入项目目录 使用npm安装react router dom npm install react router dom save dev 然后我们新建俩个页面 分别命名为 home 和 detail 在页面中编写如下代码 home js i
  • 一个都不能少: DevOps的3大核心基础架构

    DevOps的涵盖面非常广 因为这个概念的火热 又有很多文章和技术都在把DevOps的帽子扣在自己头上 让很多人迷惑不解 其实 DevOps的知识体系如果从顶层上来分解 只有2块 方法论和工具链 方法论这块 因为DevOps的很多理念脱胎于