Wandbox の内部通信を gRPC 化した

めるぽん
wandbox.org
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月からはまた忙しくなる予定なのでゆっくりやっていきます。

--

--