DevOps 标准化

DevOps 标准化是将人员、流程、技术工具统一协调的实践,建立可重复、可度量、可改进的交付能力。本节涵盖 DevOps 成熟度评估、标准化流程、度量指标和组织转型。

DevOps 成熟度模型

成熟度级别

级别 名称 特征
L1: 初始级 手工运维 手动部署,环境不一致,无监控
L2: 基础级 初步自动化 有 CI,基础测试,文档不完整
L3: 规范级 标准化流程 完整 CI/CD,环境标准化,有度量
L4: 量化级 数据驱动 SLO/SLI,自动化质量门禁,效能度量
L5: 优化级 持续改进 Chaos Engineering,AI 运维,自优化

成熟度评估维度

维度 L1 L2 L3 L4 L5
流程标准化 部分 完整 量化 优化
自动化程度 <20% 40% 70% 90% 99%
部署频率 月/季度
变更前置时间 小时 分钟
MTTR 小时 小时 分钟
发布成功率 <50% 70% 85% 95% 99%+

CI/CD 标准化

标准化流程图


Code → Commit → Build → Test → Scan → Package → Staging → Pre-Prod → Production
  │      │       │      │      │       │         │         │          │
  └──Git─┘      │      │      │       │         │         │          │
          Hooks │      │      │       │         │         │          │
           Auto │      │      │       │         │         │          │
               Gate│      │       │         │         │          │
              PR  │      │       │         │         │          │
            Review      │       │         │         │          │
                   Auto  │       │         │         │          │
                  Smoke  │       │         │         │          │
                     Unit│       │         │         │          │
                    Integ│       │         │         │          │
                       Scan│       │         │          │
                    Image│       │         │          │
                   Verify│       │         │          │
                          Helm│         │          │
                         Chart│         │          │
                            Promote│         │          │
                           Manual│          │          │
                           Gate │          │          │
                              Deploy│          │          │
                             Verify│          │          │
                                Monitor◀─────────┘          │

Pipeline 标准模板


# 标准 CI/CD Pipeline
stages:
  - checkout
  - build
  - test
  - security
  - package
  - deploy-staging
  - verify-staging
  - deploy-production
  - verify-production

variables:
  DOCKER_REGISTRY: registry.example.com
  HELM_REPO: charts.example.com
  SonarHost: https://sonar.example.com

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      variables:
        TARGET_ENV: "dev"
    - if: $CI_COMMIT_BRANCH == "main"
      variables:
        TARGET_ENV: "staging"
    - if: $CI_COMMIT_TAG
      variables:
        TARGET_ENV: "production"

技术栈标准化

语言运行时标准

语言 版本 构建工具 测试框架
Java 17/21 Maven 3.9+ / Gradle 8+ JUnit 5
Node.js 20 LTS npm 10+ Jest/Vitest
Python 3.11+ Poetry/Pipenv pytest
Go 1.22+ go build go test
Rust 1.75+ Cargo cargo test

容器标准


# 标准 Dockerfile 模板
FROM eclipse-temurin:17-jdk-alpine AS builder

WORKDIR /build

# 复制依赖文件先下载,避免每次修改源码都重新下载
COPY pom.xml .
RUN mvn dependency:go-offline -B

# 复制源码并构建
COPY src ./src
RUN mvn package -DskipTests

# 运行镜像
FROM eclipse-temurin:17-jre-alpine

RUN addgroup -g 1001 -S appgroup && \
    adduser -u 1001 -S appuser -G appgroup

WORKDIR /home/appuser

