Go 语言项目开发实战

Go 语言项目开发实战 / 带你从0到1实现一个企业级 Go 项目

孔令飞 (腾讯云专家工程师,前Red Hat、联想云工程师)
  • 课程目录
  • 课程介绍
  • 在线阅读:开篇词 | 从 0 开始搭建一个企业级 Go 应用

    Go 为什么会变得这么火热呢?除了是一门非常优秀的语言以外,它也是云时代的语言。

  • 01 | IAM系统概述:我们要实现什么样的 Go 项目?

    今天,我带你了解 IAM 应用,说说它的优点,它能实现什么功能,以及它的架构和使用流程。

  • 02 | 环境准备:如何安装和配置一个基本的 Go 开发环境?

    今天,我来手把手带你配置好一个 Go 的开发环境,供你以后开发、编译用。

  • 03 | 项目部署:如何快速部署 IAM 系统?

    今天我们来部署和使用 IAM 系统。

  • 04 | 规范设计(上):项目开发杂乱无章,如何规范?

    一个项目的规范设计主要包括编码类和非编码类这两类规范。今天,我们一起学习开源规范、文档规范和版本规范。

  • 05 | 规范设计(下):commit 信息风格迥异、难以阅读,如何规范?

    Commit Message 的规范有哪些?

  • 06 | 目录结构设计:如何组织一个可维护、可扩展的代码目录?

    今天,我会带你学习设计代码的目录结构,先讲目录结构的设计思路,然后和你一起学习两种具体的目录结构。

  • 07 | 工作流设计:如何设计合理的多人开发模式?

    今天我们来聊聊如何设计合理的开发模式,我会为你介绍4种受欢迎的工作流,你可以选择其中一种作为你的工作流设计。

  • 08 | 研发流程设计(上):如何设计 Go 项目的开发流程?

    今天,你不仅能够了解到项目研发的通用流程,还可以获得设计、优化研发流程的抓手,基于这个流程来优化、定制自己需要的流程。

  • 09 | 研发流程设计(下):如何管理应用的生命周期?

    今天,我从技术演进的维度介绍了应用生命周期管理技术,这些技术可以提高应用的研发效率和质量。

  • 10 | 设计方法:怎么写出优雅的 Go 项目?

    今天,我会给你一套“写出优雅Go项目”的方法论,让你区别于绝大部分的Go开发者,从而在职场上建立自己的核心竞争力。

  • 11 | 设计模式:Go常用设计模式概述

    今天,我介绍了Go项目开发中6种常用的设计模式。每种设计模式解决某一类场景,你可以根据自己的需要进行选择。

  • 12 | API 风格(上):如何设计RESTful API?

    今天,我们一起来看下如何设计应用的API风格,我会介绍两种常用API风格中的一种,RESTful API。

  • 13 | API 风格(下):RPC API介绍

    今天,我给你介绍一种Go项目开发中常用的API风格,RPC,而且会重点介绍gRPC这一通用RPC框架。

  • 14 | 项目管理:如何编写高质量的Makefile?

    想要高效管理项目,使用Makefile是目前的最佳实践。今天,我会给你四个方法,帮你编写一个高质量的Makefile。

  • 15 | 研发流程实战:IAM项目是如何进行研发流程管理的?

    今天,我们以研发流程为主线,来看下 IAM 项目是如何通过Makefile 来高效管理项目的。

  • 16 | 代码检查:如何进行静态代码检查?

    今天,我想给你介绍一种目前使用最多,也最受欢迎的静态代码检查工具。

  • 17 | API 文档:如何生成 Swagger API 文档 ?

    今天我们来看下,如何用Swagger这个工具,生成易于共享且具有足够描述性的API文档。

  • 18 | 错误处理(上):如何设计一套科学的错误码?

    今天,我会给你详细介绍下,如何设计一套规范的、科学的错误码。

  • 19 | 错误处理(下):如何设计错误包?

    在Go项目开发中,错误是我们必须要处理的一个事项。今天,我来带你设计一个优秀的错误包。

  • 20 | 日志处理(上):如何设计日志包并记录日志?

    今天我来详细介绍下,如何设计优秀的日志包和日志记录规范,来快速地定位到问题,并获取足够的信息。

  • 21 | 日志处理(下):手把手教你从 0 编写一个日志包

    这一讲我们来了解目前业界有哪些优秀的开源日志包,以及手把手教你从 0 编写一个日志包

  • 22 | 应用构建三剑客:Pflag、Viper、Cobra 核心功能介绍

    今天,我来介绍下用来构建应用框架的Pflag、Viper和Cobra包。

  • 23 | 应用构建实战:如何构建一个优秀的企业应用框架?

    今天,我会带你找出服务的通用功能,并给出优雅的构建方式。

  • 24 | Web 服务:Web 服务核心功能有哪些,如何实现?

    Web服务的核心功能有哪些?如何开发这些功能?

  • 25 | 认证机制:应用程序如何进行访问认证?

    今天,我以HTTP服务为例,来给你介绍下当前常见的四种认证方法。

  • 26 | IAM项目是如何设计和实现访问认证功能的?

    今天我们来看下,IAM项目是如何设计和实现认证功能的。

  • 27 | 权限模型:5大权限模型是如何进行资源授权的?

    今天,我来介绍下业界优秀的权限模型,以及这些模型的适用场景,学习后你可以设计出更好的资源授权系统。

  • 28 | 控制流(上):通过iam-apiserver设计,看Web服务的构建

    今天,我主要向你介绍iam-apiserver的功能和使用方法,以及它的代码实现。

  • 29|控制流(下):iam-apiserver服务核心功能实现讲解

    今天,我们来看下 iam-apiserver 中的核心功能实现。在对这些核心功能的讲解中,我会向你传达我的程序设计思路。

  • 30 | ORM:CURD 神器 GORM 包介绍及实战

    今天,我来详细讲解下GORM的基础知识,并介绍iam-apiserver是如何使用GORM,对数据进行CURD操作的。

  • 31 | 数据流:通过iam-authz-server设计,看数据流服务的设计

    今天我们来看下,iam-authz-server是如何跟iam-apiserver共享代码的,以及iam-authz-server是如何保证API接口性能的。

  • 32 | 数据处理:如何高效处理应用程序产生的数据?

    今天,我来详细教你如何设计和落地一个数据采集服务,解决启停服务时采集的数据丢失、采集数据性能差等问题。

  • 33 | SDK 设计(上):如何设计出一个优秀的 Go SDK?

    通过提供SDK,可以提高API调用效率,减少API调用难度,所以大型应用通常都会提供SDK。今天,我主要介绍如何设计一个优秀的Go SDK。

  • 34 | SDK 设计(下):IAM项目Go SDK设计和实现

    今天,我会介绍Kubernetes client-go风格的SDK实现方式。和公有云厂商的SDK设计相比,client-go风格的SDK设计有很多优点。

  • 35 | 效率神器:如何设计和实现一个命令行客户端工具?

    今天,我会通过剖析iamctl命令行工具的实现,来介绍下如何实现一个优秀的客户端工具。

  • 36 | 代码测试(上):如何编写 Go 语言单元测试和性能测试用例?

    每种语言通常都有自己的测试包/模块,Go语言也不例外。在Go中,我们可以通过testing包对代码进行单元测试和性能测试。今天,我会用一些示例来讲解如何编写单元测试和性能测试用例。

  • 37 | 代码测试(下):Go 语言其他测试类型及 IAM 测试介绍

    今天,我来介绍下Go 语言中的示例测试、TestMain函数、Mock测试、Fake测试,并且介绍下IAM项目是如何编写和运行测试用例的。

  • 38|性能分析(上):如何分析 Go 语言代码的性能?

    在Go语言开发中,基本都是通过内置的pprof工具包来进行性能分析的。在进行性能分析时,我们会先生成性能数据文件,然后再通过pprof工具分析性能数据文件,从而分析代码的性能。今天我们就分别来看下这两步操作。

  • 39|性能分析(下):API Server性能测试和调优实战

    今天,我来介绍如何用wrk工具来测试API Server接口的性能,并给出分析方法和结果。

  • 40 | 软件部署实战(上):部署方案及负载均衡、高可用组件介绍

    今天,我主要讲跟IAM部署相关的两个组件,Nginx + Keepalived 的相关功能。

  • 41 | 软件部署实战(中):IAM 系统生产环境部署实战

    今天,我们来看下,如何使用Nginx和Keepalived来部署一个高可用的IAM应用。

  • 42 | 软件部署实战(下):IAM系统安全加固、水平扩缩容实战

    今天,我会带你加固IAM应用的安全性,并介绍如何具体执行扩缩容步骤。

  • 43|技术演进(上):虚拟化技术演进之路

    今天我采用技术演进的思路,来详细讲解下云原生技术栈的演进中的虚拟化技术演进部分。

  • 44|技术演进(下):软件架构和应用生命周期技术演进之路

    今天,我会介绍下应用维度和应用生命周期管理维度的技术演进。

  • 45|基于Kubernetes的云原生架构设计

    今天,我和你聊聊什么是云原生,以及如何设计一种基于Kubernetes的云原生部署架构。

  • 46 | 如何制作Docker镜像?

    今天,我会先讲解下Docker镜像的构建原理和方式,然后介绍Dockerfile的指令,以及如何编写Dockerfile文件。最后,介绍下编写Dockerfile文件时要遵循的一些最佳实践。

  • 47 | 如何编写Kubernetes资源定义文件?

    今天,我来讲解如何编写Kubernetes YAML文件。我会介绍K8s中最常用的四种资源(Pod、Deployment、Service、ConfigMap)的YAML定义的写法,以及一些技巧和工具。

  • 48 | 基于腾讯云 EKS 的容器化部署实战

    今天,我来手把手教你如何在Kubernetes集群中部署好IAM应用。因为步骤比较多,所以希望你能跟着我完成每一个操作步骤。

  • 49 | 服务编排(上):Helm服务编排基础知识

    今天,我来介绍下Helm的基础知识,并给你演示下如何基于Helm部署IAM应用。

  • 50 | 服务编排(下):基于Helm的服务编排部署实战

    今天我们来实战下,一起通过Helm部署一个IAM应用。

  • 51 | 基于 GitHub Actions 的 CI 实战

    今天,我会先介绍下GitHub Actions及其用法,再向你展示一个CI示例,最后给你演示下IAM是如何构建CI任务的。

  • 特别放送 | 给你一份清晰、可直接套用的Go编码规范

    今天,我会给你一份清晰、可直接套用的 Go 编码规范,帮助你编写一个高质量的 Go 应用。

  • 特别放送 | 给你一份Go项目中最常用的Makefile核心语法

    今天,我会重点介绍Makefile规则和一些Makefile核心语法知识,帮助你编写一个高质量的Makefile。

  • 特别放送 | Go Modules依赖包管理全讲

    今天,我会首先介绍下Go依赖包管理工具的历史,并详细介绍下目前官方推荐的依赖包管理方案Go Modules。

  • 特别放送 | IAM排障指南

    今天,我以iam-apiserver服务为例,向你介绍排障的基本流程:发现问题 -> 定位问题 -> 解决问题。

  • 特别放送 | Go Modules实战

    今天,我通过一个具体的案例,带你一步步学习Go Modules的常见用法以及操作方法。

  • 特别放送 | 分布式作业系统设计和实现

    在Go项目开发中,我们经常会需要执行一些间隔/定时任务,这时我们就需要一个作业系统,今天我们来看看如何实现。

  • 结束语 | 如何让自己的 Go 研发之路走得更远?

    陪你走完这一程Go学习之旅是我的荣幸,这门课虽然结束了,但你的学习和成长之路才刚刚开始。那么,如何在Go研发之路上走得更远呢?

  • 期末考试|《Go语言项目开发实战》满分试卷,等你来挑战!

    课程正文已经完结,我特别给你准备了一套结课测试题,帮你检验学习成果。

