Backend master class (lectures)
YouTube Backend master class [Golang, Postgres, Docker] (videos)
Цикл статей (лекции 1-21 на английском)
YouTube ролики (плейлист ко всему мастер классу на английском)
1. Проектируем схему БД и генерируем SQL код с помощью dbdiagram.io
2. Устанавливаем и используем Docker + Postgres + TablePlus для создания схема БД
3. Как написать и запустить миграцию базы данных в Golang
4. Генерируем CRUD Golang код из SQL | Сравниваем db/sql, gorm, sqlx, sqlc
5. Пишем Go unit тесты для CRUD операций с базой данных со случайными данными
6. Правильный способ реализовать транзакции в базе данных на Golang
7. Блокировка транзакций БД и как справиться с взаимной блокировкой
8. Как избежать взаимной блокировки в транзакции БД? Порядок запросов имеет значение!
9. Разбираемся в уровнях изоляции и проблемах, возникающих при чтении записи в MySQL и PostgreSQL
10. Как настроить Github Actions для Go + Postgres, чтобы запускать автоматические тесты
11. Реализация RESTful HTTP API в Go с помощью Gin
12. Загружаем настройки из файла и переменных окружения в Golang с помощью Viper
13. Имитируем работу БД для тестирования HTTP API в Go и достижения 100% покрытия
14. Реализуем API перевода денег со своим пользовательским валидатором параметров в Go
15. Добавляем таблицу users с ограничениями по уникальности и внешним ключом в PostgreSQL
16. Как правильно обрабатывать ошибки БД в Golang
17. Как безопасно хранить пароли?
18. Как написать усиленную версию unit тестов, используя свой пользовательский go-mock сопоставитель
19. Почему PASETO лучше JWT для аутентификации с использованием токенов?
20. Как создать и проверить JWT и PASETO токен в Golang
22. Implement authentication middleware and authorization rules in Golang using Gin
22. Реализуем middleware для аутентификации и правила авторизации в Golang с помощью Gin
23. Build a minimal Golang Docker image with a multistage Dockerfile
23. Создаём минимизированный Golang Docker образ с помощью Dockerfile с многоступенчатой сборкой
24. How to use Docker network to connect 2 stand-alone containers
24. Как использовать Docker сеть, чтобы связать два отдельных контейнера
25. How to write Docker-compose file and control service start-up orders with wait-for.sh
25. Как создать файл Docker-compose и управлять порядком запуска сервисов с помощью wait-for.sh
26. How to create a free tier AWS account
26. Как создать бесплатную учётную запись AWS
27. Auto build & push Docker image to AWS ECR with GitHub Actions
27. Автоматическая сборка и отправка Docker образа в AWS ECR с помощью GitHub Actions
28. How to create a production DB on AWS RDS
28. Как создать продакшен БД в AWS RDS
29. Store & retrieve production secrets with AWS secrets manager
29. Храните и извлекайте конфиденциальные данные для продакшен с помощью AWS Secrets Manager
30. Архитектура Kubernetes и создание кластера EKS на AWS
30. Архитектура Kubernetes и создание кластера EKS на AWS
31. How to use kubectl & k9s to connect to a Kubernetes cluster on AWS EKS
31. Как использовать kubectl и k9s для подключения к Kubernetes кластеру на AWS EKS
32. How to deploy a web app to Kubernetes cluster on AWS EKS
32. Как развернуть веб-приложение в Kubernetes кластере на AWS EKS
33. Register a domain & set up A-record using Route 53
33. Регистрируем домен и настраиваем A-запись с помощью Route 53
34. How to use Ingress to route traffics to different services in Kubernetes
34. Как использовать Ingress для маршрутизации трафика на разные сервисы в Kubernetes
35. Automatic issue TLS certificates in Kubernetes with Let's Encrypt
35. Автоматическая выдача TLS сертификатов в Kubernetes с помощью Let’s Encrypt
36. Automatic deploy to Kubernetes with GitHub Action
36. Автоматическое развертывание в Kubernetes с помощью GitHub Action
37. How to manage user session with refresh token - Golang
37. Как управлять сессиями пользователя с помощью refresh токена - Golang
38. Generate DB documentation page and schema SQL dump from DBML
38. Создание страницы документации и SQL дампа структуры БД из DBML
40. Define gRPC API and generate Go code with protobuf
40. Определяем gRPC API и генерируем Go код с помощью protobuf
41. How to run a Golang gRPC server and call its API
41. Как запустить gRPC сервер на Golang и вызвать его API
42. Implement gRPC API to create and login users in Go
42. Реализуем gRPC API для создания и входа пользователей в систему на Go
43. Write code once, serve both gRPC & HTTP requests
43. Пишем один раз код, который сможет обслуживать как gRPC, так и HTTP-запросы
44. How to extract info from gRPC metadata
44. Как извлечь информацию из gRPC метаданных
45. Automatic generate & serve Swagger docs from Go server
45. Автоматическая генерация и выдача Swagger документации с помощью Go сервера
46. Embed static frontend files inside Golang backend server's binary
46. Встраиваем статические фронтенд файлы в двоичный файл Golang сервера
47. Validate gRPC parameters and send human/machine friendly response
47. Проверка gRPC параметров и отправка человека/машинно понятного ответа от сервера
48. Run DB migrations directly inside Golang code
48. Запускаем миграции БД непосредственно внутри Golang кода
49. Partial update DB record with SQLC nullable parameters
49. Частичное обновление записи в БД, используя SQLC параметры, допускающие значение типа NULL
50. Build gRPC update API with optional parameters
50. Создаём gRPC API для обновления параметров пользователя с необязательными параметрами
51. Add authorization to protect gRPC API
51. Добавляем авторизацию для защиты gRPC API
52. Write structured logs for gRPC APIs
52. Создание структурированных логов для gRPC API
53. How to write HTTP logger middleware in Go
53. Как написать HTTP middleware для логирования в Go
54. Implement background worker in Go with Redis and asynq
54. Реализация фонового воркера в in Go с помощью Redis и asynq
55. Integrate async worker to Go web server
55. Интегрируем асинхронный воркер с веб-сервером Go
56. Why you should send async tasks to Redis within a DB transaction
56. Почему вы должны отправлять асинхронные задачи в Redis в рамках транзакции БД
57. How to handle errors and print logs for Go Asynq workers
57. Как обрабатывать ошибки и выводить сообщения в логи для асинхронных Go воркеров
58. Why a bit of delay can be good for your async tasks
58. Почему небольшая задержка может быть полезна для ваших асинхронных задач
59. How to send emails in Go via Gmail
59. Как отправлять электронные письма в Go с помощью Gmail
60. How to skip test in Go and config test flag in VS Code
60. Как пропустить тест в Go и настроить флаг, отвечающий за выполнение теста в VS Code
61. Email verification in Go: design DB and send email
62. Implement email verification API in Go
62. Реализуем API для подтверждения адреса электронной почты в Go
63. Unit test gRPC API with mock DB & Redis
63. Unit-тестирование gRPC API с помощью фиктивной БД и Redis
64. How to test a gRPC API that requires authentication
64. Как протестировать gRPC API, требующий аутентификации
65. Config sqlc version 2 for Go and Postgres
[65. ]
66. Switch DB driver from lib/pq to pgx
[66. ]
67. How to handle DB errors with PGX driver
[67. ]