データベース

SenseData 社は Google Cloud のマネージド データベース サービスに移行

#databases

※この投稿は米国時間 2021 年 10 月 20 日に、Google Cloud blog に投稿されたものの抄訳です。

編集者注: カスタマー サクセス手法を導入できるようにブラジルの企業を支援している SenseData 社が、Google Cloud と Google マネージド データベース サービスを基盤にどのように自社製品を迅速に進化させているかをご覧ください。わずかな数の顧客を 140 社にまで増やし、数テラバイト規模のデータを管理するようになった SenseData 社は現在、データ ウェアハウジング用に Google BigQuery への移行を進めています。

SenseData はカスタマー サクセスを推進する企業であり、扱っている製品は 1 つです。当社のクライアントの皆様がより的確にビジネス上の意思決定を行えるよう、クライアントのシステムから収集したあらゆる情報を 1 つのプラットフォームに集約して利用可能にしています。クライアントの目的は、販売促進、解約数の削減、より広範囲の顧客層の調査など多岐にわたります。

当社の顧客ベースが急速に拡大していくのに伴い、プラットフォームで収集 / 管理して利用可能にする必要のあるデータ量も急増しています。ほんの 5 年前、当社は最小実装製品(MVP)としてカスタマー サクセス サービスを提供していました。ブラジルの B2B 顧客には「デフォルト」のソフトウェア スタックというものがありません。そのため顧客はさまざまなシステムとソフトウェアを寄せ集めてカスタマー リレーションシップ マネジメントを行います。こうした多種多様なあらゆるシステムからのデータを統合することが、私たちの目標でした。この目標を達成すべくクラウド移行に乗り出したわけですが、その際に目指していたのは、特定のクラウドに依存せずに MySQL などのオープンソース ソフトウェアとその他のツールでデータを管理することでした。  

やがて、こうした展望が変わりました。そのきっかけとなったのは、初めて参加した Google for Startups Campus の Residency Program です。この研修プログラムで、私たちは Google Cloud Platform と Google のマネージド データベース サービスの存在を知ったのです。クレジットを使い果たしましたが、それに見合う成果がありました。「Google Cloud ですべてをまかなう」価値を見い出せたのです。

当社の進化には、Google の新しいマネージド データベース サービスが大きく貢献しています。データ形式とストレージの変化に併せてサービスを進化させていく Google には、実に感銘を受けています。何にも増してありがたいのは、MySQL および PostgreSQL 向けの Cloud SQL により、また今では BigQuery により、データベース管理者にとって必要なバックアップ、復元、レプリケーションなどの作業を心配しなくてよいことです。こうしてプラットフォームの継続的改善に集中して人材を投入できます。

MySQL を脱却して Google サービスでエコシステムを構築

SenseData が当初使用していたアーキテクチャは、MySQL、アプリケーション サーバー、そして別のベンダーのクラウド インフラストラクチャで構成されていました。Campus の研修期間中に GCP に移行し、Cloud SQL for MySQL を使用するようになりました。クライアントのデータ形式とソースが多岐にわたっていたからです。Oracle、Microsoft SQL Server、Google スプレッドシート、他のクラウド インフラストラクチャに保存された CSV、VPN でのみデータソースにアクセス可能なシステムなど、多種多様でした。

当社のプラットフォームではあらゆる顧客データが完全に分離されます。このためクライアントが増加するにつれて MySQL では対応しきれなくなり、Cloud SQL を介して PostreSQL に移行しました。また、MySQL では一部のインデックスとクエリのパフォーマンスが不十分でしたが、PostgreSQL ではまったく同じ方法で、同じインデックスとクエリを使ってパフォーマンスが一貫して向上しました。アプリのデータベース層では ORM ツール(SQLAlchemy)を使用しているので、MySQL から PostgreSQL に移行するのは簡単なことでした。

それと同時に、Google Kubernetes Engine を使用して Kubernetes に移行しました。この組み合わせによって生まれたエコシステムは、さまざまな技術的ニーズに対応できます。たとえばファイアウォールを構築するには Kubernetes を起動して下り(外向き)ルールを作成でき、これによってロード バランシングにも簡単に対処できます。同じ外部 IP を使った外部アドレスを各顧客に 1 つずつ割り当て、Kubernetes 内では、ホストルールで該当する顧客を特定してアドレスを選択できます。

このエコシステムが、当社にとって大きな転機となりました。あらゆるテクノロジーとデータを 1 つのバスケットにまとめようと計画していたわけではありませんが、低レイテンシでサポートが手厚く、あらゆる面でトップクラスのデータベースとマネージド データベース サービスを使用することの重要さが、当社自身の経験から明らかになりました。成長過程にある企業にとって Google がどれほど役立つか、理解するのに時間はかかりませんでした。私たちは他の GCP リソースも利用することに決めました。Google のトップクラスのサービスに簡単にアクセスできるからです。

一石二鳥: Google Cloud SQL によってクライアントに安心を届ける

