フレームワークライセンスアップデート頻度学習しやすさ情報の多さ事例の多さ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

 

    1. Beego

 

    1. Martini, Gin, Revel, goa

 

    1. goMicro

 

    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

2.png

参考2

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

参考3

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言語の活用

广告
将在 10 秒后关闭
bannerAds