## 概要
オンプレにあるAerospikeと呼ばれるKVSをGCPのBigTableに移行するための要件定義、API構築、インフラ構築、他事業部支援を行なった。
## やったこと
セッションデータを管理するためにオンプレでAerospikeが動いていたが、スケールに耐えきれなくなったことや、保守が手間であることを理由に他事業部がクラウドへの移行を検討していた。
移行方法時代の立案から参画し、少しいびつな形でのダブルWriteを行うことになった。
というのもオンプレのAerospikeはネットワーク的に外部に公開することが出来ないため、GCP側に乗せるAPIからは書き込みや読み込みが不可能なためである。
そこでオンプレ側にAerospikeのデータを読み込むためのAPIの開発をGoを用いて1から行なった。
要件として1万RPS以上をさばけることが上げられていたので、クラウドにあるAPIからはgRPCを用いて通信を行うことで無駄なJsonのMarshal/Unmarshalを行わないようにした。
オンプレではシンプルにdocker-composeで運用することにした。
これはおおよそ半年程度しか必要のないAPIでk8sなど大掛かりなコントロールプレーンが必要ないと判断したためである。
また監視等はDataDogを自分で導入した。
また他事業部が作成したAPIのコードレビューに参加し、DDDライクなパッケージ構成を仕切れていなかった部分を教育した。
具体的には毎回無駄に外部API呼び出しのためのクライアントを生成していたのをDIを行えるような形に変換し、使い回せるような形にした。
またGraceful Shutdownが実現できていなかったのでそこを修正した。
テストもMockを使った形で実現できていなかったので、Mock用のオブジェクトの作成方法やテーブルドリブンテストの方法なども教育し、無事に各層の依存がないテストを作成することが可能な人材を作ることが出来た。
またそちらの手が回っていないということでGKEにDataDogによる監視を行うための設定やAlert設定等も行なった。
途中CircleCIからGithub Actionsへの移行が必要となったのでそれもすべて担当を行った。
また負荷試験の際に必要だったAPMの導入も行い、どこがボトルネックなのか可視化できるようになった。