Wandbox の内部通信を gRPC 化した
Published in
2 min readApr 22, 2020
4月はほぼ仕事が無い状態なので、Wandbox の改善をしていました。
Wandbox はフロントを処理するアプリケーション(kennel)とサンドボックス環境で任意のプログラムを実行するアプリケーション(cattleshed)があるのですが、これらの間の通信を gRPC 化しました。
動機
今までは生の TCP 上に決まったプロトコルでやり取りしていたのですが、毎回どんな仕様だったか忘れるし、ちゃんとデシリアライズしないと単なるバイナリデータしかやりとり出来ないしで、拡張を考えると面倒になってきました。
なので gRPC を利用して、proto ファイルで簡単に型を付けてやり取りできるようにしました。
誰得
俺得です。
上記の PR にも書いていますが、これでユーザが特に嬉しくなることは無いです。むしろ不安定になって困るかも。
ただこれのおかげで、自分が新しい機能を追加しやすくなるので、そこら辺で嬉しいことがあるかもしれません。
やったこと
gRPC 化するのはもちろんですが、その他にもいくつか改善していってるところがあります。むしろ掛かった時間は gRPC 以外の方が多いぐらい。
- テスト環境を整えて、kennel と cattleshed を使って簡単な E2E のテストを行うようにした
- ステージング環境を作って、本番にほぼ影響なく本番と同等の環境でテスト出来るようにした
- push をトリガにしてデプロイするのを、自前の webhook 使うのをやめて GitHub Actions で行うようにした
- Thread Sanitizer や Address Sanitizer を使ってデバッグが捗るようにした
- 全体的に clang-format を適用
これでかなり開発しやすくなりました。実際に何か作るのはまた時間が出来た時になりますけど、その時の立ち上がりは大分マシになるはず。
次はフロント側を何とかしたいところですが、5月からはまた忙しくなる予定なのでゆっくりやっていきます。