73 lines
3.3 KiB
Markdown
73 lines
3.3 KiB
Markdown
# GoDDD:企业级 REST API 开发模板
|
||
|
||
## 项目简介
|
||
|
||
[GoDDD](https://github.com/ixugo/goddd) 是一个专注于 REST API 开发的企业级模板,旨在为 Go 开发者提供完整的 CURD 解决方案。它采用领域驱动设计(DDD)理念,通过模块化单体架构,让开发者能够快速开始项目,专注于业务开发。
|
||
|
||
## 为什么选择 GoDDD?
|
||
|
||
作为一名 Go 开发者,你是否遇到过这些问题:
|
||
|
||
- 项目结构混乱,随着业务增长变得越来越难以维护
|
||
- 新成员加入后需要很长时间才能理解项目
|
||
- 团队协作时经常出现代码冲突
|
||
- 需要重复编写大量相似的 CRUD 代码
|
||
- 错误处理方式不统一,日志记录混乱
|
||
- 项目启动时需要配置大量基础设施
|
||
|
||
GoDDD 正是为了解决这些问题而设计的。它提供了一个清晰的项目结构和完整的开发工具链,包括:
|
||
|
||
- 模块化的项目结构,让代码组织更清晰
|
||
- 统一的错误处理和日志记录
|
||
- 自动化的代码生成工具 [godddx](https://github.com/ixugo/godddx)
|
||
|
||
## 技术架构
|
||
|
||
### 架构设计理念
|
||
|
||
在传统的 MVC 单体架构中,随着业务规模的增长,项目会变得越来越臃肿,导致团队开发效率降低,新成员也难以快速理解整个系统。
|
||
|
||
GoDDD 采用模块化单体架构,这种架构既保留了单体架构的简单性,又吸收了微服务架构的模块化优势。通过将业务拆分为多个独立的领域模块(如用户领域、银行领域、商品领域等),每个领域都包含完整的:
|
||
|
||
- API(接口层)
|
||
- Core(业务核心)
|
||
- Store(数据存储)
|
||
|
||
这种设计让不同团队可以独立开发和维护各自的领域模块,有效减少代码冲突和开发混乱。与微服务相比,这种模块化方式使代码更简洁、更易于测试和维护。
|
||
|
||
更重要的是,当某个领域模块的规模超出预期时,团队可以轻松地将其提取为独立的微服务,实现平滑的架构演进。
|
||
|
||
### 技术栈
|
||
|
||
- **Web 框架**:Gin
|
||
- **ORM**:GORM
|
||
- **架构设计**:领域驱动设计(DDD)
|
||
- **代码生成**:支持自动生成代码
|
||
- **消息处理**:使用 [NSQite](github.com/ixugo/nsqite) 支持事件总线/事务消息
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
.
|
||
├── cmd # 可执行程序
|
||
├── configs # 配置文件
|
||
├── makefile # 提供构建/镜像/工具链等命令
|
||
├── internal # 私有业务
|
||
│ ├── conf # 配置模型
|
||
│ ├── core # 业务领域
|
||
| ├── domain # 公共领域,提供了一些模块化的组件,用于快速开发
|
||
| ├── data # 数据库初始化逻辑
|
||
│ └── web # 公共 Web 层
|
||
└── pkg # 依赖库
|
||
```
|
||
|
||
## 应用案例
|
||
|
||
- GB/T28181 视频平台(github.com/gowvp/gb28181)
|
||
|
||
## 总结
|
||
|
||
对于初级 Go 开发者来说,GoDDD 提供了一个清晰的项目结构和完整的开发工具链,让你能够快速上手企业级项目开发。它解决了项目结构混乱、团队协作困难、代码重复等常见问题,让开发者能够专注于业务逻辑的实现。
|
||
|
||
如果你正在寻找一个能够帮助你快速构建企业级 REST API 的框架,GoDDD 绝对值得一试。它的模块化设计和完整的工具链,能够显著提升你的开发效率和代码质量。
|