見出し画像

Argo CDでdeployする半独立開発環境を作ってみた - REALITY Advent Calendar 2021 #14

REALITYでサーバエンジニアをしているKuyamaです。

突然ですが、ここでコソコソREALITY裏話です。実は、REALITYのサーバサイドの開発環境は1つしかありません。全ての開発用クライアントアプリがそのたった1つしかない開発環境につながっています。そして、REALITYの新機能開発は日夜行われています。

するとどうなるでしょう。

答えは簡単。「あらゆる開発中の機能が入った闇鍋のような開発環境」が出来上がり、しかもそのたった1つの開発環境が壊れた瞬間に「全ての開発がストップ」します。つまり、開発環境なのに「壊れてはいけない」のです。

こんな開発環境でいいのでしょうか。いや良いわけありません。

というわけで、私の開発合宿のテーマは「壊れても即座に復元することのできる、本番環境に近い新開発環境の作成」になりました。

仕組み

現行のREALITYは基本的にGKE上で動いているため、新開発環境もGKE上で動くように作成します。また、この新開発環境では「本番環境に近いもの」をコンセプトにしているため、Argo CDを使用して簡単に本番環境をクローニングできるようにします。

GKE上で動く諸々のリソースのマニフェストはgitで管理され、本番環境へのdeployが行われるたびに、自動的にマニフェストが更新されます。Argo CDでボタンを押せば、実際に本番環境上で動いているDockerコンテナイメージを取得し、Podが立ち上がります。

開発用に機能を加えたサービスをdeployしたい場合は、開発者のローカルから直接deployを行います。

本番環境へのdeploy時

仕組み1

新開発環境へのdeploy時

仕組み2

成果

早速ですが、出来上がった新開発環境にクライアントからアクセスしてみました。分かりやすいように、APIレスポンスを弄って表示をめちゃくちゃにしてみます。

画像4

見慣れたREALITYのTOP画面がめちゃくちゃに!

でも問題ありません。Argo CDを使えば即座に復帰できます。

画像4

元の開発環境と独立して動く、いくら壊しても安心な新開発環境が出来上がりました。

元々の開発環境と、この新しい開発環境を併用して、REALITYの開発速度をさらに上げていきます。

明日のアドベントカレンダーは

15日目は、unityでのREALITY開発を担当しているホンダさんによる「Niantic Lightship ARDK触ってみた」です。お楽しみに!