# 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 绝对值得一试。它的模块化设计和完整的工具链,能够显著提升你的开发效率和代码质量。