跳到主要内容

11. 交付与运维

11.1 一键部署

部署方案

智能代码生成系统支持多种部署方式,包括Docker容器化部署、Kubernetes集群部署等。

Docker Compose部署

适合小规模部署和开发测试环境。

docker-compose.yml示例

version: '3.8'

services:
api:
image: codegen-api:latest
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/codegen
- REDIS_URL=redis://redis:6379/0
depends_on:
- db
- redis

db:
image: postgres:14
environment:
- POSTGRES_DB=codegen
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
volumes:
- db_data:/var/lib/postgresql/data

redis:
image: redis:7-alpine
volumes:
- redis_data:/data

vector-db:
image: milvusdb/milvus:latest
ports:
- "19530:19530"
volumes:
- milvus_data:/var/lib/milvus

volumes:
db_data:
redis_data:
milvus_data:

Kubernetes部署

适合生产环境大规模部署。

部署清单示例

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: codegen-api
spec:
replicas: 3
selector:
matchLabels:
app: codegen-api
template:
metadata:
labels:
app: codegen-api
spec:
containers:
- name: api
image: codegen-api:latest
ports:
- containerPort: 8000
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: codegen-secrets
key: database-url
resources:
requests:
cpu: "2"
memory: "4Gi"
limits:
cpu: "4"
memory: "8Gi"
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: codegen-api
spec:
selector:
app: codegen-api
ports:
- port: 80
targetPort: 8000
type: LoadBalancer

部署脚本

一键部署脚本

#!/bin/bash
# 一键部署脚本

set -e

echo "开始部署智能代码生成系统..."

# 1. 检查环境
echo "检查环境..."
check_environment() {
if ! command -v docker &> /dev/null; then
echo "错误: 未安装Docker"
exit 1
fi

if ! command -v docker-compose &> /dev/null; then
echo "错误: 未安装Docker Compose"
exit 1
fi
}

# 2. 加载环境变量
echo "加载环境变量..."
if [ -f .env ]; then
source .env
else
echo "警告: 未找到.env文件,使用默认配置"
fi

# 3. 创建必要的目录
echo "创建目录..."
mkdir -p data/postgres
mkdir -p data/redis
mkdir -p data/milvus
mkdir -p logs

# 4. 启动服务
echo "启动服务..."
docker-compose up -d

# 5. 等待服务就绪
echo "等待服务就绪..."
sleep 30

# 6. 健康检查
echo "健康检查..."
check_health() {
for i in {1..30}; do
if curl -f http://localhost:8000/health > /dev/null 2>&1; then
echo "服务健康检查通过"
return 0
fi
sleep 2
done
echo "错误: 服务健康检查失败"
return 1
}

check_health

# 7. 初始化数据
echo "初始化数据..."
docker-compose exec api python manage.py migrate
docker-compose exec api python manage.py init_data

echo "部署完成!"
echo "访问地址: http://localhost:8000"

环境配置

环境变量配置

# .env文件示例
# 数据库配置
DATABASE_URL=postgresql://user:password@db:5432/codegen

# Redis配置
REDIS_URL=redis://redis:6379/0

# 向量数据库配置
MILVUS_HOST=vector-db
MILVUS_PORT=19530

# API配置
API_HOST=0.0.0.0
API_PORT=8000

# 模型配置
OPENAI_API_KEY=sk-xxx
AZURE_OPENAI_ENDPOINT=https://xxx.openai.azure.com
AZURE_OPENAI_API_KEY=xxx

# 安全配置
SECRET_KEY=your-secret-key
JWT_SECRET=your-jwt-secret

# 日志配置
LOG_LEVEL=INFO
LOG_FILE=logs/app.log

配置文件

# config.yaml
database:
url: ${DATABASE_URL}
pool_size: 20
max_overflow: 10

redis:
url: ${REDIS_URL}
pool_size: 10

milvus:
host: ${MILVUS_HOST}
port: ${MILVUS_PORT}

models:
default: codellama-7b
available:
- codellama-7b
- codellama-34b
- gpt-4
- claude-3

cache:
enabled: true
ttl: 3600
max_size: 10000

monitoring:
enabled: true
prometheus_port: 9090

11.2 灾备与回滚

灾备方案

数据备份策略

  • 全量备份:每天凌晨进行全量备份
  • 增量备份:每小时进行增量备份
  • 备份存储:备份存储到对象存储(OSS/S3),保留30天
  • 备份验证:定期验证备份完整性

备份脚本

#!/bin/bash
# 数据备份脚本

BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# 数据库备份
echo "备份数据库..."
docker-compose exec db pg_dump -U user codegen > $BACKUP_DIR/db.sql

# Redis备份
echo "备份Redis..."
docker-compose exec redis redis-cli SAVE
docker cp codegen_redis_1:/data/dump.rdb $BACKUP_DIR/redis.rdb

