安定したデータベースで経済的安定を提供
Google Cloud Japan Team
※この投稿は米国時間 2020 年 12 月 12 日に、Google Cloud blog に投稿されたものの抄訳です。
編集者注: 今回は、テクノロジーを活用したソリューションを提供し、消費者の債務返済と経済的安定の確立を支援する Freedom Financial Network にお話を伺います。組織全体で成長を続ける一連のサービスの需要に応えるため、同社は Rackspace から Google Cloud SQL に移行しました。
Freedom Financial Network の商品とサービスは、何十万人もの消費者の債務の減額や統合に活用されています。当社では、カスタマイズされた一連のソリューションを提供しており、独立したインスタンスに依存するこのソリューションを組織全体で共有しています。これを支えるのが、意思決定のためのインテリジェントなマイクロサービスのコア アーキテクチャです。
Google Cloud に移行するまでは、Rackspace のソリューションを利用していました。しかし、この 1 年で当社が大きな成長を遂げるなかで、組織全体でさらに包括的なサポートを提供するためには、インフラストラクチャ チームとプラットフォーム チームの負荷を軽減する必要があることに気づきました。また、モノリシック アーキテクチャからマイクロサービス アーキテクチャに切り替えることで、一連の消費者向け商品の拡大を図り、社内チームのインフラストラクチャへのアクセスをセルフサービス化して柔軟性を高め、さらに成長を加速したいと考えました。
Rackspace では、MySQL 上で実行しているインスタンスの大規模クラスタを、既存のモノリシック アーキテクチャを通じて管理しており、Freedom Financial Network のビジネス ユニットごとに大規模クラスタを 1 つずつ割り当てる構成でした。クラスタの管理は Rackspace が行っていたため手はかからなかったのですが、データベースを制御することはほぼできず、ディスクのサイズ変更のような些細な変更でさえ、最短でも数週間かかっていました。そのため、当社のデータベース インスタンスは過剰にプロビジョニングされ、高コストなものとなっていました。
Google Cloud で当社のデータベース全体のホスティングと管理をすれば、貴重な時間とリソースの節約につながり、さらに汎用性の高い Google Cloud SQL で柔軟かつ安全なソリューションを構築することで、チームとお客様のニーズに応えることができるとわかりました。既存のクラスタをそれぞれ複数のインスタンスに分割し、分割したインスタンスをオーバーヘッドの追加なしに自社で完全に自動管理できるようになりました。
Google Cloud で複雑な移行も簡単に
当社の移行の場合、モノリシック アーキテクチャからマイクロサービス アーキテクチャへの切り替えが伴いました。この場合、Google Kubernetes Engine(GKE)にデプロイし、サイドカー コンテナ パターンで Cloud SQL Proxy を使用するか、Go Proxy ライブラリを使用して Cloud SQL に接続します。マイクロサービスは、それぞれ独自のスキーマを使用します。また、スキーマは共有インスタンスでのグループ化や、高負荷アプリケーション専用のインスタンスでのホスティングが可能です。
当社では Google Cloud の新しい Database Migration Service(DMS)を活用することで、データベースを Rackspace から Cloud SQL に無事に移行できました。これを使用して 3 つの別々の本番環境データベースと合計 5 つのスキーマを移行しました。移行したデータ全体のサイズは 1 TB 近く、ダウンタイムは 15 分以下と、非常に楽に移行を終わらせることができました。その後 Rackspace でのサービスを停止し、現在は全データベースを Google Cloud のマネージド サービスで実行しています。当社の場合、データベースのサイズのため、DMS が唯一の選択肢でした。「ダンプとロード」による移行だったら、推定では、準備作業にかかる時間を含めずに 12 時間以上のアプリケーションのダウンタイムが生じるところでした。
Cloud SQL をデータベース基盤として使用する
移行後は、当社のセキュリティ、スケーラビリティ、柔軟性の目標を達成するうえで Cloud SQL が役立っています。最近サイズ変更を終え、現在、堅牢なマイクロサービスとインスタンスのセットをデプロイしています。推定では、350 個の CPU と 1,300 GB の RAM を消費するインスタンスが 180 個含まれる規模となります。当社のマイクロサービスには、シンプルなユースケースやアプリケーション構成データベースから、ビジネスチームが頻繁に使用する情報を扱うより大規模で複雑なデータベースまであらゆるものが含まれるため、180 個のインスタンスを管理しないで済むことで、大幅な時間の節約となっています。
Google Cloud SQL を使用すると、180 個のインスタンスの管理にかかる時間とリソースを節約できます。今後の成長を考えると、現在の構成の方が適していることは確実です。
Mathieu Dubois
現在、Freedom Financial Network のプラットフォーム チームは、Google Cloud で Terraform を使用して、社内の他のチーム用にリソースを新しく作成しています。たとえば、チームが新しいプロジェクトを開始する場合、デフォルトの Cloud SQL プロバイダ上でビルドした Terraform のカスタム モジュールを使用して、pull リクエストを送信するだけで、必要なインスタンスを作成できます。モジュールを作成することにより、すべてのインスタンスを一貫して作成できるようにします。このモジュールは、通常の命名規則に沿いつつリードレプリカを追加し、高可用性を実現する場合に、必要なインスタンスのサイズに関する一般的なデフォルト オプションを構成、管理するものです。
最近、GKE 上で Workload Identity を使用するように切り替えたことで、権限に関する柔軟性が大きく高まりました。当社のマイクロサービスにはそれぞれ Kubernetes サービス アカウントがありますが、このアカウントは Workload Identity を通じて Google Cloud のサービス アカウントにリンクされているため、Google Cloud のアカウントに必要な権限を付与すれば、マイクロサービスがそれぞれのタスクを実行するために必要なインスタンスにのみアクセスするように設定できます。
また、Cloud SQL Proxy の大きな利点としてセキュリティ機能を挙げることができます。データベースに SSL 接続を適用することで、外部からのデータベースへのアクセスを遮断でき、データの分離が容易に行えるため、信頼性の向上に役立ちます。さらに、データベースの分離を強化することで、インシデントが起こった場合に影響が及ぶ範囲を制限できます。すぐに使用できるモニタリングなどの Cloud SQL のすべてのサービスは、インスタンスに関する潜在的な問題を報告する場合に役立っています。
また、データベースの管理に Google Cloud を使用することで、社内の他のチームのサポートに多くの時間とリソースを集中できるようになりました。Freedom Financial Network のすべてのチームで業務スピードが上がれば、会社全体で業務を迅速化できます。それにより、ビジネス上の問題を効果的に解決すると同時に、新しい分野やお客様のための商品に手を広げて成長を加速できます。Google Cloud SQL を使用することで、構造を一新し、成長予想に合わせて最適化できました。
Freedom Financial Network の詳細と、Google Cloud SQL の詳細をご確認ください。
-Freedom Financial Network シニア エンジニアリング マネージャー兼プリンシパル アーキテクト Mathieu Dubois