Twirp - минималистичная альтернатива gRPC для Go-разработчиков
Репозиторий давно не обновлялся
Последнее обновление было 2 года назад.

Знакомая ситуация? Вы проектируете систему микросервисов и понимаете, что половина времени уходит не на бизнес-логику, а на настройку транспортного уровня. HTTP-методы, роутинг, сериализация, обработка ошибок... Twirp решает эту проблему элегантным способом.
Что такое Twirp и кому он нужен?
Разработанный инженерами Twitch, Twirp — это RPC-фреймворк, который:
- Генерирует клиентский и серверный код из .proto-файлов
- Работает поверх стандартного net/http
- Поддерживает JSON для удобства отладки
- Не требует сложной инфраструктуры как gRPC
Идеально подходит для команд, которые:
- Уже используют Protobuf
- Хотят простоты HTTP без потерь в производительности
- Разрабатывают на Go (хотя есть реализации и для других языков)
5 причин попробовать Twirp
- Минимализм — в отличие от gRPC, не требует специального сервера, работает на стандартном net/http
- Автогенерация — из proto-файлов получаете готовые клиенты и серверные заглушки
- Двойная сериализация — поддерживает и Protobuf (для прода), и JSON (для разработки)
- Простота отладки — можно тестировать API через curl или Postman
- Кросс-языковая поддержка — благодаря сообществу есть реализации для 15+ языков
Как это работает технически?
Twirp использует простую трехслойную архитектуру:
service Haberdasher {
rpc MakeHat(Size) returns (Hat);
}
- Вы описываете API в .proto-файле
- Генератор создает:
- HTTP-обработчики
- Клиентские библиотеки
- Структуры данных
- Вам остается реализовать только бизнес-логику
Пример серверной реализации на 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, если остались вопросы.
