プレッシャーの大きい移行プロジェクト、円滑に進めるための工夫とは
──移行の作業において、やってよかった点について教えてください。
Greg:実際にGoogle Cloud上にTimeTreeの小規模なAPIセットを持つミニアプリを構築し、Spannerとつなげて試したのはよかったですね。そうすることで、チューニングすべき箇所や改善すべき点が見えたと思います。
金井:インフラに関して、SREチームのメンバーがその後の運用を引き継ぐことを考え、IaC(Infrastructure as Code)化したことがよかったです。
マインド面では、妥協しないことが重要でした。大きなデータの移行は精神的にもかなりの負担があり、さらに大きなコストもかかります。問題を早期発見・解決できるように、Google Cloudの担当者とのコミュニケーションを密に取ることを心がけました。
──どのような点が特に大変でしたか。
金井:苦労したのはデータの移行ですね。本当に移行できるのか、確信が持てないまま進めるのは非常に苦しかったです。
Greg:バックエンドエンジニアの観点では、他のアプリケーションの開発プロジェクトと並走させることに苦労しました。新しい機能の追加の際、それがSpannerに対応しているかをチェックする必要があったのです。
技術的な面では、ビット反転シーケンスを利用したことです。こういう機能はフレームワークの標準の機能では存在しなかったので、本当に問題が無いと言えるよう、フレームワークを改修して対応しました。
──Spannerへの移行が完了し、どのような成果が得られましたか。
金井:まず、Google Workspaceのアカウントと連携できたことで、セキュリティ面が向上しました。次に、データベースの物理的上限がほぼ無くなったので、今後の運用が楽になったことが挙げられます。サービスの成長を妨げる不安がなくなったことは大きいですね。他にも、分析対象となるデータの移動が楽にできるようになりました。今後、Spannerで順次提供されている拡張的な検索を活用することで、私たちのサービスの成長に活かせるのではと期待しています。
TimeTreeという大きなチームで立ち向かったデータベース移行
──今回の移行プロジェクトを通して、どんな学びや気付きがあったのでしょうか。
金井:データベース移行のような大きなプロジェクトを成功に導くには、周りの協力が欠かせません。自分たちが何に取り組んでいて、その取り組みがどれだけ大切なのかを、恐れずに発信していくこと。周りの協力を得るためにもっとも大切であると学びました。
また、準備を怠らないことも当然ながら重要です。特にこのような大きなプロジェクトを完遂するためには、“準備し過ぎる”ぐらいがちょうどいいと言えると思います。
Greg:発信していくことに加え、協力を呼びかけ、周りを巻き込んでいくことも重要でした。そうすることで、各ドメインに強い人たちから、正確な情報が手に入ったりするからです。自分たちのチームだけではなく、TimeTreeという大きなチームで向かっていくんだということを、意識できたプロジェクトでした。
もう一つ学んだことは、選択肢を探し続けることの大切さです。一つのやり方がダメでも、他のアプローチを探していく。そしてその中で自分たちに適したものを選んでいく勇気も必要だと学びました。

──データベース移行が完了した現在、今後どのようなチャレンジをしていきたいですか。
金井:今後はサービスへの寄与を考えていきたいですね。企画職の人だけではなく、みんながサービスに対してアイデアを出せるような環境をつくりたいと思います。
Greg:Google Cloudに関する知見をさらに習得し、サービスの拡張に生かしていきたいと思います。
TimeTreeでは一緒に働く仲間を募集しています!
バックエンドやSREはもちろん、TimeTreeでは幅広くエンジニアを募集しています。本記事で興味を持たれた方はぜひTimeTree採用サイトからご応募ください。