写点什么

我们的 CMDB 模型是不是都错了

  • 2020-03-16
  • 本文字数:2406 字

    阅读完需:约 8 分钟

我们的CMDB模型是不是都错了

大家有没有想过,我们过去做的 CMDB 模型都是错的?也许真的错了,可以往下看看。

当前 CMDB 模型面临的问题

当前 CMDB 的模型问题

  • 首先是思考的深度不够,当今很多 CMDB 的模型还是聚焦在底层资源。这个底层资源指的一部分是 IaaS 层的资源管理,另一部分是 PaaS 层中间件的资源管理。到上层应用这块,其实它的模型表述特别简单,只有一些应用的基本信息。

  • 第二个要讲的问题是无应用视角。今天我们创建管理了这么多资源对象,但不知道是给谁用的,其实真正的着力点是应用。这个我将其总结为无应用层的理解力。

  • 模型的动态性不强。每个模型对象调整它的属性或者关系的时候,在传统数据库里技术端的特点带来的代价特别高。我把模型的动态性抽象成两个维度,第一是模型对象之间在 CI 级别的动态性,第二个就是实例级。

  • 第四个问题是场景的过度设计。我认为场景是可以预设的,但是细粒度的模型会带来很大的管理负担。有时候会把场景考虑得过于复杂,导致这里面的模型管理后续负担特别重。从简到繁很容易,但是从繁到简很难。

  • 技术限制想象力。受 CMDB 平台技术本身的能力限制,导致无法扩展这个模型。

  • 欠缺 IT 架构思考力。我要讲的是从业务架构到应用架构再基础架构。业务架构中还包含了基础设施架构和数据架构。弄清楚这三者的关系后,就能表达出在每一层架构上所带来的本质上的关系连接到底是什么。

CMDB 系统截图

构建 CMDB 模型的正确思路

新一代 CMDB 到底新在哪儿?

新思维:突破配置管理的认知,导致边界不清。配置往 IT 资源方向转变。


新方法:自上而下的推动 CMDB 落地,而不是自下而上。


新模型:模型重构,传统的关系模型无法满足。


新技术:使用新的技术,新的功能架构,重新定义功能边界。

CMDB 元数据的两类用途

CMDB 模型最终是要实例化数据和关系的,正确的模型构建可以为多变的场景提供数据基础。


1.面向管理层的 ITSM 流程。在很多传统企业里面,CMDB 还是要为 ITSM 的流程做好数据支撑服务。


2.面向执行层的 DevOps 过程。端到端整个 IT 交付过程需要完整的元数据,特别是应用层面的元数据。


总的来说,新一代 CMDB 应该能支撑整个 IT 过程管理(ITPM),所以 CMDB 可以成为:基础元数据平台、数据总线分享平台、共享实例数据平台、统一数据规则平台等等。

两层 CMDB,构建不同管理视角


CMDB 架构分基础资源层架构和应用资源层架构。应用层资源架构把相关的资源以应用为中心实现资源整合。资源及其资源的关系称之为拓扑(应用拓扑、物理拓扑),资源管理方式有人工维护和自动发现两种方式,从详细的事前、事中和事后来看,可以分成详细的四中模式:人工、IT 对象生命周期流程、场景化变更管理、自动发现等等。

基础 CMDB 建设五原则

1.面向 IaaS 和 PaaS 设计,能够管理底层的一切资源。


2.状态控制借助运维流程自动化完成。


3.CI 的维护要深度使用自动发现,而不是人工维护。


4.资源信息必须能为上层应用提供服务。


5.必须满足基础资源的 CI 管理需要。

应用 CMDB 建设七原则

1.提供统一的应用元数据管理能力,和应用类型无关。


2.核心诉求是应用生命周期管理。


3.以应用为中心,而非基础资源为中心。


4.从应用资源的角度构建起与 IT 资源的弹性关系。


5.为应用资源、动作、状态的统一管理提供支撑。


6.以统一的基础资源层 CMDB 作为基础。


7.核心场景就是持续交付。

应用 CMDB 模型层次化理解


应用 CMDB 是面向资源的完整描述,应用的资源分成应用的部署资源、服务资源和动作资源。


  • 部署资源是一次应用部署所依赖的资源,一般又称本地资源,比如说主机 Host、程序包等等。

  • 服务资源是应用运行依赖的资源,一般有称之为附加资源(来自于 12factor),比如说应用的服务接口、应用依赖的 PaaS 资源、应用依赖的应用资源等等。

  • 场景动作是资源其上附加的动作描述,是资源的管理方法。

新一代模型的标准化框架

新一代 CMDB 的资源模型框架


核心准则:一个资源能够提供服务,还要看它关联的资源,因此必须采用结构化模型方案。纷繁复杂的 IT 对象模型,其实只有两种:一种是硬件对象模型,一种是软件对象模型。这两种模型都要用新的模型表达方法来做——结构化模型定义方法,而非关系型平面表达模式。

