Movatterモバイル変換


[0]ホーム

URL:


BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

InfoQのすべての体験をアンロックして、そのメリットを最大限に活用しましょう

ログインして、InfoQのすべての体験をアンロックしましょう!お気に入りの著者やトピックの最新情報を入手し、コンテンツと交流し、限定リソースをダウンロードできます。

ログイン
または

アカウントをお持ちでない方

登録
  • あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。
  • 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。
  • 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

Topics

地域を選ぶ

InfoQ ホームページニュースZendesk、DynamoDBからMySQLとS3へ移行し、コストを80%以上削減

Zendesk、DynamoDBからMySQLとS3へ移行し、コストを80%以上削減

2024年2月5日読了時間3分

作者:

原文リンク(2023-12-29)

Zendeskは、DynamoDBからMySQLとS3を使用した階層型ストレージソリューションに移行することで、データストレージのコストを80%以上削減した。同社は様々なストレージ技術を検討したが、コストを抑えつつ、クエリ性とスケーラビリティのバランスを取るために、リレーショナルデータベースとオブジェクトストアを組み合わせることにした。

Zendeskは、ストレージにDynamoDBを使用して、イベントストリームデータの永続化ソリューションを作成した。初期の設計はうまくいっていたが、ソリューションの運用コストがどんどん高くなっていった。チームはプロビジョニング課金モデルに切り替え、コストを50%削減したが、顧客ベースの拡大と新しいクエリパターンをサポートするためのグローバルセカンダリインデックス(GSI)の必要性に伴い、アーキテクチャの運用コストは維持できなくなった。

DynamoDBを使用した初期のアーキテクチャ(出典:Zendesk Engineering Blog)

ZendeskはAWS上でプラットフォームを運用しているため、チームはコストを削減しながら機能的・技術的要件を満たせる代替ストレージソリューションを探していた。S3Hudi(Zendeskで使用されているデータレイク)、ElasticSearchMySQLを検討したが、Hudiはその複雑さと24時間の遅延が発生するため、ElasticSearchはDynamoDBを使用するのと同様のコストのため、採用を見送った。最終的にチームは、Apache Kafkaからのログのバッファリングとメタデータの保存にMySQLを使用し、1ファイルあたり10,000のバッチで生データを保存するためにS3の使用を決定した。

インジェストフローでは、Kafkaから消費されたログデータをMySQLのバッファテーブルに格納する。1時間ごとに、バックグラウンドジョブがバッファテーブルからS3に1ファイルあたり1万ログのバッチで新しいレコードをアップロードし、S3ファイルごとにメタデータレコードを挿入する。別の毎時ジョブは、バッファテーブルから4時間以上前のログを削除する。

MySQL(AuroraDB)とS3を使用した新しいアーキテクチャ(出典:Zendesk Engineering Blog)

クエリを処理するために、新しいソリューションでは、MySQLのメタデータテーブルをルックアップし、ルックアップによって返されたファイルに対してS3-Selectクエリを並行して実行する必要がある。データレイアウトは時系列検索に最適化されているため、チームはより複雑なクエリを実行する際に問題を経験した。

Zendeskの技術開発部門の責任者であるShane Hender氏は、新しいアーキテクチャにおける柔軟なクエリの課題についてこのように説明している。

一通り動作させた後、クライアントがタイムスタンプ以外のフィールドで結果をフィルタリングしたい場合、パフォーマンスの問題が発生しました。例えば、クライアントが特定のユーザーIDのログが欲しい時、最悪の場合、関連するログを見つけるために、時間範囲内の全てのS3データをスキャンしなければなりません。

エンジニアは、より多くのフィルタリング可能なフィールドを扱うために、S3でデータを複製することを検討したが、フィールドの組み合わせの数を考えると、このアプローチは実現不可能だった。最終的に、彼らはブルーム・フィルターに注目し、さらにCount-Min Sketchデータ構造と組み合わせることで、マルチフィールド・フィルタークエリーをサポートする効果的な方法を提供した。改善されたソリューションでは、クエリするS3ファイルを決定するために使用されるシリアライズされたデータ構造を格納する追加のテーブルが必要になった。

移行後、ZendeskはストレージコストをDynamoDBのプロビジョニングコストの20%未満に削減し、MySQL (AuroraDB)が90%以上、S3とS3-Selectが10%未満を占めるようになった。新しいソリューションのクエリレイテンシは約200-500ミリ秒だが、数秒に及ぶものもあり、チームはさらなる最適化を目指している。

作者について

Rafal Gancarz

もっと見るより少なく

この記事に星をつける

おすすめ度
スタイル

  • 関連記事

      • 関連スポンサーコンテンツ

    特集コンテンツ一覧

    InfoQ ニュースレター

    毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。サンプルを見る

    We protect your privacy.

    BT

    [8]ページ先頭

    ©2009-2025 Movatter.jp