618 狂欢 | 课程专属口令


你将获得

  • 一线企业应用的最佳实践方式
  • 一套可执行、可复用的企业应用代码
  • 详解Go项目开发5大核心流程
  • 一次掌握Go项目开发常用技能点

讲师介绍

同时,拥有大规模 Kubernetes 集群、微服务、API网关的研发和架构经验,对微服务、虚拟化、Kubernetes/Docker、Serverless 等云计算相关技术有较深的理解。


课程介绍

当前,很多公司的技术架构都在往云原生架构演进,而绝大部分的云原生核心项目是用Go来构建的,例如:Kubernetes、Docker等。同时,国内腾讯、阿里等一线大厂也都在积极转Go。伴随着 Go 的火热,各个公司对 Go 研发工程师的需求也越来越旺盛。

因此,很多开发者都在学习或使用 Go 来开发项目。但是,很多初学者在学习 Go 项目开发时,经常会面临一系列问题:

  • Go 项目开发涉及的技能点太多,不知道如何去构建其中的技能点
  • 看了很多资料,还是没有掌握最佳实践,总也写不出优雅的代码
  • 学了很多 Go 开发相关的知识点、构建方法,但都不系统、不全面、不深入
    ……

为此,我们邀请孔令飞开设了一门 Go 语言项目实战课。他会围绕一个可部署、可运行的企业应用源码,遵循 Go 项目开发流程,为你系统、详细地讲解 Go 应用开发需要用到的技能点,让你掌握它们的具体构建方法、业界的最佳实践和一线开发经验。

