Cloud Spannerの無料トライアルがGAしたので、Rails on Cloud Run X Cloud Spannerを構築した話

40206 ワード

はじめに

先日、Cloud Spannerの無料トライアルが来ました。

個人的にCloud Spannerについて気になってはいたのですが、個人でお試しで使うには少々高価なので、気が引けたのですが無料となれば話は別。さっそく使ってみました。

作成に使用したコード等は下記リポジトリに公開しておりますので、どなたでも試すことは可能です。
(あくまで試用のため、比較的単純なデータ構造をとっています)

rails-cloud-spanner

※あらかじめGCPのプロジェクトやgcloud cliの準備は済ませておいてください。
また、使用するGCPのAPIは下記のとおりです。あらかじめ有効化をお願いします。

  • Cloud Spanner
  • Cloud Run
  • Cloud Build
  • Secret Manager
  • Cloud Key Mangement

本記事で取り扱うこと

  • アプリが稼働するCloud Run、Cloud Spannerに関する簡単な説明
  • 無料トライアル枠のSpannerを構築し、Cloud Run上で稼働するRailsと連携する方法
  • Spannerを用いるRailsをローカルで開発する方法

取り扱わないこと

  • RailsやSpanner、Cloud Run、Terraformなど使用技術の細かい仕様
  • Spannerの性能回り
  • SpannerやCloud Runのパフォーマンスチューニング
  • Railsのコードの内容やRailsでの開発の流れ

使用技術について

Cloud Spanner

Cloud Spanner (以下、Spanner) は優れたスケーラビリティ、強整合性、99.999%の可用性、自動シャーディング機能を備えたフルマネージド New SQLサービスです。

AWS の RDS やAurora、 GCP の Cloud SQL などのマネージド RDB サービスを使うとき、サイジング、フェイルオーバー、レプリケーション、リードレプリカなどの設計が必要になります。
Spanner はノード数とリージョンを設定するだけで構築でき、ノード数に関しても性能が足りなくなればダウンタイムなしで追加できます。
そのため従来の RDB サービスに比べてインフラとしての構築・運用コストは遥かに少なく済みます。
(ダウンタイムなしのスケーリングができるRDBサービスに関しては、2022年4月にAWSがAurora Serverless v2を一般提供しています)

ただしSpannerはその性能要件のため、通常のRDBサービスと比べても高価です。

本記事で作成するのは、無料トライアル枠での利用となりますので、スケーラビリティや可用性、シャーディングなどのSpannerの強みを最大限に活用できないことはあらかじめご承知ください。

※今回作成するSpannerインスタンスは90日経過後自動的に終了します。
その他トライアル枠の制約については下記をご参照ください。