运维体系建设-提纲

2019-05-02

标准化建设

标准化的套路

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

基础设施层面的标准化

  • 第一步,识别实体对象,主要有服务器、网络、IDC、机柜、存储、配件等。
  • 第二步,识别对象的属性,比如服务器就会有 SN 序列号、IP 地址、厂商、硬件配置(如 CPU、内存、硬盘、网卡、PCIE、BIOS)、维保信息等;网络设备如交换机也会有厂商、型号、带宽等信息。
  • 第三步,识别对象之间的关联关系,比如服务器所在的机柜,虚拟机所在的宿主机、机柜所在 IDC 等简单关系;复杂一点就会有核心交换机、汇聚交换机、接入交换机以及机柜和服务器之间的级联关系等,这些相对复杂一些,也就是我们常说的网络拓扑关系。
  • 第四步,还是以服务器为例,我们针对服务器的日常操作有采购、入库、安装、配置、上线、下线、维修等等。另外,可能还会有可视化和查询的场景,如拓扑关系的可视化和动态展示,交换机与服务器之间的级联关系、状态(正常 or 故障)的展示等,这样可以很直观地关注到资源节点的状态。
    基础设施.jpeg

应用层面的标准化

  • 第一步,识别对象。
    我们前面讲过,这个识别过程是在做微服务架构设计或拆分的时候就确定下来的。所以严格地讲,它不应该是运维阶段才被识别出来的,而是在之前设计阶段就被识别和确认下来,然后延伸到运维这里才对。
  • 第二步,识别对象属性。
    一个应用是业务的抽象逻辑,所以会有业务和运维两个维度的属性。业务属性在业务架构时确定,这主要是需要业务架构师去识别的,但是它的运维属性就应该由运维来识别了。
    • 应用的元数据属性,也就是简单直接地描述一个应用的信息,如应用名、应用 Owner、所属业务、是否核心链路应用以及应用功能说明等,这里的关键是应用名;
    • 应用代码属性,主要是编程语言及版本(决定了后续的构建方式),GitLab 地址;
    • 应用部署模式,涉及到基础软件包,如语言包 Java、C++、Go 等;容器如 Tomcat、JBoss 等;
    • 应用目录信息,如运维脚本目录、日志目录、应用包目录、临时目录等;
    • 应用运行脚本,如启停脚本、健康监测脚本;
    • 应用运行时的参数配置,如运行端口、Java 的 JVM 参数 GC 方式、新生代、老生代、永生代的堆内存大小配置等。
  • 第三步,识别对象关系
    也就是应用与外部的关系,概括起来有三大类:
    • 第一类是应用与基础设施的关系,包括应用与资源、应用与 VIP、应用与 DNS 等等的关系;
    • 第二类是平行层面的应用与应用之间的关系,这里再细分下去就是应用服务或 API 与其它应用服务和 API 的依赖关系。如果你有相关的经验,应该会联想到全链路这样的工具平台了,没错,这样的平台就是用来处理应用间关系管理的。
    • 第三类是应用与各类基础组件之间的关系,比如应用与缓存,应用与消息、应用与 DB 等等之间的关系。
  • 第四步,识别应用的运维场景。
    比如应用创建、持续集成、持续发布、扩容、缩容、监控等;再复杂点的比如容量评估、压测、限流降级等。
    应用属性.jpg

基础架构的标准化及服务化

常见的分布式基础架构组件

  • 分布式服务化框架 ,业界开源产品比如Dubbo、Spring Cloud这样的框架;
  • 分布式缓存及框架 ,业界如Redis、Memcache,框架如Codis和Redis Cluster;
  • 数据库及分布式数据库框架 ,这两者是密不可分的,数据库如MySQL,MariaDB等,中间件如淘宝TDDL(现在叫DRDS)、Sharding-JDBC等。当前非常火热的TiDB,就直接实现了分布式数据库的功能,不再额外选择中间件框架;
  • 分布式的消息中间件 ,业界如Kafka、RabbitMQ、ActiveMQ以及RocketMQ等;
  • 前端接入层部分 ,如四层负载LVS,七层负载Nginx或Apache,再比如硬件负载F5等。

选型的原则:
先组织选型调研,然后进行方案验证和对比,最后确认统一的解决方案。

  • 每种基础组件只允许一种选型,至少满足90%的应用场景
  • 遵循生态本身的标准

环境建设

环境建设关键点

  • 网段规划
  • 服务化框架的单元化调用
  • 环境域名的访问策略
  • 自动化管理

线下环境

  • 集成测试环境
  • 开发测试环境
  • 项目环境

线上环境

  • 生产环境
  • 预发布环境
  • 灰度环境
  • 办公网生产环境

持续交付建设

配置管理

  • 版本控制
  • 依赖配置
  • 软件配置
    • 代码配置
    • 应用配置
  • 环境配置

需求拆解

提交管理

  • 开发协作模式
    • 主干开发模式
    • gitflow开发模式
    • 分支开发模式
  • 构建环节

编译打包

自动化测试

部署发包

稳定性建设

容量规划

压测系统建设

限流降级

开关预案

全链路追踪

故障管理

故障定级标准

故障定责标准

故障应急

故障复盘

安全体系建设

管理安全

  • 人员意识
  • 流程制度

技术安全

  • 物理安全
  • 主机安全
  • 网络安全
  • 应用安全
  • 数据安全

运维组织架构建设

  • 基础运维
  • 应用运维
  • 数据运维
  • 运维开发

标题:运维体系建设-提纲
作者:fish2018
地址:http://devopser.org/articles/2019/04/21/1555850522941.html