SenseData 社のような、クラウド サービスを提供したりクラウド ストレージ / データ管理を使用したりする企業をご利用いただくクライアントの皆様は、データ セキュリティについて懸念し、自社のデータに他の顧客がアクセスしないだろうかと不安を持つでしょう。SenseData は Google サービスを使用して顧客のデータを確実に分離し続けています。GCP 上で Cloud SQL for PostgreSQL を使用してデータベースごとに単一のテナントを割り当て、インスタンスごとに複数の顧客データベースを使用します。つまりインスタンスは共有されますが、論理データべースは共有されません。

また JSON-B のカスタムデータにより、JSON ドキュメント / ハイパーメディア間のデータ バインディング関係を記述します。たとえば当社のクライアントの SaaS 企業がコンサルティング サービス、e コマース店舗、タクシー呼び出しモバイルアプリをすべて販売している場合、クライアントが収集した多種多様なデータをこのカスタムデータに簡単に結合できます。こうして、クライアントのニーズを満たす統計指標と計算を配信できます。

アプリケーション層でデータを簡単に分離

アプリケーション層でデータを論理的に分離できるように、4 つの CPU と 15 GB の RAM を搭載した 13 個のノードからなるクラスタを使用しています。このクラスタ内部では、論理的な分離に名前空間が使用されます。オンボーディングと本番環境は、それぞれ独自の名前空間に分かれています。Kubernetes の ConfigMap 内にはパッチがあり、このパッチによって各顧客をその顧客固有のデータベースに誘導します。

つまり Pod がデプロイ手段です。ConfigMap は、特定のデータベースに応答するように Pod に指示します。サービスビューには名前付きポートがあり、そのビューから利用できる特定のアプリセレクタもあります。ホストの外向きルールが、それぞれのサーバーとポートに向かうドメインを指定します。私たちはこの手法を使って顧客ごとに異なるサービスを提供しています。

BigQuery の構想: クラウド内のデータ ウェアハウジングによって顧客が KPI を満たせるように支援

最近、当社は BigQuery を導入し始めました。BigQuery を導入した理由は、当社の分析機能を別のベンダーから Looker に移行しようとしていたとき、これを機にパフォーマンスを改善して大口のクライアントの KPI ニーズに対応したいと考えたからです。大口のクライアントには百万人もの顧客がいますが、彼らのすべての KPI が最適なパフォーマンスを示すとは限りませんでした。これらのクライアントの多くは、製品の販売状況を KPI に照らして追跡する必要がある e コマース企業です。製品ごとに、過去の販売データを調べて特定の SKU を探し出し、製品が最後に購入された日などを判別しなければなりません。この作業を多数の製品で並行して行うとどうなるか、想像してみてください。PostgreSQL ではかなり複雑な作業になります。

BigQuery なら、すばやく簡単にパフォーマンスに対処してスケーラビリティを向上させることができます。私たちはすべての計算処理を BigQuery に移行する予定です。すべてのデータが集計された後、それを PostgreSQL に戻すことができます。BigQuery から Cloud SQL にデータを戻すには、Python クライアントを使用します。Cloud SQL とデータ ウェアハウジングは、見事なまでに進化しています。こうして新しい構成とデータ管理手法を自由に試すことができるのです。この先 2 年もすれば、顧客データの処理方法を変更する必要が生じたとしても、Cloud SQL や他の Google サービスの進化のおかげでその変更を簡単に実現できると確信しています。

たった 1 人で: Cloud SQL によってデータ管理が容易に

Cloud SQL と Google Cloud Platform は、複雑なデータベース管理に対処するサービスを提供してくれるだけでなく、観察、モニタリングなどの点でも役立っています。おかげで SenseData のインフラストラクチャはこれまで約 6 年間、1 人の担当者だけで管理されています。当社の顧客は 140 社にまで増え、テラバイト規模のデータを扱うようになりましたが、それでもインフラストラクチャ管理の大部分は 1 人の担当者で対応できます。

なぜこれが可能なのでしょうか。答えはシンプルです。バックアップにも、メンテナンス ダウンタイムにも、レプリケーションの問題にも私たちが対処しなくてよいからです。代わりに Cloud SQL がすべて処理してくれます。ですから DBA、ネットワーキング担当者、VM 管理者などからなるチームを配属する必要はありません。これは当社にとって大きな価値があります。もし、特定のベンダーに依存しないクラウド ソリューションを見つけるという最初の計画にこだわっていたとしたら、ここまで効率化できなかったでしょう。Google のマネージド データベース サービスと GCP および GKE は大きな違いをもたらしました。

SenseData 社Cloud SQL の詳細をご覧ください。無料トライアル で Cloud SQL を使ってみることもできます。Cloud SQL で容易にデータを保護する方法についての最近のブログもご確認ください。

Paulo Souza 氏、SenseData 社創設者兼 CTO 

Renan Zanelatto 氏、SenseData 社創設者兼 CPO