Пишем полноценный gRPC сервис с современной архитектурой. Также:  - Напишем контракт protobuf, разберемся с кодогенерацией - Научимся работать с ошибками и логами - Настроим миграции для БД - Настроим автоматический деплой через GitHub Actions, напишем для этого workflow - и др.  Исходный код проекта (версия кода с зафиксированной версией на момент выхода гайда): 
  Текстовая версия в виде инструкции: 
 Полная текстовая версия гайда: 
  Облачный сервер для для gRPC-сервиса: 
  --------  Другие мои ролики, дополняющие текущий: REST API - URL Shortener: 
 Интерфейсы по месту использования: 
 Моки и их генерация: 
 Использование SQLite в Go: 
 ----   
 - мой канал в Telegram. Пишу в нём много интересного: гайды, которых нет на YouTube, интересные мысли про разработку, новости и анонсы всех моих активностей и др.   GoLang Digest: 
 - мои регулярные подборки интересных материалов по Go.   Наше сообщество GopherClub: 
  Лучшее русскоязычное Go-сообщество с очень приятной атмосферой, без токсиков. Вежливо и терпеливо помогаем новичкам, конструктивно дискутируем с профессионалами и т.п. Здесь также присутствуют все звезды Go-сообщества и представители интересных компаний    Если у вас есть желание поддержать развитие канала:  Секретный телеграм-канал: - В рублях: 
 - В евро: 
  Boosty: 
 Patreon: 
 ----  Тайм-коды:  00:00 Вступление 01:00 Мой Телеграм-канал, зачем на него подписываться 02:04 Теоретический ликбез 06:49 SSO или Auth? 07:58 Авторизация и аутентификация - в чем разница? 08:31 Архитектура авторизации в нашем сервисе 09:51 Что такое JWT и зачем он нужен? 14:01 Архитектура приложения 16:33 Protobuf контракт 31:24 Пишем SSO: каркас и структура проекта 38:03 Конфигурация приложения 52:32 Настраиваем логгер - log.slog 01:03:56 gRPC-сервер и хэндлеры 01:18:48 Запуск и проверка приложения 01:22:04 Graceful shutdown 01:27:08 Хэндлер Login() 01:34:28 Хэндлер Register() 01:36:01 Хэндлер IsAdmin() 01:36:53 Сервисный слой 01:46:27 Метод RegisterNewUser() и хэширование паролей 01:52:05 Метод Login() и сравнение хэшей паролей 01:58:00 Создание JWT-токена 02:04:45 Миграции базы данных 02:23:05 Слой работы с данными: реализация Storage 02:32:09 Собираем все компоненты воедино 02:37:11 Пишем функциональные тесты 03:05:22 Интеграция с другим сервисом: URL Shortener 03:15:05 Покупка облачного сервера для деплоя 03:19:16 GitHub Actions: настраиваем автоматический деплой 03:36:53 Тестируем задеплоенный сервис 03:41:23 Заключение 03:41:35 Наше сообщество - Gopher Club 03:43:16 Как поддержать развитие канала  #golang #ntuzov