LoginSignup
18
23

More than 5 years have passed since last update.

goでmicroserviceをつくる

Posted at

はじめに

最近、microserviceを作ったのだが、
microserviceならgolangがいいよね、
みたいな風潮があるので、流れに乗っかってgolangで書き直している。

メイン業務ではないので、手が空いたときに少しづつ進めている感じ。
現在変換している部分は、各アカウントが持っているリソースを取得する部分。

プロジェクト概要

大体やりたいこととしては、以下のように簡単な処理
1. 既存のアカウント管理APIに接続し、認証
2. 認証が通れば、セッションを付与
3. セッションを元に、そのアカウントの権限の範囲でリソース情報を取得する
4. リソース情報がなければ、デフォルトのリソースを作成

レポジトリ

https://github.com/tomoyamachi/platform_points
※ privateにする可能性あり

現在できているところ

  • MySQLへの入出力
  • セッションの保存
  • 既存のAPIに接続して、ログイン情報を取得
  • セッションから、そのユーザの情報を取得する
  • 以上の部分までの、結合テスト

ミドルウェアとかパッケージ

  • FRAMEWORK : echo
  • DB : MySQL
  • キャッシュ(セッション管理で利用) : redis
  • 構成管理 : glide
  • 単体テスト : unittest (まだ導入できていない)
  • 統合テスト : cucumber

ディレクトリ構成

$GOPATH/src/project
|--apps
|  |--v1     <- リソース名 ※ この階層ごとにパッケージを作成する
|     |--main.go
|     |--resource          <- MVCでいうところのController
|     |--route             <- Router
|--conf                    <- 設定ファイル(DBの向き先など)
|--db                      <- DBへの接続
|--features                <- 結合テストファイル
|--glide.yaml              <- 構成管理ファイル
|--middleware              <- ラッパーファイル置き場
|--model                   <- MVCでいうところのmodel
|--sql                     <- テーブル作成SQL (migration未導入)
|--vendor                  <- glideでインストールされたファイルが入る場所

自動ビルド設定

ファイルの更新があれば、自動的にビルドされてほしかった。
現状、fswatchを利用している。

$ brew install fswatch
$ cd <projectpath>
$ fswatch -o . | xargs -n1 -I{} go run apps/v1/main.go

今後やること

  • コード規約チェック
  • migrationの導入
  • 単体テストの作成
  • 結合テストの追加
  • docker環境での稼働
  • そもそもこのプロジェクト構成でいいのかを確認

※ 進捗があれば、この記事を更新していく

18
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
23