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
- [ ] Secret 检测:Gitleaks/TruffleHog
- [ ] 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)
- 追踪:Backlog → In Progress → Done
改进 OKR 示例
Objective: 提升交付效能
Key Results:
- 部署频率从周提升到日
- MTTR 从 4h 降低到 1h
- 变更失败率从 15% 降低到 5%
- 构建时间从 20min 降低到 10min
下一步