Twirp - минималистичная альтернатива gRPC для Go-разработчиков

24 сен 2025

Репозиторий давно не обновлялся

Последнее обновление было 2 года назад.

7,529
327
100
2 года

Twirp Logo

Знакомая ситуация? Вы проектируете систему микросервисов и понимаете, что половина времени уходит не на бизнес-логику, а на настройку транспортного уровня. HTTP-методы, роутинг, сериализация, обработка ошибок... Twirp решает эту проблему элегантным способом.

Что такое Twirp и кому он нужен?

Разработанный инженерами Twitch, Twirp — это RPC-фреймворк, который:

  • Генерирует клиентский и серверный код из .proto-файлов
  • Работает поверх стандартного net/http
  • Поддерживает JSON для удобства отладки
  • Не требует сложной инфраструктуры как gRPC

Идеально подходит для команд, которые:

  • Уже используют Protobuf
  • Хотят простоты HTTP без потерь в производительности
  • Разрабатывают на Go (хотя есть реализации и для других языков)

5 причин попробовать Twirp

  1. Минимализм — в отличие от gRPC, не требует специального сервера, работает на стандартном net/http
  2. Автогенерация — из proto-файлов получаете готовые клиенты и серверные заглушки
  3. Двойная сериализация — поддерживает и Protobuf (для прода), и JSON (для разработки)
  4. Простота отладки — можно тестировать API через curl или Postman
  5. Кросс-языковая поддержка — благодаря сообществу есть реализации для 15+ языков

Как это работает технически?

Twirp использует простую трехслойную архитектуру:

Реклама
service Haberdasher {
  rpc MakeHat(Size) returns (Hat);
}
  1. Вы описываете API в .proto-файле
  2. Генератор создает:
    • HTTP-обработчики
    • Клиентские библиотеки
    • Структуры данных
  3. Вам остается реализовать только бизнес-логику

Пример серверной реализации на Go:

func (s *Server) MakeHat(ctx context.Context, size *Size) (*Hat, error) {
  return &Hat{
    Size:  size.Inches,
    Color: "blue",
  }, nil
}

Где это имеет смысл применять?

Из нашего опыта, Twirp особенно хорош для:

  • Внутренних микросервисов в экосистеме Go
  • Сервисов с невысокой нагрузкой (до ~10k RPS)
  • Команд, которые хотят быстро прототипировать
  • Проектов, где важна простота отладки

Хотите пример? В Twitch он используется для:

  • Системы уведомлений
  • Сервиса конфигураций
  • Внутренних административных панелей

Вывод: стоит ли пробовать?

Twirp — это отличный выбор, если:

✅ Вы любите минималистичные решения ✅ Работаете в основном с Go ✅ Хотите Protobuf без сложностей gRPC

Возможно, стоит рассмотреть альтернативы, если:

❌ Нужна максимальная производительность (лучше gRPC) ❌ Работаете с потоковыми данными (нет поддержки streaming RPC) ❌ Используете языки без хорошей Twirp-реализации

Попробуйте Twirp на следующем проекте — возможно, это именно та простота, которую вы искали! Документация и примеры доступны на официальном сайте.

P.S. Кстати, у проекта есть активное сообщество в Slack — заходите в #twirp, если остались вопросы.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.