Skip to content

MaksimDzhangirov/backendBankExample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Russian translation of article and video series

Backend master class (lectures)

YouTube Backend master class [Golang, Postgres, Docker] (videos)

Перевод на русский цикла статей и видеороликов мастер класса по Golang, Postgres, Docker

Цикл статей (лекции 1-21 на английском)

YouTube ролики (плейлист ко всему мастер классу на английском)

Содержание (Content)

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

21. Реализуем API для входа пользователя в систему, который возвращает PASETO или JWT токен доступа на Go

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

39. Introduction to gRPC

39. Введение в gRPC

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

61. Подтверждение адреса электронной почты в Go: создаём таблицы в БД и отправляем соответствующее письмо

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. ]