项目背景#
该项目名称是IAM,IAM (ldentity and Access Management,身份识别与访问管理)系统是用 Go 语言编写的一个 Web 服务,用于给第三方用户提供访问控制服务。
IAM 系统可以帮用户解决的问题是:在特定的条件下,谁能够/不能够对哪些资源做哪些操作(Who is able to do what on something given some context),也即完成资源授权功能。
那么,IAM 系统是如何进行资源授权的呢? 下面我们通过 IAM 系统的资源授权的流程,来看下它是如何工作的,整个过程可以分为4步。

- 第1步: 用户需要提供昵称、密码、邮箱、电话等信息注册并登录到 IAM 系统,以此作为唯一的身份标识来访问 IAM 系统完成认证,这里是通过用户名和密码进行认证的。
- 第2步: 因为访问 IAM 的资源授权接口是通过密钥(secretiD/secretKev)的方式进行认证的,所以用户需要在IAM 中创建属于自己的密钥资源。
- 第3步: 因为 IAM 通过授权策略完成授权,所以用户需要在 IAM 中创建授权策略。
- 第4步: 请求 IAM 提供的授权接口,IAM 会根据用户的请求内容和授权策略来决定一个授权请求是否被允许。
我们可以看到,在上面的流程中,IAM 使用到了3种系统资源:用户(User)、密钥(Secret)、策略(Policy)。它们映射到程序设计中就是 3 种 RESTful 资源: ·用户(User):实现对用户的增、删、改、查、修改密码、批量修改等操作。 ·密钥(Secret):实现对密钥的增、删、改、查操作。 ·策略(Policy):实现对策略的增、删、改、查、批量删除操作。
系列简介#
在实际开发中,搭建一个完整、规范、可维护的 Go 项目需要考虑很多方面:项目结构如何设计?配置如何管理?日志如何规范?错误如何处理?API 如何设计?……这些问题往往困扰着初学者。
本系列文章将系统性地介绍如何从零开始构建一个生产级的 Go 项目,涵盖从项目初始化到最终部署的完整流程。通过学习本系列,你将掌握:
- ✅ 规范的项目结构设计 - 符合 Go 社区最佳实践
- ✅ 完善的基础设施搭建 - 配置管理、日志系统、错误处理
- ✅ Web 服务开发技巧 - 路由设计、中间件开发、优雅关闭
- ✅ 企业级开发实践 - 代码规范、测试覆盖
- ✅ 生产环境部署方案 - Docker 容器化
知识点#
按照开发顺序把它们总结在下面这张图中,图中的包含了Go项目开发中的大部分技能点。

构建流程#
本系列采用循序渐进的方式,按照实际项目开发的顺序组织内容。下图展示了完整的构建步骤,建议按照从上至下的顺序进行:

适合人群#
- 🎯 有一定 Go 语言基础,想要学习工程化实践的开发者
- 🎯 需要搭建生产级 Go 项目的开发者
- 🎯 想要了解企业级 Go 项目最佳实践的学习者
预备知识#
开始学习前,建议你已经掌握:
- Go 语言基础语法
- 基本的 HTTP 协议知识
- 基础的 Linux 命令操作