(Translated by https://www.hiragana.jp/)
Zendesk、DynamoDBからMySQLとS3へ移行し、コストを80%以上削減 - InfoQ
BT

最新さいしん技術ぎじゅつもとめるデベロッパのための情報じょうほうコミュニティ

寄稿きこう

Topics

地域ちいきえら

InfoQ ホームページ ニュース Zendesk、DynamoDBからMySQLとS3へ移行いこうし、コストを80%以上いじょう削減さくげん

Zendesk、DynamoDBからMySQLとS3へ移行いこうし、コストを80%以上いじょう削減さくげん

原文げんぶんリンク(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ミリびょうだが、すうびょうおよぶものもあり、チームはさらなる最適さいてき目指めざしている。

作者さくしゃについて

この記事きじほしをつける

おすすめ
スタイル

BT