gRPC: от контракта до сервиса в проде

Уроки с примерами кода; тему можно сразу закрепить вопросами в тренажёре.

Материалы открываются после регистрации на Free.

Уроки по модулям

  1. Как устроен вызов gRPC

    3 урока

    Что gRPC обещает вызывающему коду и что на самом деле уходит в сеть: сервис и метод из контракта, сгенерированная заглушка, канал, статус и метаданные, а под ними поток HTTP/2 с сообщениями с префиксом длины и статусом в трейлерах.

    1. Что такое gRPC: вызов метода на другой машине по общему контракту
    2. Вызов gRPC: метод из контракта, а не запрос к ресурсу
    3. Вызов на проводе: поток HTTP/2, сообщения и трейлеры
  2. Контракт на protobuf

    2 урока

    Как protobuf кодирует сообщение и что из этого следует для схемы: номера полей и типы на проводе, значения по умолчанию и наличие поля, enum и oneof, а затем правила развития схемы, по которым старый клиент продолжает работать.

    1. Protobuf на проводе: номер поля, тип и неотличимый ноль
    2. Эволюция схемы: какие изменения ломают старого клиента
  3. Контракт как код

    2 урока

    Как orders.proto живёт в репозитории: генерация кода Go плагинами protoc, buf и EasyP, доставка контракта клиентам, линт схемы и проверка ломающих изменений против основной ветки в CI.

    1. Кодогенерация и доставка контракта
    2. Линт и проверка ломающих изменений в CI
  4. Сервер и клиент

    4 урока

    Сервис заказов как процесс: какой код статуса вернуть и как клиент на него отреагирует, что создаёт клиентский канал и когда открывается соединение, как дедлайн и повторы делят один бюджет времени по цепочке вызовов, как сервер останавливается, не обрывая вызовы, и сообщает о своей готовности.

    1. Коды статуса: исход вызова, по которому клиент выбирает реакцию
    2. Клиентский канал: когда открывается соединение
    3. Дедлайн и повторы: один бюджет на всю цепочку
    4. Остановка и health: сервер уходит, не обрывая вызовы
  5. Интерцепторы и валидация

    2 урока

    Где в gRPC живёт сквозная логика (логи, метрики, аутентификация, восстановление после паники, валидация) и в каком порядке она выполняется, и почему правила проверки входных данных удобнее держать в самой схеме.

    1. Интерцепторы: сквозная логика вокруг вызова
    2. Валидация в схеме: protovalidate
  6. Стриминг

    2 урока

    Четыре вида вызова и что меняется, когда сообщений больше одного: управление потоком, медленный получатель, конец потока и ошибка посреди него, а затем подписка на события заказа, которая переживает обрыв и перезапуск сервера.

    1. Четыре вида вызова и медленный получатель
    2. Подписка на события заказа через поток
  7. Граница с REST и браузером

    1 урок

    Как сервис заказов отдаёт тот же контракт внешнему клиенту по REST и JSON и браузеру: gRPC-Gateway с аннотациями google.api.http, описание OpenAPI из той же схемы и чем это отличается от gRPC-Web.

    1. gRPC-Gateway: REST и OpenAPI из того же контракта
  8. Сервис в проде

    3 урока

    Что меняется, когда сервис заказов работает в несколько экземпляров: почему балансировка долгих соединений HTTP/2 не работает по привычке, какие метрики и трассы снимать с вызовов, и как сервисы доверяют друг другу через TLS, mTLS и токены в метаданных.

    1. Балансировка: одно соединение HTTP/2 на много вызовов
    2. Наблюдаемость вызовов: метрики, трассы и код статуса
    3. Безопасность: TLS, mTLS и токен в метаданных

О курсе

gRPC с нуля до сервиса уровня прода на одном сквозном примере: сервис заказов с одним контрактом orders.proto. Курс разбирает, что происходит при вызове на проводе HTTP/2, как protobuf кодирует сообщение и какие изменения схемы ломают старых клиентов, как контракт живёт в репозитории (кодогенерация, линт, проверка ломающих изменений в CI), а затем сервер и клиент: коды статуса, дедлайны и повторы, соединение, остановка и health, интерцепторы и валидация, стриминг и подписка на события, REST-шлюз, балансировка, наблюдаемость и безопасность. Код примеров на Go (grpc-go); цель — предсказывать поведение вызова под сбоем и нагрузкой, а не повторять туториал.

Дальше по теме

Пройдите курс и проверьте темы вслух