
Hello guys, welcome to the course!
In the resource, there's a link to the Github repository, where you can find all the codes used in the lectures. You can also take a look at the Pull request history to understand how it evolves over time.
The most important thing is to understand the ideas and implement them on your own.
If you face any troubles that you can't solve on yourself, please ask questions in the Q&A section or in Tech School's discord group. I will try my best to help you. Besides, you might also find some valuable answers from other students as well.
Thank you for taking the course, and hope you will find it interesting and useful.
Happy learning! Cheers!
Note: This video is recorded after other videos in the course, so the version of Go and SQLC is newer than in the others.
Hey guys, in this lecture we will learn how to generate CRUD golang code from SQL queries using sqlc.
The video was recorded on a Mac, but it should be similar for Linux and Windows. You can refer to it in the sqlc's documentation page.
For Windows users, please follow the previous lecture about "Setup development environment on Windows" to learn how to install & run it with WSL.
Note: If you're using newer version of migrate, such as 4.15.1, the binary file name has been changed to just migrate instead of migrate.linux-amd64. So you should change the COPY command in the Dockerfile to reflect this.
Hey guys, actually this is not the end of the course yet. I've decided to add more lectures about advanced backend topics to this course.
I will keep uploading more and more videos in the future, so stay tuned and make sure to check out this course from time to time, or you can subscribe to our Youtube channel or follow us on Twitter/Facebook (links in the profile).
Thanks a lot and happy learning!
In this lecture, I will give you an overview of #gRPC - one of the best frameworks to develop a backend web service.
The first step to develop a gRPC web service is to define the RPC API and its request/response structure using protobuf, then use that protobuf definition to generate codes for the server and client. And that’s exactly what we’re gonna do in this lecture.
In this video, let’s learn how to use the previous lecture's generated codes to run a gRPC server, and then connect to it using an interactive client tool called Evans CLI.
In this video, let’s learn how to implement 2 gRPC APIs to create and login users in Golang.
In this videos, we will learn how to extract information from gRPC metadata, such as getting client's IP address or user agent.
In this video, we will learn how to write parameters validation for a gRPC service, then send a human/machine friendly response to the client.
For those who can't find the "App password" section:
That's because Google just moved it inside the "2-Step Verification" page. So you'll have to click on the "2-Step Verification" button to open that page, then you'll find the "App password" section at the bottom of the page.
In this video, we'll learn how to install & use binary packages in Go, specifically some gRPC & gRPC gateway packages to generate golang codes. This will help you fix the error: "protoc-gen-grpc-gateway" is a program, not an importable package.
Hey guys,
This is not the end of the course! I will keep making and posting new lectures about more advanced backend topics such as using Cookies, bulk inserts, etc.
So please come back to check out the course from time to time. You can also join our Discord group to chat with me and other students: https://bit.ly/techschooldc
And if you like the course, don't forget to give it some positive feedback and reviews. Thanks a lot and see you soon in the following lecture!
Congratulations on completing the course! I hope it was interesting and useful for you.
If you like the course, don't forget to give it a good review and share it with your friends and colleagues.
Thank you, happy learning and hope to see you again in another course of Tech School!
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:
Create and manage bank accounts.
Record all balance changes to each of the accounts.
Perform a money transfer between 2 accounts.
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:
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.
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.
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.
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.
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.
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.
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.