はじめに
最近、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環境での稼働
- そもそもこのプロジェクト構成でいいのかを確認
※ 進捗があれば、この記事を更新していく