基本信息

【插图】

编辑推荐
(1)作者背景资深:作者是腾讯云技术专家,有超过7年的大型Go项目开发经验。
(2)内容得到验证:初稿源于极客时间专栏,超过25000人付费学习并好评,内容全面升级和补充。
(3)大厂经验总结:手把手教你互联网大厂Go项目开发经验和方法。
(4)内容抽丝剥茧:抽丝剥茧讲解Go项目开发全流程和涉及知识点,涵盖项目的设计、管理、开发、测试、部署全部环节。
(5)蕞佳实践设计:书中涉及大部分Go知识点,知识点都朝着蕞佳实践方向是设计,遵循Go 设计模式、Go 开发规范、Go 蕞佳实践、Go简洁架构,使用业界采纳度蕞高的Go包。
(6)提供项目源码:一个案例贯穿全书,提供可部署、可运行案例源码,可二次开发,可在生产中复用。
(7)知名专家推荐:极客邦科技创始人、腾讯云云原生产品总经理等专家联袂推荐。
内容简介
计算机书籍
这是一本手把手教读者如何零基础快速掌握企业级Go项目全流程开发的实战性著作。内容初稿源于极客时间上的专栏(有超过25000人付费学习),图书内容在专栏的基础上做了全面的更新和大量的补充。
作者是腾讯云的技术专家,有多年的企业级Go项目开发经验。全书围绕一个可部署、可运行的企业级Go应用(附源码,可二次开发)展开,覆盖项目全生命周期的所有环节,不仅将每个环节涉及的原理、步骤讲解得非常详细,而且把项目涉及的Go语言知识点全部娓娓道来。每个知识点都朝着*佳实践方向去设计,采用了业界共识程度*高的Go包、Go设计模式、Go开发规范、Go简洁架构等,不仅能让读者事半功倍地掌握企业级Go项目的开发方法,而且能学到一线大厂的*佳实践。
本书内容翔实,篇幅较大,一共31章,分为六个部分:第一部分是项目开始前的准备工作,包括贯穿全书的实战项目IAM的介绍与部署,以及Go开发环境的搭建;第二至六部分详细讲解了项目的设计、管理、开发、测试、部署等。包含了规范设计、文档编写、开发流程管理、功能设计与实现、项目测试、性能优化、高可用、高安全、水平扩展等方方面面。旨在帮助读者彻底学会如何构建企业级 Go 项目,并解决 Go 项目开发所面临的各类问题。
作译者
腾讯云容器技术专家,曾就职于联想和Red Hat,拥有多年Go项目开发和管理经验。
云计算技术专家,在云计算领域有非常丰富的实践经验。Kubernetes社区贡献者,对Kubernetes、Docker、Serverless、微服务等技术有深入的理解。
腾讯学院特约讲师,极客时间《Go 语言项目开发实战》专栏作者,掘金《基于 Go 语言构建企业级的 RESTful API 服务》专栏作者。
目录
第1章 Go开发环境准备2
1.1 机器选择2
1.1.1 开发机选择3
1.1.2 办公机选择3
1.2 Windows终端模拟器安装和配置3
1.3 Linux服务器申请和配置4
1.3.1 Linux服务器申请4
1.3.2 登录Linux服务器5
1.3.3 Linux服务器配置6
1.3.4 依赖安装和配置8
1.4 Go编译环境安装和配置9
1.4.1 Go编译工具安装和配置10
1.4.2 Protobuf编译环境安装11
1.5 Go IDE安装和配置12
1.6 本章总结14
第2章 快速部署IAM系统15
2.1 为什么选择IAM系统作为实战项目15
2.2 IAM系统概述16
2.2.1 IAM资源授权流程16
前言
最近几年,我发现腾讯很多团队都开始将Go语言作为开发语言,并且在2022年,Go首次超越C++成为腾讯最热门语言。其实,不只腾讯,像阿里、华为和百度这类国内一线大厂也都在积极使用Go。甚至,不少团队的所有项目都是用Go构建的。随之而来的是,各公司对Go开发工程师的需求越来越旺盛。那么,Go为什么会变得这么火热呢?我认为,原因主要体现在两个方面。
一方面,Go是一门非常优秀的语言,它具有很多核心优势,例如:语言简单,从语言层面支持并发编程,可跨平台编译,自带垃圾回收机制,等等。这也是这些团队选择Go的最根本原因。
另一方面,Go是云时代的语言。为什么这么说呢?下面,我来详细说明。
随着云计算平台的逐渐成熟,应用上云已经成为一个不可逆转的趋势,很多公司都选择将基础架构、业务架构云化,例如阿里、腾讯都在将公司内部业务全面云化。可以说,全面云化已经是公司层面的核心KPI,我们甚至可以认为以后所有的技术都会围绕着云来构建。
云目前是朝着云原生架构的方向演进,而云原生架构中具有统治力(影响力)的项目绝大部分又是用Go构建的。我们从下面这幅云原生技术栈语言组成图中可以看到,有63%的云原生项目都是基于Go语言构建的。
完整的云原生技术栈可参考云原生技术图谱,因此,实现基础架构、业务架构云化,离不开对这些云原生开源项目的学习、改造。而一个团队为了节省成本,技术栈最好是统一的。既然一定要会Go语言,而且它这么优秀,那最好的方式就是将整个团队的技术栈都基于Go语言构建,这也是Go之所以重要的另一个原因。
至于未来云的演进方向,我认为仍然会基于云原生架构来演进。所以,即使在未来,Go的地位仍然举足轻重,学习Go势在必行。
但很多开发者在用Go语言进行项目开发时会面临一系列问题。
学习Go项目开发面临的问题
我辅导过不少刚接触Go语言的开发者,他们为了学习Go项目开发,会上网搜很多与Go相关的技术文章,也花了很多时间去学习。但是,我在代码审核时发现他们写的代码存在很多问题。
比如,有个开发者写的代码依赖数据库连接,不编写单元测试。细问之后,我发现他参考的文章没有提示通过接口将数据库层与业务层解耦。
再比如,一些开发者开发的项目很难维护,在项目中出现了大量的Go包,如common、util、const。只看包名,我完全不知道包所实现的功能是什么,询问之后才发现开发者是参考了一个带有dao、model目录的Java项目。
这些问题其实只是冰山一角。总的来说,我们在学习Go项目开发时会面临以下4类问题。
知识盲区:Go项目开发会涉及很多知识点,但是自己对这些知识点却一无所知;想要学习,却发现网上很多文章结构混乱、讲解不透彻,想要搜索、找出优秀的文章,要花费很多时间,劳神劳力。
学不到最佳实践,能力提升有限:网上有很多文章介绍Go项目的构建方法,但大部分文章介绍的方法并不是最佳实践,学完之后不能在能力和认知上带来有效提升,还需要自己花时间整理,事倍功半。
不知道如何完整地开发一个Go项目:学了很多Go开发相关的知识点、构建方法,但都不成体系,既不全面也不深入。学完后,自己并不能把它们有机地结合成一个Go项目开发体系,真正实践时还是一团乱,效率也很低。
缺乏一线项目练手,很难检验学习成果:为了避免闭门造车,我们肯定想学习一线大厂的大型项目构建和开发经验,在学习过程中逐步检验自己的学习成果,但自己平时很难接触到这样的项目,没有这样的学习途径。
为了解决这些问题,我写了这本书,希望可以帮助读者成为一名优秀的Go开发者,并在职场中建立自己的核心竞争力。
本书是如何设计的
媒体评论
——霍太稳极客邦科技创始人兼CEO
云原生中绝大部分技术栈和开源项目都是用Go构建的,要享受云原生带来的红利,就需要学习Go。学习Go有很多难点和痛点:学完基础语法后,仍然不知道如何开发企业级项目;在使用Go开发项目时,不知道需要实现哪些功能以及如何科学地构建它们;缺乏一线企业的优秀项目来提升自己的Go开发能力,等等。这本书源自一线企业明星项目的研发经验,向读者全方位地介绍了如何开发一个优秀的企业级项目,可以帮助读者掌握Go项目开发的绝大部分技能点,以及最佳的项目实践方式。
——邹辉腾讯云原生产品中心总经理
令飞老师是Go语言开发领域的佼佼者,他对待工作极度认真,在其他方面也是如此。感谢他利用业余时间梳理并分享企业级Go项目的开发和运维经验。本书由浅入深地介绍了Go语言的一切,可以带你快速入门并成为大型项目的开发专家。无论你是尚未接触过Go语言的初学者,还是有一些Go语言基础的从业者,本书都能让你全方面提升,就像我一样。
——孟凡杰腾讯云容器技术专家
作为Go程序员,不仅要善于编写、设计Go程序,还要熟练地构建与维护基于Go语言的软件项目。孔令飞的这本书源自他在极客时间发布的技术专栏,专注于Go项目实践。此专栏经受住了众多读者的评议和验证,并获得了很不错的订阅量。因此,这本书的质量也就不必多说了。推荐所有想把Go语言用在实处的程序员、工程师和技术管理者阅读这本书。
——郝林GoHackers技术社群发起人/《Go语言核心36讲》《Go 并发编程实战》作者
很多刚接触Go语言的读者都会犹豫和彷徨,不知道如何真正地实现一个产品级的项目。令飞的这本书细致入微,手把手教读者如何从零开发一个企业级Go项目,系统而有条理地把项目开发的过程和注意点娓娓道来,是一本不可多得的实战型著作。
——晁岳攀(鸟窝) 微服务框架 rpcx 创建者/《Go并发编程实战课》专栏作者