标准先行
标准先行
标准先行
虽然这个事情比较枯燥和繁琐,但是于纷繁复杂中抽象出标准规范的东西,是我们后续一系列自动化和稳定性保障的基础。万丈高楼平地起,所以请你一定不要忽略这个工作。
标准化流程:
(1)识别对象
(2)识别对象的属性
(3)识别对象间的关系
(4)识别对象的使用场景
基础设施层面的标准化
(1)识别实体对象,主要有服务器、网络、IDC、机柜、存储、配件等。
(2)识别对象的属性,比如服务器就会有 SN 序列号、IP 地址、厂商、硬件配置、维保信息等;
网络设备如交换机也会有厂商、型号、带宽等信息。
(3)识别对象之间的关联关系,比如服务器所在的机柜,虚拟机所在的宿主机、机柜所在 IDC 等简单关系;
复杂一点就会有核心交换机、汇聚交换机、接入交换机以及机柜和服务器之间的级联关系等,这些相对复杂一些,也就是我们常说的网络拓扑关系。
(4)识别出针对运维对象所实施的日常运维操作有哪些,也就是识别出运维场景是什么。
以服务器为例,我们针对服务器的日常操作有采购、入库、安装、配置、上线、下线、维修等等。
另外,可能还会有可视化和查询的场景,如拓扑关系的可视化和动态展示,交换机与服务器之间的级联关系、状态(正常 or 故障)的展示等,这样可以很直观地关注到资源节点的状态。
(5)对上述运维场景的自动化开发。
应用层面的标准化
逻辑对象:应用
(1)识别对象。这里的对象应该在微服务架构设计和拆分时就确定下来,然后延伸到运维这里,而不是由运维创造。
(2)识别对象属性。对象的属性分为业务属性和运维属性,业务属性由业务架构师去识别,运维属性由运维工程师去识别。
应用的元数据属性。如应用名、应用属主、所属业务、是否是核心链路应用、应用的功能说明。
应用的代码属性。如编程语言以及版本、GitLab地址等。
应用的部署模式。如基础软件包(JDK、C++、Go)、运行容器(Tomcat、JBoss)等。
应用的目录信息。如运维脚本目录、日志目录、应用包目录、临时目录等。
应用的运行脚本。如启停脚本、健康监测脚本。
应用运行时的参数配置。如运行端口、Java的JVM参数、GC方式、以及新生代、老生代、永生代的堆内存大小配置等。
(3)识别对象关系。也就是应用与外部的关系。
应用与基础设施的关系。比如应用与资源的关系、应用与VIP的关系、应用与DNS的关系。
应用与应用之间的关系(平行层面)。也就是A应用服务或API与B应用服务或API之间的依赖关系。
(全链路工具平台,用来管理应用间的关系)
应用与各类基础组件之间的关系。比如应用与缓存、应用与消息队列、应用与数据库之间的关系。
(4)识别应用对象的运维场景。
应用的创建
应用的持续集成
应用的持续发布
应用的扩容
应用的缩容
应用的监控
应用的容量评估
应用的压测
应用的限流降级
(5)针对这些运维场景进行自动化。