コンテンツに移動
データベース

Wayfair がデータベースを一度に 1 つモダナイズしている方法

2022年1月27日
https://storage.googleapis.com/gweb-cloudblog-publish/images/databases_NlbBoR6.max-2600x2600.jpg
Google Cloud Japan Team

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

編集者注記: 18 か所のフルフィルメント センター、38 か所の配達センター、2,200 万点以上の商品のカタログを有するオンライン小売企業である Wayfair は、3,000 人以上のエンジニア チーム、数千万人の顧客、1 万 6,000 社のサプライヤー パートナーを混乱させることなく、SQL Server を稼働させているオンプレミスのデータセンターから Google Cloud へ迅速に移行する方法を必要としていました。今回の投稿では、その過程、選択肢、そして既に現在享受されているメリットについてご紹介します。

クラウドについて考えましょう

Wayfair の 10,000 以上のデータベースとレプリカは、主にオンプレミスのデータセンターでホストされている Microsoft SQL Server で構成されています。クラウドへの移行を成功させるためには、大規模な本番環境のトラフィックへの継続的なサービス提供能力を維持しながら、データベースを迅速に移行する必要がありました。SQL Server ワークロードでは、高度に特殊化し、最適化された構成と、データベースおよびサーバーの起動スクリプトが使用されています。また、ライセンスも持参する必要がありました。そこで目標としたのは、最小限の変更で可能な限り迅速にマシンをリフト&シフトし、クラウド データベースを使用してワークロードをモダナイズするとともに、移行後の SQL Server の使用量を削減することでした。

データベースの移行という課題に対処するために、Wayfair は Google Cloud のデータベース サービスを選びました。これらのサービスは、Cloud SQL for SQL Server を介してワークロードをクラウドに移行するための明確な道筋を示してくれると同時に、今後どのエンジンや製品でシステムを稼働させるかを慎重に検討するための柔軟性を与えてくれました。たとえば、仮想マシン(VM)上で SQL Server を実行することもできますが、Cloud SQLCloud Spanner のようなデータベース サービスを利用することもできます。

課題: より良いデータベースの選択肢を提供する

データベース テクノロジー組織では、Wayfair のエンジニアリング コミュニティがアプリケーションを開発する際に、サポートを受けられるようにしています。そのため、デベロッパーがアプリケーションを作成する際に選択できるように、特定のユースケースに合わせて事前構成されたデータベースのカタログを提供しています。その結果、開発チームはシークレット、バックアップ、デプロイ、利用可能な地域などの設定に時間を費やす必要がなくなります。

数千ものデータベースがある場合、個々のチームレベルで自己解決するのではなく、抽象化されたものと対話することができるため、開発時間の短縮や市場投入までの時間短縮につながります。移行の一環として、デベロッパーがデータベース カタログから必要な機能を満たすデータベースをより簡単に選択できるようにするため、他の方法の評価を始めました。

Google Cloud のデータベース サービスを選んだ理由

データベース カタログに追加する際には、デベロッパーと話をしてユースケースを知り、ニーズを特定することで、広範囲なプロダクトの発見を行います。この分析結果をもとに、どのデータベースが Wayfair のソリューションとして最適かを検討し、カタログに追加していきます。

最初の DBaaS プラットフォーム サービスについては、このプロセスにより、Cloud SQL と Spanner 上の PostgreSQL が初期リリース用のカタログとして選択されました。Wayfair が PostgreSQL を気に入っている理由は、業界での採用率やエコシステム、そして Wayfair のエンジニアが PostgreSQL に精通しているからです。また、現在は NoSQL プロダクトの必要性を評価している段階で、Bigtable Firestore などの他のソリューションのテストも始めています。データベースだけでなく、Google Kubernetes Engine(GKE)Compute Engine VM を使って、チームが構築するサービスをホストしています。また、Pub/SubDataflow を使用して、業務データを BigQuery の分析ストアに送ります。

データベースの提供については、データベース エキスパートの集中チームの専門知識と、Wayfair のデータベースの使用例を解決するためのツールや構成されたデータベース プロダクトを組み合わせた、DBaaS(database-as-a-service)プラットフォームを提供することにしました。たとえば、国際的なチームの中には、グローバルに分散された読み取りと書き込みを必要とするチームもあれば、大量のリードを必要とするチームはリードレプリカを必要とし、単一リージョンの読み取りと書き込みを必要とするチームもあります。 これらの要件を考慮して、Cloud SQL と Cloud Spanner 上の PostgreSQL、および Compute Engine 上の Microsoft SQL Server を活用するカタログを作成しました。

誰もが自由に働ける環境を整える

Google Cloud のマネージド データベース サービスの上にソリューションを構築することで、運用負荷が大幅に軽減され、デベロッパーやインフラストラクチャ エンジニアにこれまで以上に目的に合ったソリューションを提供できるようになりました。Google Cloud サービスでは、デベロッパーからの技術的な要求を、プロビジョニングされた仕様通りのインフラストラクチャ ソリューションに変換できます。

