Files
biliup-next/docs/adr/0001-modular-monolith.md
2026-04-01 00:44:58 +08:00

65 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ADR 0001: Use A Modular Monolith As The Target Architecture
## Status
Accepted
## Context
当前项目由多个 Python 脚本、目录扫描逻辑、flag 文件和外部命令拼接而成。
主要问题:
- 状态不统一
- 配置不统一
- 重复逻辑多
- 扩展新功能需要继续增加脚本
- 运维和业务边界不清晰
重构目标要求:
- 可扩展
- 可配置
- 可观测
- 易部署
- 易文档化
## Decision
新系统采用模块化单体架构,而不是:
- 继续维护脚本集合
- 直接拆成微服务
## Rationale
选择模块化单体的原因:
- 当前系统规模和团队协作模式不需要微服务
- 单机部署和本地运维是核心需求
- 统一数据库、配置和日志对当前问题最直接有效
- 模块化单体足以提供清晰边界和未来插件扩展能力
## Consequences
正面影响:
- 部署简单
- 重构成本可控
- 便于引入统一状态机和管理 API
- 后续可以逐步插件化
负面影响:
- 需要严格维持模块边界,避免重新长成“大脚本”
- 单进程内错误隔离不如微服务天然
## Follow-Up Decisions
后续还需要补充的 ADR
- 是否使用 SQLite 作为主状态存储
- 是否引入事件总线
- 插件机制如何注册
- 管理台采用什么技术栈