Golang フレームワーク比較

フレームワーク
ライセンス
アップデート頻度
学習しやすさ
情報の多さ
事例の多さ
star数
ドキュメント生成機能

Beego (GitHub)
Apache-2.0



×
18750

Gin (GitHub)
MIT




24041
×

Martini (GitHub)
MIT




10425
×

Revel (GitHub)
MIT



×
10708
×

Echo (GitHub)
MIT




12796
×

Goa (GitHub)
MIT




3232

Go kit (GitHub)
MIT

×
×
×
12500
×

micro (GitHub)
Apache-2.0


×
×
5313
×

アップデート頻度判断基準→githubのコミットログが直近にあるかどうか

学習のしやすさの判断基準→学習のしやすさ調査

情報の多さの判断基準→ドキュメント充実かどうか、Qiitaなど記事を検索結果の多さ


特徴、気付いたこと


Beego

フルスタックなWebアプリケーションフレームワーク。ORマッパーまでサポート。RubyのSinatraを元に設計されている。


Gin

比較的軽量なフルスタックWebアプリケーションフレームワーク。マティーニと類似のAPIを提供している。


Martini

モジュール形式のWebアプリケーションサービスフレームワーク。


Revel

JavaのPlay Frameworkを参考に設計されたフルスタックフレームワーク。


Echo

RESTAPI向けのため、RESTの原則に沿った形で設計されたAPIを持っている。Ginを超える程の高速処理。


Goa

デザインコード(goa API Design Language) のファイルを作成するだけで、マイクロサービスのコアとなるファイルを生成してくれる。


Go kit

独自のloadbalancerパッケージが担う、DNSやconsulなど様々なプラグインを追加可能。tracingパッケージを用いて、どの経由のリクエストで出力されたログなのか追いやすいみたい。


micro

マイクロサービスのツールキットとして、各サーバ/サービスツールをそれぞれ分割して別々にパッケージされたもの。中核となるgo-micro、Webサービスを展開するためのgo-web、モニタリングツールのmonitor-web、サービスをトレースするためのtrace-web など、マイクロサービスを構築および運用するためのパッケージが揃っている。


速度比較


参考1

Go Web Frameworks 比較 - Qiita

GitHub - najeira/go-frameworks-benchmark: benchmark for golang web frameworks

1.png

2.png


参考2

GitHub - julienschmidt/go-http-routing-benchmark: Go HTTP request router and web framework benchmark


参考3

GitHub - smallnest/go-web-framework-benchmark: Go web framework benchmark

3.png


参考4

Round 14 results - TechEmpower Framework Benchmarks

GitHub - TechEmpower/FrameworkBenchmarks: Source code for the framework benchmarking project


事例


Gin

GoでJWT認証するAPI Gatewayを作成する - Tech Blog - Recruit Lifestyle Engineer

フレクトのクラウドblog(New): Go言語でトランザクション制御のラッパー関数を作った話

GoでAPIサーバーの開発からデプロイまで - Qiita


Martini

GAE/Go 事例紹介


Echo

VoicyがGoLangとEchoを採択した理由。 - Voicy Tech Blog

APIにGolangを導入しました - Cluex Developersブログ

mofur x golang (前篇) (フェンリル | デベロッパーズブログ)

かけだし Gopher におくる Golang 製 Web Framework echo の logging について | Goodpatch Blog


goa

アイスタイルにおけるgoa導入事例 / case studies of goa in istyle inc // Speaker Deck

goaを導入した話 // Speaker Deck


フレームワークを使わない

初めてGolangで大規模Microservicesを作り得た教訓

教訓1 フレームワークに拘らない

GoでとあるAPIサーバを実装し直した話 - Mercari Engineering Blog

最初は Revel で書かれていた → フレームワークを使わずに書き直した


GitHub スター数の推移

4.png


参考

Go言語おすすめフレームワークまとめ | IT/Web系の起業家・フリーランスに贈る、すべらない起業論

継続的なAPI開発に。Goのマイクロサービスまとめ | NTT Communications Developer Portal

go言語でのマイクロサービスフレームワークの雑な比較メモ - Qiita

マイクロサービスのフレームワークまとめ [不定期更新](2017/02/25更新) - Qiita