Golang продолжает развиваться, вместе с ним развивается и вся экосистема языка. В частности, появляются новые и обновляются существующие фреймворки. В этой статье мы сделаем небольшой обзор тех, что связаны с HTTP-бэкендом.
Beego
Если нужен быстрый запуск API-интерфейсов REST, веб- и серверных приложений в Go, то лучшего варианта не найти. Golang-разработчики зачастую сравнивают Beego с Django в Python. Достоинство Beego — отсутствие необходимости установки сторонних производителей. Это, фактически, полноценный фреймворк Model-View-Controller, причём у него есть собственные библиотеки и встроенный инструмент Bee, который даёт возможность находить изменения кода.
Beego состоит из восьми модулей, каждый из которых можно либо использовать, либо игнорировать. Благодаря карте объектных отношений ORM-фреймворк помогает организовать базу данных приложения вместе с инструментами обработки сеансов и системами регистрации.
Также Beego имеет обработчик кэша и все необходимые библиотеки для работы с элементами HTTP. Фреймворк отлично работает с инструментами командной строки — примерно как Django.
Правда, есть и недостаток. Из-за возможностей и масштабности Beego, новичку будет нелегко его освоить, так что это, скорее, инструмент для опытного разработчика.
Kit
Инструмент для работы с микросервисами в любом масштабе. Микросервисы часто требуют специализированной поддержки, которую Kit без проблем предоставляет.
Фреймворк обеспечивает безопасность RPC, наблюдаемость системы и интеграцию инфраструктуры. В его состав входит несколько связанных пакетов, которые служат для построения масштабных сервис-ориентированных архитектур (SOA), что облегчает работу с микросервисами.
Разработчики могут выбирать базы данных, компоненты, платформу и архитектуру для работы — Kit с высокой степенью вероятности подойдёт для всего.
Kit использует такие слои как логирование метрики, трассировка, ограничение и прерывание запросов, которые необходимы для запуска микросервисов на проде. Он также даёт возможность придерживаться SOLID, предметно-ориентированного подхода и гексагональной архитектуры.
Echo
Облегчённый, гибкий и расширяемый веб-фреймворк. Позволяет создавать надёжные и масштабируемые RESTful API, имеет встроенное промежуточное ПО и даёт возможность определять своё собственное.
В числе фичей Echo также оптимизированный HTTP-маршрутизатор, который разумно определяет приоритеты маршрутов, централизованная обработка ошибок HTTP и API для отправки различных HTTP-ответов. Фреймворк поддерживает HTTP/2 для повышения производительности и улучшения пользовательского опыта.
Fiber
Простой но мощный фреймворк, который был создан на базе Fasthttp — самого быстрого HTTP-движка для Go. Fiber разработали для ускорения работы с нулевым распределением памяти и возможностями производительности. Плюс ко всему, этот фреймворк ещё и компактен, он без проблем позволяет интегрировать сторонние библиотеки с Martini. Fiber обеспечивает необходимую масштабируемость при сокращении накладных расходов.
По отзывам некоторых разработчиков, он напоминает Express.js, предоставляя отличную поддержку маршрутизации, обслуживания статических файлов, построения REST API, движок шаблонов и поддержку гибкого межплатформенного ПО.
Fasthttp
Fasthttp обеспечивает быстрый HTTP-сервер и клиент API. Он может обрабатывать более 100 000 запросов в секунду и свыше 1 млн одновременно открытых соединений. Фреймворк рассчитан на относительно низкое потребление памяти и обеспечивает простую поддержку обновления соединения через RequestCtx.Hijack.
Разработали Fasthttp для расширения возможностей клиент-серверных реализаций либо написания их с нуля. Обработчик запросов получает достаточно много информации, включая адрес сервера и клиента, регистратор запросов, уникальный идентификатор запроса и т. п.
Стоит знать, что Fasthttp несовместим с net/http.
Gorilla
Gorilla практически безупречно работает со всеми повторно используемыми элементами и компонентами HTTP-библиотеки. Её главные достоинства в том, что она предлагает модульность и масштабируемость в качестве основных функций. И проблемы «засорения» устаревшим функционалом в случае Gorilla нет — всё отлично спроектировано.
Пакет Gorilla WebSocket предоставляет полную реализацию протокола WebSocket. Благодаря простоте использования и возможностям у этого фреймворка есть все шансы стать одним из наиболее заметных для Golang.
Тема фрейворков в Golang достаточно сложная. Единого промышленного стандарта пока нет, явного лидера среди написанных сообществом фреймворков — тоже. Мы перечислили наиболее популярные на данный момент варианты, которые могут помочь с разными задачами. Расскажите, а что используете вы?