第4章:部署(Deploying)
一、导读
1.1 本章学习目标
第4章讲解微服务的部署策略。微服务的独立部署是其核心优势之一,但也带来了部署复杂性的挑战。
1.2 为什么第四章如此重要
部署是微服务价值实现的关键。如果部署过程痛苦且缓慢,微服务的独立部署优势就无法发挥。
1.3 核心问题引导
如何实现微服务的独立部署?
CI/CD 管道如何设计?
容器化如何简化部署?
基础设施即代码是什么?
二、核心概念详解
4.1 CI/CD 管道
持续集成(CI):
- 代码提交 → 自动构建 → 自动测试 → 代码质量检查
持续部署(CD):
- 构建产物 → 部署到测试环境 → 自动化验收测试 → 部署到生产环境
关键原则:
- 每次提交都触发构建
- 构建必须快速(< 10分钟)
- 测试必须可靠
- 部署必须可重复4.2 容器化
Docker 容器化微服务:
- 每个服务一个 Docker 镜像
- 镜像包含所有依赖
- 环境一致性:开发 = 测试 = 生产
- 快速启动和停止
Kubernetes 编排:
- 自动调度
- 自动伸缩
- 服务发现和负载均衡
- 滚动更新和回滚4.3 基础设施即代码
使用代码管理基础设施:
- Terraform:云资源管理
- Ansible:配置管理
- Helm:Kubernetes 应用管理
优势:
- 可重复:相同代码创建相同环境
- 可审计:所有变更都有记录
- 可版本化:使用 Git 管理三、实战案例
4.1 CI/CD 管道设计
yaml
# GitHub Actions 示例
name: CI/CD Pipeline
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: ./gradlew build
- name: Test
run: ./gradlew test
- name: Docker Build
run: docker build -t myapp:${{ github.sha }} .
- name: Deploy
run: kubectl set image deployment/myapp myapp=myapp:${{ github.sha }}四、本章小结
微服务的部署需要完善的 CI/CD 管道、容器化技术和基础设施即代码。这些工具和实践使独立部署成为可能。
五、思考与练习
如何设计微服务的 CI/CD 管道?
容器化有什么优势?
基础设施即代码如何实践?
如何处理微服务的配置管理?
如何实现零停机部署?