开发运维一体化 - 从代码到生产环境
DevOps(Development + Operations)是一种软件开发方法论, 强调开发团队与运维团队的紧密协作,通过自动化工具和流程,实现快速、频繁、可靠的软件交付。
在AI时代,DevOps尤为重要:模型训练自动化、快速迭代部署、 弹性资源调度、实时监控反馈是AI应用成功的关键。
Rapid Delivery
从开发到上线的周期缩短
Continuous Integration
频繁合并代码并自动测试
Collaboration Culture
打破开发与运维的壁垒
1. 版本控制
代码提交与审查
2. 持续集成
自动构建与测试
3. 阶段部署
测试环境验证
4. 生产发布
上线与监控
镜像(Image)
只读模板,包含运行时环境
容器(Container)
镜像的运行实例,可读写
仓库(Registry)
存储和分发镜像
容器化应用
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "app.py"]
docker build -t myapp:v1.0 .
docker run -p 8000:8000 myapp:v1.0
docker ps | docker logs
AI应用:将AI模型服务打包成Docker镜像,实现一致的运行环境
容器编排
apiVersion: apps/v1
kind: Deployment
metadata:
name: ai-model-service
spec:
replicas: 3
selector:
matchLabels:
app: ai-model
template:
spec:
containers:
- name: model
image: mymodel:v1.0
ports:
- containerPort: 8000
kubectl apply -f deploy.yaml
kubectl get pods | logs
kubectl scale --replicas=5
AI应用:K8s自动调度GPU资源,实现模型服务的弹性伸缩
优点:快速回滚,零停机
缺点:需要2倍资源
适合:关键业务系统
优点:风险可控,渐进式
缺点:需要流量控制能力
适合:大规模用户系统
优点:资源利用高
缺点:更新较慢
适合:K8s默认策略
作用:量化系统状态
如:CPU 80%、QPS 1000、延迟 50ms
作用:详细事件记录
如:错误堆栈、用户操作、系统事件
作用:请求调用链
如:请求经过哪些服务,每步耗时
处理请求所需时间
目标:P99 < 100ms
系统接收的请求量
指标:QPS/RPS
请求失败的比率
目标:错误率 < 0.1%
服务资源使用率
关注:CPU、内存、磁盘
服务不可用、数据丢失
→ 立即处理,电话通知
性能严重下降、部分功能异常
→ 1小时内响应
资源使用率高、轻微性能问题
→ 工作时间处理
信息通知、优化建议
→ 可延后处理
将模型打包成Docker镜像
根据负载动态调整实例
新旧模型版本对比
实时跟踪模型性能
管理模型迭代历史
高效利用昂贵的GPU
CI/CD
完整DevOps
自动化
容器化
编排
监控
可视化
日志
IaC
自动化
密钥管理
GitOps
搭建自己的CI/CD流水线,部署一个完整应用到K8s
先掌握Docker和K8s,这是云原生的基础
不只是工具,更是开发与运维的协作方式