构建 vs CICD
1. 构建(Build)
构建通常指把源代码、依赖和配置整合成可部署的产物(Artifact),可分几个层次:
源码管理层:Git、SVN 等管理版本。
构建工具层:
- Java:Maven、Gradle
- Python:setuptools、Poetry
- Golang:Go Modules
CI/CD 层:
- Jenkins、GitLab CI、GitHub Actions、ArgoCD
- 负责自动化编译、单元测试、打包、镜像构建等
容器化:
- Docker、Podman,把构建产物封装为容器镜像
- 镜像仓库管理:Harbor、Docker Hub、AWS ECR
产物管理:
- Maven Repo、PyPI、npm、内部制品库
- 保证构建可重复、版本可追溯
注意点:
- 构建要保证幂等性(每次构建相同源码输出相同产物)
- 构建速度优化(依赖缓存、增量构建)
- 安全性(依赖扫描、签名镜像)
2. 中间件(Middleware)
中间件是应用与操作系统或网络之间的中间层,用于服务能力扩展或解耦。常见分类:
(1) 消息队列
- Kafka、RabbitMQ、RocketMQ
- 用于异步处理、流量削峰、系统解耦
(2) 缓存 / 内存数据库
- Redis、Memcached
- 高速读写,降低 DB 压力
(3) 数据库中间件
- MySQL Proxy、Vitess、ShardingSphere
- 分库分表、读写分离、连接池管理
(4) 服务网关 / API 网关
- Nginx、Envoy、Kong、Spring Cloud Gateway
- 路由、负载均衡、流量控制、鉴权
(5) 配置中心 / 注册中心
- Nacos、Consul、Etcd
- 配置管理、服务发现、动态调整
(6) 日志 / 监控 / 链路追踪
- ELK(Elasticsearch+Logstash+Kibana)、Prometheus、Jaeger
- 中间件化处理日志、监控和追踪数据
3. 架构视角
在企业应用落地中,“构建 + 中间件”形成典型流水线:
flowchart LR
subgraph 源码层
A[Git/SVN]
end
subgraph 构建层
B[CI/CD 工具] --> C[单元测试 & 依赖管理]
C --> D[容器化 & 镜像构建]
D --> E[制品库/镜像仓库]
end
subgraph 中间件层
F[消息队列] --> G[异步任务]
H[缓存] --> I[数据库]
J[API 网关] --> K[应用服务]
L[配置中心] --> K
M[监控/日志/追踪] --> N[运维/报警]
end
E --> K
这个流程展示了从源码到生产环境的完整路径,以及中间件在流量、配置、缓存、监控上的支撑作用。