IaaS 层硬件对象模型


针对每一个象实例化描述它们就可以了,无非就是属性和关系。

PaaS 层对象模型核心概念


一定要深刻理解服务、实例和主机之间的层次关系,并且要精确表达注意组件和集群的区别,例如 Mysql 组件和 Mysql 集群。待会儿和 SaaS 层对象一起详解。

应用层对象模型核心概念


对于 PaaS 和 SaaS 对象来说,他们都是软件对象。我们把其对象模型整理成三个层次,这三个层次中必须要包含服务、组件服务节点和主机三层,而他们又分别对应三层、四层和七层模型。



  • 最底下的层次其实应该叫做部署资源,主机只是其中的一种。

  • 服务运行过程中起了哪些运行实例、这些实例进程在哪些主机上,主机延伸出来就是 IP 列表。组件实例有两种,一种是自有实例,当程序运行的时候需要的应用包实例化。一种是依赖实例,就是将依赖组件实例化。

  • 自有服务是自己启动的服务对外提供的时候以怎样的方式暴露出去。依赖服务则是运行时还关联了哪些服务。

  • 应用层和 PaaS 对象都要深刻理解服务、实例和主机之间的层次关系,并且要精确表达。

一个应用架构的示例

接下来,我们以一个真实的应用系统架构为例子,如下:



通过我们讲的模型,最终表达如下:



在 CMDB 模型中,必须要表达这些元素的横向和纵向关系,才能构建一个真正的应用系统完整的视图,其中包括应用架构视图、应用访问视图、应用部署视图等等。


这是我要讲的新一代 CMDB 模型的全部,为什么我说以前的 CMDB 模型可能都是错的,大家也应该看出构建模型的思路有所不同。这个地方还有一个关键的技术问题没讲:是否应该关系数据库来实现 CMDB?我的答案是否定的。但如果选择一个非关系型数据库,如何选型?考虑什么要素?这些数据库的坑怎么填?这里面有涉及到实践经验了。


本文转载自成哥的世界公众号。


原文链接:https://mp.weixin.qq.com/s/k3vp_CBDHmB_aRER591ZIw


2020-03-16 20:343176

评论

发布
暂无评论
发现更多内容

你的团队想做出什么成果?

姜戈

团队管理

健身一周年:持续锻炼带来无法想象的改变

小鲸数据

学习 职业 专注 健身

ARTS week 2

锈蠢刀

源码分析 | Mybatis接口没有实现类为什么可以执行增删改查

小傅哥

Java 源码分析 小傅哥 mybatis 编程思维

redis过期策略和内存淘汰机制

wjchenge

管理规划篇

姜戈

团队管理 团队组织

揭秘神经拟态计算:缘何成为AI界新宠?

最新动态

联邦学习与推荐系统

博文视点Broadview

人工智能 大数据 学习 推荐系统

好的软件工程原则

pydata

你为什么“啃不动”你手中的技术书?

图灵社区

Java Python 算法 HTTP R语言

Android原生人脸识别Camera2+FaceDetector 快速实现人脸跟踪

sar

宕机原因千千万,被雷劈了最无奈

田晓旭

码农远程办公指北

大伟

点击劫持:无X-Frame-Options头信息(修复)

唯爱

实现元素等高: Flexbox vs. Grid

寇云

CSS css3

Vol.1 Java初探,新手必看!

pyfn2030

编程 新手指南

终于,我也到了和Eclipse说再见的时候,难说再见

程序员小跃

Java eclipse IDEA

突破困局

Neco.W

感悟 工作 创业心态

Spring Security 两种资源放行策略,千万别用错了!

江南一点雨

Java spring springboot springsecurity

你真的会用Mac中的Finder吗

Winann

macos 效率 App Mac

你的团队是干什么的?

姜戈

团队管理 团队职能

100天从 Python 小白到大神最良心的学习资源!

JackTian

Python GitHub 学习 Python-100-Days Python-Core-50-Courses

栀子花,我们应该像你一样静静绽放

小天同学

个人感想 感悟 日常思考

假如孔乙己是程序员

顿晓

学习 程序员 孔乙己

软件开发生产率改进之我见(二)

清水

软件工程 软件开发 技术管理

使用<input>标签实现六个格子验证码输入框

码字与律动

Java vue.js 大前端

一致性算法 Raft 简述

架构精进之路

raft 一致性算法

数据与广告系列三:合约广告与与衍生的第三方广告数据监控

黄崇远@数据虫巢

数据挖掘 互联网 广告 移动互联网

python实现·十大排序算法之计数排序(Counting Sort)

南风以南

Python 排序算法 计数排序

多线程与线程安全(实例讲解)

YoungZY

Java 多线程 线程安全

提升输入效率第一步——切换双拼

dongh11

效率工具 提升效率 生产力 分享 有趣

我们的CMDB模型是不是都错了_文化 & 方法_成哥的世界_InfoQ精选文章