# 向量数据库备份
echo "备份向量数据库..."
docker-compose exec vector-db milvus backup -b $BACKUP_DIR/milvus

# 上传到对象存储
echo "上传备份..."
ossutil cp -r $BACKUP_DIR oss://codegen-backup/$(date +%Y%m%d)/

echo "备份完成: $BACKUP_DIR"

灾备恢复流程

#!/bin/bash
# 灾备恢复脚本

BACKUP_DATE=$1
if [ -z "$BACKUP_DATE" ]; then
echo "用法: $0 YYYYMMDD"
exit 1
fi

echo "开始恢复备份: $BACKUP_DATE"

# 1. 停止服务
echo "停止服务..."
docker-compose down

# 2. 下载备份
echo "下载备份..."
ossutil cp -r oss://codegen-backup/$BACKUP_DATE/ /backup/restore/

# 3. 恢复数据库
echo "恢复数据库..."
docker-compose up -d db
sleep 10
docker-compose exec -T db psql -U user codegen < /backup/restore/db.sql

# 4. 恢复Redis
echo "恢复Redis..."
docker-compose up -d redis
docker cp /backup/restore/redis.rdb codegen_redis_1:/data/dump.rdb
docker-compose restart redis

# 5. 恢复向量数据库
echo "恢复向量数据库..."
docker-compose up -d vector-db
docker-compose exec vector-db milvus restore -b /backup/restore/milvus

# 6. 启动服务
echo "启动服务..."
docker-compose up -d

echo "恢复完成"

回滚机制

版本管理

使用Git管理代码版本,Docker镜像使用版本标签。

版本标签规则

  • 主版本号:重大变更(如v1.0.0)
  • 次版本号:功能更新(如v1.1.0)
  • 修订版本号:bug修复(如v1.1.1)

回滚流程

#!/bin/bash
# 回滚脚本

VERSION=$1
if [ -z "$VERSION" ]; then
echo "用法: $0 VERSION"
echo "可用版本:"
docker images | grep codegen-api
exit 1
fi

echo "回滚到版本: $VERSION"

# 1. 备份当前版本
echo "备份当前版本..."
docker tag codegen-api:latest codegen-api:backup-$(date +%Y%m%d-%H%M%S)

# 2. 拉取目标版本
echo "拉取目标版本..."
docker pull codegen-api:$VERSION

# 3. 更新服务
echo "更新服务..."
docker-compose up -d --no-deps api

# 4. 健康检查
echo "健康检查..."
sleep 10
if curl -f http://localhost:8000/health > /dev/null 2>&1; then
echo "回滚成功"
else
echo "回滚失败,恢复原版本..."
docker-compose up -d --no-deps api
exit 1
fi

数据备份

备份策略

  • 备份频率:全量备份每天1次,增量备份每小时1次
  • 备份保留:全量备份保留30天,增量备份保留7天
  • 备份验证:每周验证备份完整性
  • 异地备份:重要数据异地备份

备份监控

  • 备份状态监控:监控备份任务状态
  • 备份告警:备份失败时告警
  • 备份报告:定期生成备份报告

11.3 知识移交

文档体系

技术文档

  • 架构文档:系统架构设计文档
  • API文档:API接口文档
  • 部署文档:部署和运维文档
  • 开发文档:开发指南和最佳实践

运维文档

  • 运维手册:日常运维操作手册
  • 故障处理手册:常见故障处理方法
  • 应急预案:应急处理预案
  • 监控告警手册:监控和告警配置手册

用户文档

  • 用户手册:用户使用手册
  • 快速开始:快速开始指南
  • FAQ:常见问题解答
  • 最佳实践:使用最佳实践

培训计划

技术培训

  • 系统架构培训:系统架构和技术栈培训
  • 开发培训:开发规范和最佳实践培训
  • 运维培训:运维操作和故障处理培训

业务培训

  • 功能培训:系统功能和使用方法培训
  • 场景培训:典型使用场景培训
  • 最佳实践培训:最佳实践和案例分享

培训材料

  • 培训PPT:培训课件
  • 操作视频:操作演示视频
  • 实验环境:实验环境供练习
  • 考试题库:培训考试题库

技术支持

支持渠道

  • 技术支持邮箱support@codegen.com
  • 技术支持电话:400-xxx-xxxx
  • 在线客服:在线客服系统
  • 技术社区:技术社区论坛

支持级别

  • L1支持:基础问题解答,响应时间<4小时
  • L2支持:技术问题处理,响应时间<2小时
  • L3支持:紧急问题处理,响应时间<1小时
  • L4支持:现场支持,7×24小时

SLA承诺

  • 可用性:系统可用性≥99.9%
  • 响应时间:API响应时间P95<3s
  • 支持响应:L1支持响应时间<4小时
  • 问题解决:一般问题24小时内解决,紧急问题4小时内解决