COPY --from=builder /build/target/*.jar app.jar

USER appuser

ENTRYPOINT ["java", "-jar", "app.jar"]

Kubernetes 资源标准


# 标准 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app.kubernetes.io/name: myapp
    app.kubernetes.io/version: "1.0.0"
    app.kubernetes.io/managed-by: ArgoCD
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: myapp
  template:
    metadata:
      labels:
        app.kubernetes.io/name: myapp
        app.kubernetes.io/version: "1.0.0"
    spec:
      terminationGracePeriodSeconds: 60
      containers:
        - name: myapp
          image: myapp:1.0.0
          ports:
            - name: http
              containerPort: 8080
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            httpGet:
              path: /health/live
              port: http
            initialDelaySeconds: 10
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /health/ready
              port: http
            initialDelaySeconds: 5
            periodSeconds: 5
          lifecycle:
            preStop:
              exec:
                command: ["/bin/sh", "-c", "sleep 10"]

环境管理标准

环境定义

环境 用途 数据 自动部署 审批
Dev 开发调试 Mock/Sample Yes No
Test 功能测试 匿名数据 Yes No
Staging 预生产 脱敏数据 Yes No
Pre-Prod 灰度验证 生产镜像 Yes Lead
Production 最终用户 真实数据 No Manager

配置管理矩阵

配置类型 存储位置 版本控制 管理方式
代码 Git Yes PR 审查
Helm Values Git Yes GitOps
Secret Vault No IRSA/Secret Manager
Feature Flag LaunchDarkly No SDK
ConfigMap Git + Kustomize Yes ArgoCD

度量指标(DORA)

四大关键指标

指标 定义 Elite High Medium Low
部署频率 生产部署频率 按需 日/周 周/月 月/季
变更前置时间 Commit 到 Production <1h 1天-1周 1周-1月 >1月
MTTR 故障恢复时间 <1h <1天 1天-1周 >1周
变更失败率 变更导致的失败 0-5% 5-10% 10-15% >15%

辅助指标


metrics:
  - name: pipeline-success-rate
    description: Pipeline success rate
    target: "> 90%"
  - name: test-coverage
    description: Code test coverage
    target: "> 80%"
  - name: build-duration
    description: Average build time
    target: "< 15 min"
  - name: deployment-duration
    description: Deployment time
    target: "< 5 min"
  - name: mean-time-to-detect
    description: Average time to detect issue
    target: "< 5 min"

安全标准(DevSecOps)

安全左移


Plan → Code → Build → Test → Deploy → Operate → Monitor
  │      │      │       │       │        │         │
 SAST   SAST   SAST   DAST    IAST    Runtime   │
        Dependency   Container  Runtime   │
           Scan       Scan     Protection │

安全检查清单

  • [ ] 代码扫描(SAST):Semgrep/Checkmarx
  • [ ] 依赖扫描(SCA):Trivy/Snyk/Dependabot
  • [ ] 镜像扫描:Trivy/Hadolint
  • [ ] 容器基线:CIS Benchmark
  • [ ] Secret 检测:Gitleaks/TruffleHog
  • [ ] IaC 扫描:Checkov/Tfsec
  • [ ] DAST:OWASP ZAP/Nessus
  • [ ] 漏洞修复 SLA:Critical < 24h,High < 7d

文档标准

必需文档

文档 位置 更新频率 负责人
README.md Repo Root PR 时 开发
ARCHITECTURE.md Docs 季度 架构师
API 文档 Swagger/OpenAPI CI 自动 开发
Runbook Wiki/Confluence 变更时 SRE
Onboarding Wiki 季度 Team Lead

README 模板


# MyApp

应用描述

## 快速开始

## 架构

## 开发指南

## 部署

## 配置

## 监控

## License

培训与认证

技能矩阵

角色 必需技能 推荐技能
Dev Git, CI/CD, Docker, K8s 基础 GitOps, Security
Sr. Dev Dev + K8s 进阶, Observability Chaos Engineering
SRE K8s, Observability, Incident Response Platform Engineering
Platform K8s, IaC, Security, DevOps FinOps, AI/ML

认证路径


Junior Dev → Mid Dev → Sr. Dev → Staff → Principal
    │           │          │          │
    └───────────┴──────────┴──────────► DevOps Champion
                                        │
                                  Platform Engineer
                                        │
                                    SRE / FinOps

持续改进

回顾会议(Retrospective)

  • 频率:每两周
  • 内容:识别改进点,设定 Action Items
  • 追踪:Backlog → In Progress → Done

改进 OKR 示例


Objective: 提升交付效能
Key Results:
- 部署频率从周提升到日
- MTTR 从 4h 降低到 1h
- 变更失败率从 15% 降低到 5%
- 构建时间从 20min 降低到 10min

下一步