---
title: 开发计划与改造计划
description: 基于现有代码与库表的分阶段开发与架构改造路线，确保当前可用并平滑演进到微服务。
---

# 开发计划与改造计划

> 目标：1) 开发初期简单可用；2) 满足未来微服务刚需；3) 现在就按微服务边界设计，后续平滑迁移。

## 一、范围与边界
- 保持现有表结构与命名（兼容成熟生态）；以 `site_id` 作为多租户键。
- 禁跨域直查库；跨域通过“域 SDK 接口/领域事件”交互。
- 统一文档：后端 `/docs` + `/docs-json`；文档站按前缀（/api、/adminapi）分组展示。

## 二、阶段规划
### M0（本周）：基线可用
- 代码
  - 域边界落地：IAM、Member、Settings、Upload、Notification、Schedule 分域，跨域走接口/事件。
  - 事件与任务：沿用 `jobs/jobs_failed` 作为 Outbox，统一事件载荷（eventType、aggregateId、tenantId、idempotencyKey、traceId）。
  - 健康检查：新增 `/healthz`、`/readyz`。
- 数据
  - 补热点索引：member、member_account_log、pay、pay_refund 等。
- 文档
  - 补充领域边界规范、数据一致性与 jobs 文档（已完成）。
- 交付物
  - 代码：QueueProvider/EventBus 接口（DB 适配），健康探针。
  - SQL：索引建议清单；不改表。

### M1（第1–2周）：事件流与任务队列 + 网关
- 事件总线
  - 接入 Kafka/Redpanda；主题与 Schema 规范（iam.user.v1、payment.order.v1）。
  - 首批事件：UserCreated、RoleChanged、PaymentSucceeded；Outbox→Kafka 投递。
- 任务队列
  - 接入 Redis（Bull/BullMQ）：通知、导出、延迟任务迁移至 Redis 队列。
- 网关（北向，已确定：Kong）
  - 形态：DB-less + decK（配置即代码）；如需持久化/Portal 再启用 Postgres。
  - 启用插件：JWT/HMAC、Rate Limiting、ACL、Request/Response Transformer、超时/重试、主动/被动健康检查、Prometheus 导出。
  - 安全：TLS 终止；必要时集成 OPA/WAF（可后续）。
- 观测
  - 接入 OpenTelemetry + Prometheus + Jaeger（核心链路埋点）；结构化日志包含 traceId、site_id；Kong 指标纳管。
- 交付物
  - 代码：KafkaAdapter、BullAdapter；事件订阅示例；Kong decK 配置模板。
  - 文档：事件与队列选型、Kong 部署与回滚、监控与告警说明。

### M2（第3–4周）：治理与发布
- CI/CD
  - Docker 多阶段构建，Helm/Kustomize 部署 dev/staging；灰度/回滚（可选 Argo Rollouts）。
- 配置与密钥
  - K8s ConfigMap/Secret；接入 Vault（密钥轮换）。
- 数据
  - 跨域聚合改读模型/缓存；离线报表接入 ES/OS（可选）。
- 插件生态
  - addons 注册入口：路由/权限/实体/迁移统一注册；聚合 Swagger Tag。
- 交付物
  - 流水线模板、Helm Chart、配置规范、扩展注册示例。

### M3（中期，按需推进）：微服务化准备
- SDK 双实现
  - 域 SDK 提供 inproc 与 http/kafka 双实现，配置切换不改业务层。
- 服务网格（可选）
  - Istio/Linkerd 上线（mTLS、熔断/限流、金丝雀策略统一）；Kong 作为北向 API Gateway 保持不变。
- 数据层
  - 按服务拥有数据库（Database per Service）试点域（如 IAM/Upload/Payment），CDC 构建读模型。

## 三、改造项清单（按优先级）
- P0（立即）
  - 引入 QueueProvider/EventBus 抽象（DB 适配）；补索引；健康探针；跨域禁直查。
- P1（两周内）
  - Kafka 事件总线、Redis 任务队列接入；Kong 上线并启用 JWT/限流/超时重试/Prometheus；核心链路观测。
- P2（一个月内）
  - CI/CD 与灰度；配置/密钥体系；读模型/缓存；addons 注册入口。
- P3（后续）
  - SDK 双实现；服务网格；按域迁移数据库；CDC/报表。

## 四、里程碑与验收
- M0：事件 Outbox 生效，索引上线，健康探针可用；跨域无直查。
- M1：Kafka/Redis 跑通三类事件与任务；Kong 限流/鉴权/重试启用并纳管指标；核心链路可观测。
- M2：CI/CD 标准化；灰度回滚可演示；扩展注册与文档完善。
- M3：选定一个域完成“单体内→独立服务”的验证（无业务改动）。

## 五、影响范围与风险
- 兼容性：不改表名/字段；以接口与事件替代直查，尽量避免破坏性变更。
- 运维复杂度：Kafka/Redis/Kong/观测提升复杂度；通过 Helm/decK/流水线模板与文档降低门槛。
- 数据一致性：以 Outbox + 幂等 + 重试保障；跨域强一致场景控制在单域内。

## 六、参考与落地资料
- 领域边界：`project/domain-boundaries.md`
- 一致性与 jobs：`project/data-consistency-and-jobs.md`
- 方案对比：`project/comparison.md`
- 路线图：`project/roadmap.md` 