Backend Master Class [Golang + Postgres + Kubernetes + gRPC]
后端大师班 [Golang + Postgres + Kubernetes + gRPC]
Learn everything about backend web development: Golang, Postgres, Redis, Gin, gRPC, Docker, Kubernetes, AWS, CI/CD
了解有关后端 Web 开发的所有信息:Golang、Postgres、Redis、Gin、gRPC、Docker、Kubernetes、AWS、CI/CD
教程演示🔗
What you’ll learn 学习内容
-
Design database schema using DBML and automatically generate SQL code from it
使用 DBML 设计数据库架构并从中自动生成 SQL 代码 -
Deeply understand the DB isolation levels, transactions and how to avoid deadlock
深入了解数据库隔离级别、事务以及如何避免死锁 -
Automatically generate Golang code to interact with the database
自动生成 Golang 代码与数据库交互 -
Develop a RESTful backend web service using the Gin framework
使用 Gin 框架开发 RESTful 后端 Web 服务 -
Secure the APIs with user authentication, JWT and PASETO
使用用户身份验证、JWT 和 PASETO 保护 API -
Write stronger test set with high coverage using interfaces and mocking
使用接口和模拟编写具有高覆盖率的更强大的测试集 -
Build a minimal Docker image for deployment and use Docker-compose for development
构建用于部署的最小 Docker 映像,并使用 Docker-compose 进行开发 -
Set up Github Action to automatically build and deploy the app to AWS Kubernetes cluster
设置 Github Action 以自动构建应用程序并将其部署到 AWS Kubernetes 集群 -
Register a domain and config Kubernetes ingress to route traffic to the web service
注册域并配置 Kubernetes 入口以将流量路由到 Web 服务 -
Enable automatic issue & renew TLS certificate for the domain with Let’s Encrypt
使用 Let’s Encrypt 为域启用自动颁发和续订 TLS 证书 -
Take your web service to the next level with gRPC and gRPC gateway
使用 gRPC 和 gRPC 网关将 Web 服务提升到一个新的水平 -
Run background workers to process tasks asynchronously with Redis and Asynq
运行后台工作线程以使用 Redis 和 Asynq 异步处理任务
Requirements 要求
-
Only basic programming skill is needed
只需要基本的编程技能 -
If you’re new to Go, I suggest learning its syntax first on the “Tour of Go” website
如果你是围棋新手,我建议你先在“围棋之旅”网站上学习它的语法
Description 描述
In this course, you will learn step-by-step how to design, develop and deploy a backend web service from scratch. I believe the best way to learn programming is to build a real application. Therefore, throughout the course, you will learn how to build a backend web service for a simple bank. It will provide APIs for the frontend to do the following things:
在本课程中,您将逐步学习如何从头开始设计、开发和部署后端 Web 服务。我相信学习编程的最好方法是构建一个真正的应用程序。因此,在整个课程中,您将学习如何为简单的银行构建后端 Web 服务。它将为前端提供 API 来执行以下操作:
-
Create and manage bank accounts.
创建和管理银行账户。 -
Record all balance changes to each of the accounts.
记录每个账户的所有余额变化。 -
Perform a money transfer between 2 accounts.
在 2 个账户之间进行汇款。
The programming language we will use to develop the service is Golang, but the course is not just about coding in Go. You will learn a lot of different topics regarding backend web development. They are presented in 6 sections:
我们将用于开发服务的编程语言是 Golang,但该课程不仅仅是关于用 Go 编码。您将学习有关后端 Web 开发的许多不同主题。它们分为 6 个部分:
-
In the 1st section, you will learn deeply about how to design the database, generate codes to talk to the DB in a consistent and reliable way using transactions, understand the DB isolation levels, and how to use it correctly in production. Besides the database, you will also learn how to use docker for local development, how to use Git to manage your codes, and how to use GitHub Action to run unit tests automatically.
在第 1 部分中,您将深入学习如何设计数据库、生成代码以使用事务以一致且可靠的方式与数据库通信、了解数据库隔离级别以及如何在生产中正确使用它。除了数据库之外,您还将学习如何使用 docker 进行本地开发,如何使用 Git 管理代码,以及如何使用 GitHub Action 自动运行单元测试。 -
In the 2nd section, you will learn how to build a set of RESTful HTTP APIs using Gin – one of the most popular Golang frameworks for building web services. This includes everything from loading app configs, mocking DB for more robust unit tests, handling errors, authenticating users, and securing the APIs with JWT and PASETO access tokens.
在第 2 部分中,您将学习如何使用 Gin 构建一组 RESTful HTTP API,Gin 是用于构建 Web 服务的最流行的 Golang 框架之一。这包括从加载应用程序配置、模拟数据库以获得更强大的单元测试、处理错误、验证用户以及使用 JWT 和 PASETO 访问令牌保护 API 的所有内容。 -
In the 3rd section, you will learn how to build your app with Docker and deploy it to a production Kubernetes cluster on AWS. The lectures are very detailed with a step-by-step guide, from how to build a minimal docker image, set up a free-tier AWS account, create a production database, store and retrieve production secrets, create a Kubernetes cluster with EKS, use GitHub Action to automatically build and deploy the image to the EKS cluster, buy a domain name and route the traffics to the service, secure the connection with HTTPS and auto-renew TLS certificate from Let’s Encrypt.
在第 3 部分中,您将学习如何使用 Docker 构建应用程序并将其部署到 AWS 上的生产 Kubernetes 集群。这些讲座非常详细,并提供了分步指南,包括如何构建最小 docker 映像、设置免费套餐 AWS 账户、创建生产数据库、存储和检索生产密钥、使用 EKS 创建 Kubernetes 集群、使用 GitHub Action 自动构建映像并将其部署到 EKS 集群、购买域名并将流量路由到服务、 使用 HTTPS 保护连接并自动续订 Let’s Encrypt 的 TLS 证书。 -
In the 4th section, we will discuss several advanced backend topics such as managing user sessions, building gRPC APIs, using gRPC gateway to serve both gRPC and HTTP requests at the same time, embedding Swagger documentation as part of the backend service, partially updating a record using optional parameters, and writing structured logger HTTP middlewares and gRPC interceptors.
在第 4 部分中,我们将讨论几个高级后端主题,例如管理用户会话、构建 gRPC API、使用 gRPC 网关同时为 gRPC 和 HTTP 请求提供服务、将 Swagger 文档嵌入为后端服务的一部分、使用可选参数部分更新记录以及编写结构化记录器 HTTP 中间件和 gRPC 拦截器。 -
Then the 5th section will introduce you to asynchronous processing in Golang using background workers and Redis as its message queue. We’ll also learn how to create and send emails to users via Gmail SMTP server. Along the way, we’ll learn more about writing unit tests for our gRPC services that might involve mocking multiple dependencies at once.
然后,第 5 部分将向您介绍 Golang 中的异步处理,使用后台工作线程和 Redis 作为其消息队列。我们还将学习如何通过 Gmail SMTP 服务器创建电子邮件并将其发送给用户。在此过程中,我们将详细了解如何为 gRPC 服务编写单元测试,这可能涉及一次模拟多个依赖项。 -
The final section 6th concludes the course with lectures about how to improve the stability and security of the server. We’ll keep updating dependency packages to the latest version, use Cookies to make the refresh token more secure, and learn how to gracefully shut down the server to protect the processing resources. As this part is still a work in progress, we will keep making and uploading new videos about new topics in the future. So please come back here to check them out from time to time.
最后一部分 6 以关于如何提高服务器稳定性和安全性的讲座结束了课程。我们将继续将依赖项包更新到最新版本,使用 Cookie 使刷新令牌更安全,并了解如何正常关闭服务器以保护处理资源。由于这部分仍在进行中,我们将在未来继续制作和上传有关新主题的新视频。因此,请不时回到这里查看它们。
This course is designed with a lot of details, so that everyone, even those with very little programming experience can understand and do it by themselves. I firmly believe that after the course, you will be able to work much more confidently and effectively on your projects.
本课程设计了很多细节,让每个人,即使是编程经验很少的人也能理解并自己做。我坚信,完成课程后,您将能够更加自信和有效地完成您的项目。
Who this course is for:
本课程适用于谁:
- Anyone who wants to learn about backend web service development using Golang, Postgres, Docker & Kubernetes
任何想要了解使用 Golang、Postgres、Docker 和 Kubernetes 进行后端 Web 服务开发的人 - The course is designed so that even a beginner with very basic programming skills can understand
该课程的设计使即使是具有非常基本的编程技能的初学者也可以理解 - But I’m sure even developers with more experienced (intermediate level) can still learn something new
但我敢肯定,即使是经验更丰富(中级)的开发人员仍然可以学到新东西