• 标准化体系建设(上):如何建立应用标准化体系和模型?


    标准化是运维过程中最基础、最重要的,但也是最容易被忽视的一个环节。

    重要的事说三遍,“标准先行,标准先行,标准先行”

    先识别出各个运维对象,日常中恶运维都应该是针对这些对象的运维。

    总结一下标准化的套路:

    • 第一步,识别对象;
    • 第二步,识别对象属性;
    • 第三步,识别对象关系;
    • 第四步,识别对象场景。

    基础设施层面的标准化

    基础设施层面的运维对象应该不难识别,因为都是一个个物理存在的实体,我们可以进行如下分析。

    • 第一步,识别实体对象,主要有服务器、网络、IDC、机柜、存储、配件等。
    • 第二步,识别对象的属性,比如服务器就会有 SN 序列号、IP 地址、厂商、硬件配置(如 CPU、内存、硬盘、网卡、PCIE、BIOS)、维保信息等;网络设备如交换机也会有厂商、型号、带宽等信息。
    • 第三步,识别对象之间的关联关系,比如服务器所在的机柜,虚拟机所在的宿主机、机柜所在 IDC 等简单关系;复杂一点就会有核心交换机、汇聚交换机、接入交换机以及机柜和服务器之间的级联关系等,这些相对复杂一些,也就是我们常说的网络拓扑关系。

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

    以服务器为例简单展示一下,我们的视角就是下面这样的:

    但是,信息固化不是目的,也没有价值,只有信息动态流转起来才有价值。接下来我们需要做的事情,就是识别出针对运维对象所实施的日常运维操作有哪些,也就是识别出运维场景是什么。

    • 第四步,还是以服务器为例,我们针对服务器的日常操作有采购、入库、安装、配置、上线、下线、维修等等。另外,可能还会有可视化和查询的场景,如拓扑关系的可视化和动态展示,交换机与服务器之间的级联关系、状态(正常 or 故障)的展示等,这样可以很直观地关注到资源节点的状态。

    完成了这些工作,接下来才是对上述运维场景的自动化开发。所以你看,在真正执行去做工具和自动化平台之前,其实是需要先做好大量的基础准备工作的。我要再次强调这一点,一定不能忽视。

    应用层面的标准化

    下面我们再一起看一个逻辑上的对象,就是我们前面经常提到的运维的核心:应用。对这个逻辑对象的建模会相对复杂一些,不过我们依然可以按照上面的套路来。

    • 第一步,识别对象。

    我们前面讲过,这个识别过程是在做微服务架构设计或拆分的时候就确定下来的。所以严格地讲,它不应该是运维阶段才被识别出来的,而是在之前设计阶段就被识别和确认下来,然后延伸到运维这里才对。

    • 第二步,识别对象属性。

    一个应用是业务的抽象逻辑,所以会有业务和运维两个维度的属性。业务属性在业务架构时确定,这主要是需要业务架构师去识别的,但是它的运维属性就应该由运维来识别了。

    下面我们一起来看一下,一个应用应该具备哪些基本的运维属性。

    * 应用的元数据属性,也就是简单直接地描述一个应用的信息,如应用名、应用 Owner、所属业务、是否核心链路应用以及应用功能说明等,这里的关键是应用名;

    * 应用代码属性,主要是编程语言及版本(决定了后续的构建方式),GitLab 地址;

    * 应用部署模式,涉及到基础软件包,如语言包 Java、C++、Go 等;容器如 Tomcat、JBoss 等;

    * 应用目录信息,如运维脚本目录、日志目录、应用包目录、临时目录等;

    * 应用运行脚本,如启停脚本、健康监测脚本;

    * 应用运行时的参数配置,如运行端口、Java 的 JVM 参数 GC 方式、新生代、老生代、永生代的堆内存大小配置等。

    从应用属性的视角,应该是下面这样一个视图(简单示例,不完整):

    • 第三步,识别对象关系。

    也就是应用与外部的关系,概括起来有三大类:

    第一类是应用与基础设施的关系,包括应用与资源、应用与 VIP、应用与 DNS 等等的关系;

    第二类是平行层面的应用与应用之间的关系,这里再细分下去就是应用服务或 API 与其它应用服务和 API 的依赖关系。如果你有相关的经验,应该会联想到全链路这样的工具平台了,没错,这样的平台就是用来处理应用间关系管理的。

    第三类是应用与各类基础组件之间的关系,比如应用与缓存,应用与消息、应用与 DB 等等之间的关系。

    • 第四步,识别应用的运维场景。

    这个就会比较多了,比如应用创建、持续集成、持续发布、扩容、缩容、监控等;再复杂点的比如容量评估、压测、限流降级等。

    好,这里我们先收一下,聚焦到标准化的层面,通过基础设施和应用层面标准化的示例,我想你应该可以掌握基本的建模思路了,这样的思路可以应用到其它的运维对象上 。

    同时,通过上面这些内容,你应该可以比较清晰地看到,我们的每一个运维操作都是针对某个运维对象的,这一点在规划运维体系时非常重要。

    而在这些对象中,应用又是重中之重,是微服务架构下的核心运维对象。

    从应用标准化的过程中我们也可以看到,针对应用的识别和建模,明显复杂很多。所以,后面我还会从理论和实践的角度来继续强化和分析这个概念。

    总结

    • 第一步,识别对象;
    • 第二步,识别对象属性;
    • 第三步,识别对象关系;
    • 第四步,识别对象场景。

    一个是从硬件进行识别,一个是从逻辑应用进行识别。

    标准化的建设是是我们后续一系列自动化和稳定性保障的基础

  • 相关阅读:
    4月21日Java作业
    5.14 Java作业
    第十周java作业
    4月30号作业
    第七周上机
    4.9Java
    通宵看剧有感
    error: pathspec 'xxxxxxxxx' did not match any file(s) known to git
    markdown格式测试
    博客申请通过啦
  • 原文地址:https://www.cnblogs.com/xiaobao2/p/11245874.html
Copyright © 2020-2023  润新知