grpc-microservice-sample's Issues
Travisで自動テストができるようになっていること
以下ができていればOK
- Travisの自動テストを回すymlが用意されている。
- Travisで自動テストを回して、
*_test.go
がすべて実行されてレポートが出ること。 - Travisで自動テストを回してカバレッジを他のサービスに連携して置けること。
- TravisでDocker-composeを利用して結合テストを実現できること。
E2E疎通確認用のスクリプト作成
下記ができていればOK
- shベースでgrpcurlでリクエストを送信するスクリプト、各サービスごとに必要
Userサービスのテストコードを全部記載して回してみる
DIを利用してる部分はその部分が巧みに利用できていると嬉しい。
下記テスト対象のプログラム
pkg/config/user/config.go
server/user/connector.go
server/user/server.go
service/user/service.go
server.go
はやり方を考えないと行けない気がする。
vegetaを利用した性能計測の準備をwikiに記載する
Wikiへvegetaを利用した性能計測のやり方を記載したい。
以下ができていれば完了とする。
・vegetaを利用した性能計測の仕方がwikiに記載されていること
・vegetaの基本的な利用方法やパラメータのことがわかると嬉しい気がする
・vegetaを利用したときに仕上がるレポートのまとめ方(Github wikiにまとめれるのか等)を調べる
PostgerSQLとの接続用repositoryの作成
下記ができていればOK
- PostgerSQLとの接続用のRepository
- PostgreSQLのDocker疎通
- PostgreSQL版の初期構築SQLとdocker-compose.ymlの更新
Cloud Spannerとの接続用Repositoryの作成
下記ができていればOK
- Cloud Spannerとの接続用のRepository
- Cloud SpannerのDocker疎通
- Cloud Spannerの初期構築スクリプト(gcloudコマンド?)
- Cloud Spannerのドキュメントをもとにテーブル設計
gRPCサンプルアプリの格納
下記を格納
- テンプレートファイルを書き換えて作成したgRPCサンプルアプリの格納
- MySQL版、PostgreSQL版とか、バックエンドのステートフルサービスを変えているとなお良い
マスタースレーブ構成のMySQLへ接続するRepositryを作成する
sqlmockで単純にテストができるようには見えないのでやり方を検討する必要がある。
Itemサービスの作成
下記ができていればOK
- Itemサービスの作成
- ItemサービスとMySQLの疎通が取れていればOK
- Dockerfileでのコンテナ作成
GKEへのデプロイ検証
下記を準備
- Docker環境での検証済みアプリコンテナのGCRへのデプロイ手順をREADMEかWikiに記載
- GKEでのDeploymentファイルの定義
sqlmockを利用したUser repositoryのテストを作る
下記ができていればクローズ
- https://github.com/DATA-DOG/go-sqlmockを利用してUser repositoryのテストを実施する
- sqlmock利用のドキュメントをwikiに記載する
Redisに接続するRepositoryの作成
下記が実施できればOK
- Redisに接続するモジュールを選定する。結果はWikiに記載する。
- Redisに接続するモジュールを利用した上でのRepositoryを作成する。
- RedisのテストをMockを利用して行えるようにしたい。
- RedisのDocker-compose.ymlを作成し実態との疎通テストを行う。
Golangのタグの原理を知る
Golangで何気なく利用しているタグたちがそれぞれどういった原理で動作しているのかを調べる。
対象のライブラリは下記
sqlx
のdb
タグaws-sdk-go
のDynamoDB用のcolumn
タグ(だった気がする)json
標準ライブラリのjson
タグ
あたりを調べる
Docker環境でのアプリケーション検証
下記を格納
- Docker-composeでのテンプレートファイル
- 起動検証用のgrpcurlの情報をREADMEまたはWikiに追加する。
Accountサービスの作成
下記ができていればOK
- Accountサービスの作成
- AccountサービスとMySQLの疎通が取れていればOK
- Dockerfileでのコンテナ作成
DBアクセス部分を共通化してrepositoryとして外部からDIする方式に変更する
下記ができていればOK
- Userサービス、Itemサービス、Storeサービス、Accountサービスの共通を作れればOK
- PostgreSQL版RepositoryとMySQL版RepositoryができていればOK
digを利用したDIコンテナの利用をしてみる
digを利用してDIコンテナの利用をしてみる。
ただし、ぶっちゃけdigは開発終了感があるので、digを参考に自作して見るほうが勉強になりそう。
自作したら、wikiに本来DIとは、DIコンテナが必要になる場面とは、他の言語のDIコンテナはどうしているのかなどを調べてまとめておく。
gRPCサンプルアプリのテンプレート格納
下記をリポジトリに追加する
- gRPCのボイラーテンプレート
- gRPC作成のためのProtocolBufferの定義ファイル
- 作成時のコマンド情報をWikiかREADMEに追加
grpc-middlewareを利用して認証とロギングをできるようにする
下記ができていればOK
- 公式のgrpc-middlewareでログを出力する部品をインターセプターとして入れておく
- 公式のgrpc-middlewareで認証をする部品をインターセプターとして入れておく
- 双方の疎通確認ができる。
- grpc-middlewareの部品を参考に
logger
の入れ方をwikiにまとめる。
Mongo Repositoryの作成
下記ができていればOK
- Mongoに接続するサンプルRepositoryの作成
- Mongo Repositoryへの接続に関するWikiページの作成
- MongoのMockを用意した単体テストの実施について実装とwikiの記載
- MongoのIntegrationテスト実施のためのDocker環境整備と初期データの準備
database/sqlを利用している部分をsqlxに変更する
以下ができていれば完了
・sqlxを利用したDatabase接続
・sqlxとdatabase/sqlの違いをwikiにまとめておく
MockによるテストなのかDBと結合したテストなのかを分けれるようにする
下記ができていればクローズする。
- Mockなのか実態DBなのかをサーバ起動時に判別する環境変数を与えれるようにする。
- 両方のテストがOKなことを確認する。
- 分け方をwikiに記載してビルド時とかの方法をまとめておく
minioを利用したS3へのファイル保管のRepositoryとServiceを作成する
以下ができていればOKとする。
- minioへのファイル操作を行うRepositoryの作成
- Serviceとそれを利用するgrpcの準備
grpcのプロトコルインターフェースでどうやってファイルデータを受け渡すのかは気になりますね。
Cloud Proxy対応をする
GKEにデプロイする前提で下記を準備
- Docker環境でのCloud Proxy対応したDocker-composeファイルの用意
- GKEでの起動を前提にDeploymentの対応ファイル
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.