Help us understand the problem. What is going on with this article?

Golang フレームワーク比較

フレームワーク ライセンス アップデート頻度 学習しやすさ 情報の多さ 事例の多さ star数 ドキュメント生成機能
Beego (GitHub) Apache-2.0 × 21906
Gin (GitHub) MIT 31238 ×
Martini (GitHub) MIT 10688 ×
Revel (GitHub) MIT × 10708 ×
Echo (GitHub) MIT 11322 ×
Goa (GitHub) MIT 3537
Go kit (GitHub) MIT × × × 14795 ×
micro (GitHub) Apache-2.0 × × 6741 ×

アップデート頻度判断基準→githubのコミットログが直近にあるかどうか
学習のしやすさの判断基準→学習のしやすさ調査
情報の多さの判断基準→ドキュメント充実かどうか、Qiitaなど記事を検索結果の多さ

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

  • コードがぱっと見分かりやすいかどうか
  • 公式ドキュメントが日本語対応か
  • 公式ドキュメントが充実しているか
  • 情報が多いかどうか

比較表

framework 分かりやすさ 公式ドキュメント日本語対応 公式ドキュメントが充実しているか 情報の多さ
Beego(9) ×
Gin(8)
Martini(8)
Revel(8) ×
Echo(10) ×
goa(8) ×
goKit(5) × × ×
goMicro(6) × ×

結果

  1. Echo
  2. Beego
  3. Martini, Gin, Revel, goa
  4. goMicro
  5. goKit

特徴、気付いたこと

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

実例に学ぶGoのアーキテクチャ - 「開発スピード優先」でGMOペパボが採用したのはMVC

その他

Gunosy - 高速な広告配信サーバの作り方のコツ
ぐるなびにおけるGo言語の活用

yumin
Yuminのメモ帳
dip-net
ディップ株式会社は「バイトル」「はたらこねっと」などの求人情報サービスをはじめ、人工知能専門メディア「AINOW」、スタートアップ専門メディア「スタートアップタイムズ」、アニメなどの舞台を紹介するサイト「聖地巡礼マップ」といった新しい分野のサービスを自社で開発・運営しています。
https://www.dip-net.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした