构建 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

这个流程展示了从源码到生产环境的完整路径,以及中间件在流量、配置、缓存、监控上的支撑作用。