Google Cloud は複数のデータベース オプションを提供していますが、これは重要なことです。なぜなら、一つの基準を変更するだけで、Spanner、Cloud SQL、VM 上の非マネージド インスタンスなど、プロビジョニングするデータベースの種類に影響するからです。Wayfair は Hashicorp の Terraform を使用して、インフラストラクチャ エンジニアからプロビジョニングの側面を抽象化しています。また、Terraform をコマンドライン インターフェース(CLI)やグラフィカル ユーザー インターフェース(GUI)と統合するために、自社開発のツールと Backstage のようなオープンソースのソリューションを組み合わせています。

また、非同期ジョブのステータスの追跡、社内のサービス ディレクトリのホストといった一般的なニーズには、Cloud SQL for PostgreSQL を使用しています。Wayfair が目指しているのは、ユーザーがよく整備された道をたどることができる 80% のシナリオを解決することです。しかし、残りの 20% のシナリオでは、ユーザーがよりカスタマイズされたオーダーメイドのソリューションを必要とすることが常にあることを認識しています。

このようなアプローチをとることで、オペレーションの人員を大幅に増やすことなく、ビジネスに合わせて規模を拡大できました。チームが新しいデータベースのリクエストを提出し、DBA が構成し、構築するまで数日待つことなく、社内ユーザーは社内プラットフォームを通じて Wayfair が構成したデータベースをオンデマンドでリクエストできます。その結果、デベロッパーやエンジニアは、物理的なインフラストラクチャのプロビジョニングや抽象化を気にすることなく、Wayfair のアプリケーションやインフラストラクチャのコンテキストの中で思い通りに作業を進めることができます。

セルフサービスで革新的なアプリケーションを迅速に作成

データベースの実装では、DBaaS プラットフォームのユーザーにワークフローを提示し、宣言型の Q&A ワークフローを通じて必要な機能を共有します。そして、「データベース サービス」と呼ばれるコンポーネントが、ユーザーのニーズと、その要件にマッチするデータベースの提供をマッピングします。たとえば、Wayfair の中核となる e コマース サービスの中には、ユーザーが地理的にどこにいてもエンドユーザーのトラフィックを提供するものもあります。 このようなユースケースでは、大量のリクエストをサポートする必要があるため、データベース サービスでは、このリクエストを分散書き込みをサポートする Spanner にマッピングします。 

作成した構成が実際にどのように機能するかを確認します。 通常、高スループットの分散型ワークロードでは、手動でシャーディングしたデータベースを構築する必要がありますが、これらはサイクルタイムが非常に長く、管理者による継続的なメンテナンスが必要です。Wayfair DBaaS プラットフォームは、セルフサービスのワークフローを通じて Spanner インスタンスのプロビジョニングを可能にすることで、根本的に早い方法を提供しています。

そこから、データベース構成の詳細をメタデータ リポジトリに記録し、すべてのデータベースの状態を維持し、インスタンスをプロビジョニングし、シークレットを構成し、すぐに使用できるデータベース デプロイ パイプラインを提供します。このモデルでは、ユーザーはデータベースのリクエストからスキーマの設計、最初のデプロイまでを数時間で行うことができ、迅速な概念実証のためのイノベーションの時間が驚くほど早くなります。 管理者にとっての運用時間の短縮、ユーザーにとってのサイクルタイムの短縮は本当にすばらしいものです。

エンジニアの気持ちの大きな高まり

この 1 年で、Wayfair の DBaaS プラットフォームに対する社内のエンジニアの気持ちが大きく高まりました。サポートの NPS は 28.52%、ツール(商品)の NPS は 41.22% 増加しました。これらの成功した指標の秘密は、Google のマネージド データベースです。データベースは、Wayfair のユースケースを解決するために必要なプロダクトを提供しています。

今では、ユーザーへの対応に多くの時間を割くことができ、インフラストラクチャ管理にかかる時間を減らすことができるようになりました。クラウド プロバイダとして Google Cloud を利用することで、新しいユースケースをサポートするための市場投入までの時間を短縮し、オペレーションのオーバーヘッドを減らし、デベロッパーのベロシティを向上させ、ビジネスのスピードに合わせて拡張できます。

今後の展開

現在、既存のマイクロサービスやサービスを、Google Cloud のマネージド リソースを利用したデータベース プラットフォームに移行しています。Wayfair の目標は、非分散型データベース(Cloud SQL または Microsoft SQL Server)において、1 つのデータベースあたり平均 100~500 件のトランザクション/秒(tps)をサポートすることです。現在、DBaaS プラットフォームで構築された 280 以上のプライマリ プロダクション データベースを運用しており、必要なキャパシティは全体で 10,000~50,000 tps に達していますが、今後 1~2 年で 2~4 倍にする予定です。

分散型データベース(Spanner)については、今後 1~2 年の間に 10~20 個のデータベースで 1 つのデータベースあたり 500~5000 tps をサポートすることを目標としています。

詳しくは、Cloud SQLCloud Spanner の活用事例をご覧ください。

- エンジニアリング アソシエイト ディレクター Phil Portnoy 氏

- テクニカル プロダクト マネジメント アソシエイト ディレクター Tim Quinney 氏
投稿先