社内slackでGoについて質問されて、それなりに長文で回答したのでその内容を加筆修正したものをブログに残しておく。 質問内容としては以下のイメージ。 RubyだとRailsがあり、MVCを利用することになるが、Goだとそこらへんはどうなるのか? Go初心者なのでGoのモダンなアーキテクチャとフレームワークについて教えて欲しい。 これ系の質問はGo経験者であれば「あーこれなー」と思うだろーし、 Go初心者のときに一度は悩んだことがあるだろう。 なので、個人的な意見を残しておく。 自分の意見が正しいかどうかは自己判断して欲しい。 結論 アプリケーションアーキテクチャの複雑化とMVCフレームワーク システムアーキテクチャの複雑化とフルスタックなフレームワーク マイクロフレームワーク 改めて質問内容を振り返る pospomeが考えるGoのフレームワーク選定 pospomeが考えるGoのアーキテク
tl;dr・Goの依存性注入は普通に行われるが、DIツールはまだ観測範囲では浸透していない。 ・直近出たGoogle製Go向けDIツール「Wire」はシンプルなAPIやツール作成で有用だが、依存オブジェクトの設定が複雑化すると表現性に限界がくる ・Goにおいて、DIツールはある種のフレームワークと認識して慎重に採用すべき前提:Goの依存性注入と課題Goのコードを書く際、特に一定規模を超えたAPIを書く際は、依存するオブジェクトというのが増える。DBクライアントやロガーや各種ビジネスロジックを呼び出すサービス層などがそれに該当する。 レイヤー化されたパッケージ構成の下、こうした依存オブジェクトをトップダウンに注入していくやり方は見通しがよく、テスト時にモックのAPIクライアントを差し込みやすかったりと、テスタビリティを向上させる。ざっくり依存性注入が行われるようなレイヤー化された構成で、なん
2016 - 12 - 10 Go言語 Web フレームワークはこれを使おう 2016年12月版 この記事は Qiita Advent Calendar 2016 Go (その2) 10日目の記事です。 Go言語の Web アプリケーションフレームワーク (以下、Web フレームワーク) は、群雄割拠の時代を経てわずかばかりまとまってきた印象があります。今回、Go言語の Web フレームワーク を選定するさいの参考になればと思い、あらためていくつかのフレームワークの特長や最近の動向をまとめました。 結論 現時点では iris または Echo の選択をおすすめします。 選定と推薦の根拠 主観 GitHub Trending, Star, Issue プロダクトでの使用経験 (Gin, Echo) 現在、 株式会社ユーリエ のプロダクト eurie Desk 開発における主たる言語として G
中規模APIサーバー開発で得た知見 第2回 関西golang勉強会 21 January 2016 Yusuke Hatanaka (a.k.a Hatajoe) Software Engineer, Clover Lab.,inc. 中規模? $ find . -name "*.go" | wc -l 449 $ find . -name "*.go" | xargs cat | wc -l 81114 2 使用している主なパッケージ zenazn/goji jinzhu/gorm gocql/gocql garyburd/redigo naoina/migu これらをラップした内製フレームワークを使用 3 内製フレームワーク app ├── common ├── controllers ├── db │ ├── cassandra │ ├── fluentd │ ├── m
dbr – Go 言語 O/R Mapper の紹介 に続いて、Go その2 Advent Calendar 2015 – Qiita 1日目のエントリ第二弾です。 Go言語の Web フレームワークというと、 Revel Martini Gin Goji などが有名です。今回は Echo を簡単に紹介します。 Echo – Github Echo – document Echo とは Echo は 軽量な Web フレームワークの1つで、公式サイトでは 高速と言われる Gin を更に超える性能を誇るとうたっています。1 小規模 〜 中規模アプリケーションを想定した構成のサンプルを Github にリリースしておきました。MySQL データベースを作成すれば POST と GET リクエストを体験できます。詳細は以下のレポジトリをご覧下さい。 eurie-inc/echo-sample ※
Goでwebサーバーを作るときに考えたことをまとめておきます。 dockerコンテナで動かす場合を少し考慮してます。 フルスタックフレームワークか軽量系フレームワークか 最初に突きつけられる問題です。 フルスタックフレームワーク revel beego 軽量系フレームワーク goji negroni どんなフレームワークもそうですが、フルスタックなフレームワークならば、 その道に乗っかることで余計なことを考えずにすみます。 だけどその道から外れることをする場合に苦労が伴います。 golangの場合、Go初心者ならばフルスタックでもいいけれど、 ある程度Goに慣れてくると標準のライブラリといくつかのライブラリを使うだけで webサーバーを作る場合、十分な場合があります。 前にrevelを使っていたときは、最初はrevelの機能を使っていたけれど、途中で他のライブラリを使ったほうが楽なんじゃな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く