今天我们分享的主题是:有了CMDB,为什么还需要应用配置管理?
    你不妨先停下来,思考一下这个问题。
    我抛出的观点是: CMDB是面向资源的管理,应用配置是面向应用的管理

    请注意,这里是面向“资源”,不是面向“资产”,资源 ≠资产。

    1. <br />**CMDB是面向资源的管理,是运维的基石

    **

    我们一起来梳理一下,在建设运维的基础管理平台时通常要做的事情

    第1步,把服务器、网络、IDC、机柜、存储、配件等这几大维度先定下来;
    第2步,把这些硬件的属性确定下来,比如服务器就会有SN序列号、IP地址、厂商、硬件配置(如CPU、内存、硬盘、网卡、PCIE、BIOS)、维保信息等等;网络设备如交换机 也会有厂商、型号、带宽等等;
    第3步,梳理以上信息之间的关联关系,或者叫拓扑关系。比如服务器所在机柜,虚拟机所在的宿主机、机柜所在IDC等简单关系;复杂一点就会有核心交换机、汇聚交换机、接入 交换机以及机柜和服务器之间的级联关系;
    第3.5步,在上面信息的梳理过程中肯定就会遇到一些规划问题,比如,IP地址段的规划,哪个网段用于DB,哪个网段用于大数据、哪个网段用于业务应用等等,再比如同步要做 的还有哪些机柜用于做虚拟化宿主机、哪些机柜只放DB机器等。

    以上信息梳理清楚,通过ER建模工具进行数据建模,再将以上的信息固化到DB中,一个资源层面的信息管理平台就基本成型了。

    1. **但是,信息固化不是目的,也没有价值,只有信息动态流转起来才有价值(跟货币一样)。**接下来我们可以做的事情:

    第4步,基于这些信息进行流程规范的建设,比如服务器的上线、下线、维修、装机等流程。同时,流程过程中状态的变更要同步管理起来;
    第5步,拓扑关系的可视化和动态展示,比如交换机与服务器之间的级联关系、状态(正常or故障)的展示等,这样可以很直观地关注到资源节点的状态。

    至此,从资源维度的信息梳理,以及基于这些信息的平台和流程规范建设就算是基本成型了。这个时候,以服务器简单示例,我们的视角是下面这样的:
    image.png

    应用配置管理是面向应用的管理,是运维的核心
    上面说明了CMDB的基础信息部分,如果从传统的SA运维模式,这些信息已经足够,但是从应用运维的角度,这些就远远不够了。

    这时我们就需要一个非常非常重要的句柄:**应用名**,或者叫应用标识。至此,应用运维里面最最重要的一条联系也就产生了:“应用名-IP“的关联关系(这里也可以是定义的其它唯一主机标识,如主机名、容器ID等等,因为我们使用的方式是IP,所以这里就以IP示例)。

    之所以说“应用名”和“应用名-IP关联关系”非常重要,是因为它的影响力不仅仅在运维内部,而是会一直延伸到整个技术架构上。后面我们会介绍到的所有平台和系统建设,都跟这两个概念有关。

    CMDB是IP为标识的资源管理维度,有了应用名之后,就是以应用为视角的管理维度了。首先看一下应用会涉及到的信息

    • 应用基础信息,如应用责任人、应用的Git地址等;

    • 应用部署涉及的基础软件包,如语言包(Java、C++、GO等)、Web容器(Tomcat、JBoss等)、Web服务器(Apache、Nginx等)、基础组件(各种agent,如日志、监 控、系统维护类的tsar等);

    • 应用部署涉及的目录,如运维脚本目录、日志目录、应用包目录、临时目录等;

    • 应用运行涉及的各项脚本和命令,如启停脚本、健康监测脚本;

    • 应用运行时的参数配置,如Java的jvm参数,特别重要的是GC方式、新生代、老生代、永生代的堆内存大小配置等;

    • 应用运行的端口号;

    • 应用日志的输出规范;

    • 其他。

    1. <br />
    2. <br />上面的梳理过程实际就是标准化的过程。我们梳理完上述信息后就会发现,这些信息跟CMDB里面的资源信息完全是两个维度的东西。所以从信息管理维度上讲,**把资源配置和应用配置分开会更清晰,解耦之后也更容易管理**

    好了,按照上面CMDB说的套路,梳理完成后,就是要进行信息的建模和数据的固化,这时就有了我们的“应用配置管理”。

    再往后,就是基于应用配置管理的流程规范和工具平台的建设,这就涉及到我们经常说的持续集成和发布、持续交付、监控、稳定性平台、成本管理等等。

    从应用的视角,我们配置管理,应该是下面这样一个视图(简单示例,不是完整的):

    image.png

    好了,有了资源配置信息和应用配置信息,这两个信息应该怎么统一管理起来呢。直接看图:

    image.png

    至此,CMDB和应用配置管理的分层分解就完成了,应用名关联着应用配置信息,IP关联着资源信息,二者通过“应用名-IP”的对应关系,联系到一起。