你好,我是孔令飞,字节跳动云原生资深研发、前腾讯云原生技术专家。《企业级 Go 项目开发实战》、《从零开发企业级 Go 应用》图书作者,欢迎加入 孔令飞的云原生实战营,助你进阶 Go + 云原生高级开发工程师。
当前,很多公司的技术架构都在往云原生架构演进,而绝大部分的云原生核心项目是用 Go 来构建的,例如:Kubernetes、Docker 等。同时,国内腾讯、阿里等一线大厂也都在积极转 Go。伴随着 Go 的火热,各个公司对 Go 研发工程师的需求也越来越旺盛。
因此,很多开发者都在学习或使用 Go 来开发项目。但是,很多初学者在学习 Go 项目开发时,经常会面临一系列问题:
-
学不到最佳实践,能力提升有限:网上有很多介绍 Go 项目的构建方法,但大多并非最佳实践,学完也无法为能力和认知带来提升。
-
不懂如何从 0 到 1 开发一个 Go 项目:对 Go 开发的知识点和构建方法,掌握不够全面和深入,无法建立起有机的 Go 项目研发体系,落地到开发阶段,效率非常低下。
-
缺乏一线项目练手,难以检验学习效果:平常接触不到一线大厂的大型项目构建方法和研发经验,缺乏学习途径。
《Go语言项目开发实战》会围绕一个可部署、可运行的企业应用源码,遵循 Go 项目开发流程,为你系统、详细地讲解 Go 应用开发需要用到的技能点,让你掌握它们的具体构建方法、业界的最佳实践和一线开发经验。本项目用到了Go企业开发的大部分核心技能点,见下图:
同时,课程最终交付给你的这套代码能够满足绝大部分的企业应用开发场景,你可以基于它做二次开发,快速构建起你自己的企业应用。
课程模块设计
课程围绕一个可部署、可运行的企业应用源码展开,讲解开发流程涉及的知识和技能点——一方面让你从全局视野俯瞰整个 Go 企业应用开发流程,知道一个优秀企业应用涉及的技能点和开发工作,以及如何高效完成每个阶段的开发工作;另一方面,你可以深入每个技能点,掌握它们的具体构建方法、一线开发经验和业界最佳实践。
最终,他会交付给你一套优秀、可运行的企业应用代码,这套代码能满足大部分的企业应用开发场景,你可以基于它做二次开发,快速构建起你的企业应用。
详细说来,课程分为 6 个模块,模块 1 是实战环境准备,模块 2~6 会带你按照研发流程来实际构建一个应用:
-
实战准备。从准备一个实验环境开始,手把手帮你把实战项目部署好。在加深你对实战项目的理解的同时,也会教你一些部署的技能点,包括准备开发环境、制作 CA 证书、安装应用等。
-
实战第 1 站:规范设计。详细介绍开发中常见的 10 大规范,例如目录规范、日志规范、错误码规范、Commit 规范等。通过本模块,你能够学会如何设计常见的规范,进而为高效开发一个高质量、易阅读、易维护的 Go 应用打好基础。
-
实战第 2 站:基础功能设计或开发。教你设计或开发一些 Go 应用开发中的基础功能,例如日志包、错误包、错误码等。
-
实战第 3 站:服务开发。借助一个企业级 Go 项目代码的解析过程,详细讲解 Go 开发阶段的各个技能点,例如怎么设计和开发 API 服务、Go SDK、客户端工具等。
-
实战第 4 站:服务测试。围绕实战项目讲解如何进行单元测试、功能测试、性能分析和性能调优,最终让你交付一个性能和稳定性都经过充分测试的、生产级可用的服务。
-
实战第 5 站:服务部署。通过实际部署一个实战项目,教你如何部署一个高可用、安全、具备容灾能力,又可以轻松水平扩展的企业应用。同时,围绕 2 种部署方式:传统部署方式和容器化部署方式,对比它们在部署方法、复杂度和能力上的异同。
课程详细目录如下:
序号 | 标题名 |
课前必学 | |
开篇词 | 从 0 开始搭建一个企业级 Go 应用 |
01 | IAM系统概述:我们要实现什么样的 Go 项目? |
02 | 环境准备:如何安装和配置一个基本的 Go 开发环境? |
03 | 项目部署:如何快速部署 IAM 系统? |
实战第 1 站:规范设计 | |
04 | 规范设计(上):项目开发杂乱无章,如何规范? |
05 | 规范设计(下):Commit 风格迥异、难以阅读,如何规范? |
06 | 目录结构设计:如何组织一个可维护、可扩展的代码目录? |
07 | 工作流设计:合理的多人开发模式该怎么设计? |
08 | 研发流程设计(上):如何设计 Go 项目的开发流程? |
09 | 研发流程设计(下):如何管理应用的生命周期? |
10 | 设计方法:怎么写出优雅的 Go 项目? |
11 | Go常见的设计模式有哪些? |
实战第 2 站:基础功能设计或开发 | |
12 | API 风格(上):如何设计 RESTful API? |
13 | API 风格(下):RPC API 介绍 |
14 | 项目管理:如何编写高质量的 Makefile |
15 | 研发流程实战:IAM 项目是如何进行研发流程管理的? |
16 | 代码检查:如何进行静态代码检查? |
17 | API 文档:如何生成 Swagger API 文档 ? |
18 | 错误处理(上):如何设计一套科学的错误码? |
19 | 错误处理(下):如何设计错误包? |
20 | 日志处理(上):如何设计日志包并记录日志? |
21 | 日志处理(下):手把手带你从 0 编写一个日志包 |
22 | 应用构建三剑客:Pflag、Viper、Cobra 核心功能介绍 |
23 | 应用构建实战:如何构建一个优秀的企业应用框架? |
实战第 3 站:服务开发 | |
24 | Web 服务:Web 服务的核心功能有哪些,如何实现? |
25 | 认证机制:应用程序如何进行访问认证? |
26 | IAM 项目是如何设计和实现访问认证功能的? |
27 | 权限模型:5 大权限模型是如何进行资源授权的? |
28 | 控制流(上):通过 iam-apiserver 设计,看 Web 服务的构建 |
29 | 控制流(下):Web 服务核心功能实现讲解 |
30 | ORM:CURD 神器 GORM 包介绍及实战 |
31 | 通过 iam-authz-server 设计,看数据流服务的设计 |
32 | 数据处理:如何高效处理应用程序产生的数据? |
33 | SDK 设计(上):如何设计出一个优秀的 Go SDK? |
34 | SDK 设计(下):如何开发出一个 Go SDK? |
35 | 效率神器:如何设计和实现一个命令行客户端工具? |
实战第 4 站:服务测试 | |
36 | 代码测试(上):Go 语言单元测试、性能测试实战 |
37 | 代码测试(下):Go 语言其它测试类型及 IAM 测试介绍 |
38 | 性能分析(上):如何分析 Go 语言代码的性能? |
39 | 性能分析(下):API Server 性能测试实战 |
实战第 5 站:服务部署 | |
40 | 软件部署实战(上):部署方案及负载均衡、高可用组件介绍 |
41 | 软件部署实战(中):IAM 系统生产环境部署实战 |
42 | 软件部署实战(下):IAM系统安全加固、水平扩缩容实战 |
43 | 技术演进(上):虚拟化技术演进之路 |
44 | 技术演进(下):软件架构和应用生命周期技术演进之路 |
45 | 基于 kubernetes 的云原生架构设计 |
46 | 如何制作 Docker 镜像? |
47 | 如何编写 Kubernetes 资源定义文件? |
48 | 容器化(下):基于腾讯云 EKS 的容器化部署实战 |
49 | 服务编排(上):Helm 服务编排基础知识 |
50 | 服务编排(下):基于 Helm 的服务编排部署实战 |
51 | 基于 GitHub Actions 的 CI 实战 |
结束语 | 如何让自己的 Go 研发之路走得更远 |
作者介绍
孔令飞 腾讯云资深工程师,前Red Hat、联想云工程师。
拥有多年Go项目开发经验,参与过腾讯云云函数 SCF、腾讯游戏容器平台 TenC、腾讯游戏微服务中台等大型企业项目的开发,目前负责腾讯云容器服务 TKE 的相关研发工作,专注于云原生混合云领域的基础架构开发。同时,拥有大规模 Kubernetes 集群、微服务、API网关的研发和架构经验,对微服务、虚拟化、Kubernetes/Docker、Serverless 等云计算相关技术有较深的理解。
欢迎关注我的公众号【令飞编程】,会不定期分享 Go、云原生、AI 相关的技术栈。