同时,专栏最终交付给你的这套代码能够满足绝大部分的企业应用开发场景,你可以基于它做二次开发,快速构建起你自己的企业应用。

课程模块设计

整个专栏共划分为 6 个核心模块。

实战准备。从准备一个实验环境开始,手把手帮你把实战项目部署好。在加深你对实战项目的理解的同时,也会教你一些部署的技能点,包括准备开发环境、制作 CA 证书、安装应用等。

实战第 1 站:规范设计。详细介绍开发中常见的 10 大规范,例如目录规范、日志规范、错误码规范、Commit 规范等。通过本模块,你能够学会如何设计常见的规范,进而为高效开发一个高质量、易阅读、易维护的 Go 应用打好基础。

实战第 2 站:基础功能设计或开发。教你设计或开发一些 Go 应用开发中的基础功能,例如日志包、错误包、错误码等。

实战第 3 站:服务开发。借助一个企业级 Go 项目代码的解析过程,详细讲解 Go 开发阶段的各个技能点,例如怎么设计和开发 API 服务、Go SDK、客户端工具等。

实战第 4 站:服务测试。围绕实战项目讲解如何进行单元测试、功能测试、性能分析和性能调优,最终让你交付一个性能和稳定性都经过充分测试的、生产级可用的服务。

实战第 5 站:服务部署。通过实际部署一个实战项目,教你如何部署一个高可用、安全、具备容灾能力,又可以轻松水平扩展的企业应用。同时,围绕 2 种部署方式:传统部署方式和容器化部署方式,对比它们在部署方法、复杂度和能力上的异同。


课程目录


特别放送

免费领取福利



限时活动推荐


订阅须知

随机推荐

PROIRON俯卧撑支架性能评测,适不适合你!看质量怎么样!

艾美特除湿机买前一定要先知道这些情况!优缺点大全

博沃尼克防水雨鞋套男女加厚底雨鞋鞋套防滑雨靴套白色评测解读该...

俞兆林护肘运动保暖透气全方位评测分享!,买前必看

小探险家儿童平衡车测评大揭秘,多少钱?

SKG颈椎按摩器颈部按摩仪大家真实看法解读,评价质量实话实说