Rethinking latency-sensitive DynamoDB apps for multicloud, multiregion deployment 広告を配信する全プロセスは200〜300ミリ秒以内に起こります。当社のデータベース検索は1桁のミリ秒で完了しなければなりません。毎日何十億件ものトランザクションが行われているため、データベースは高速で、スケーラブルで、信頼性の高いものでなければなりません。 トッド・コールマン(Todd Coleman)、Yieldmoの技術共同創設者兼Chief Architect 広告を配信する全プロセスは200〜300ミリ秒以内に起こります。当社のデータベース検索は1桁のミリ秒で完了しなければなりません。毎日何十億件ものトランザクションが行われているため、データベースは高速で、スケーラブルで、信頼性の高いものでなければなりません。 トッド・コールマン(Todd Coleman)、Yieldmoの技術共同創設者兼Chief Architect Yieldmoのオンライン広告ビジネスは、サブ秒遅延応答で毎日何十億件もの広告リクエストを処理することに依存しています。当初、同社のサービスはDynamoDBに依存していて、チームはシンプルさと安定性を重視していました。 最近の会話では、 イエルドモの技術共同創設者兼最高建築家であるトッド・コールマン氏は、同社が直面した技術的課題と、ScyllaDBのDynamoDB対応APIでチームが最終的に前進した理由を語った。 モンスタースケールサミット あなたは彼の完全なスピーチを下に見ることができますか、またはレビューのために読み続けることができます。 https://youtu.be/sk0mIiaOwM8?embedable=true Lost Business = 失われたビジネス Yieldmoはオンライン広告プラットフォームで、出版社と広告主をリアルタイムでページロードとして接続します. ほぼすべての広告リクエストは、機械学習の洞察とデバイスアイデンティティの情報を取得するデータベースクエリを引き起こします。 効果的な競売 パートナーがオファーをするかどうかを決定する手助け 広告が既にデバイスに表示されている広告を追跡し、広告主が周波数制限を管理し、広告配信を最適化できるようにします。 広告パイプライン全体はわずか200〜300ミリ秒で完了し、そのほとんどの時間をパートナーが評価し、オファーを提出することに費やす。 ユーザーがウェブサイトを訪問すると、Yieldmoに広告リクエストが送られます。 Yieldmoのプラットフォームは、リクエストを分析します。 パートナーから潜在的な広告を求めています。 優勝オファーを決定するために競売を行います。 データベースの検索は、パートナーへの通話の前に起こらなければなりません。これらの検索は、1 桁のミリ秒の遅延で完了しなければなりません。 Coleman 氏は、「毎日数十億件のトランザクションが行われているため、データベースは高速で、スケーラブルで、信頼性の高いものでなければなりません。 DynamoDB Growing Painsについて Yieldmoの生産インフラストラクチャはAWSで実行されているため、DynamoDBはチームがアプリケーションを構築したときに論理的な選択でした。 第一に、DynamoDBはビジネスが拡大するにつれてますます高価になりつつあり、第二に、同社はAWS以外のクラウドプロバイダーで広告サーバーを実行するオプションを望んでいた。 Coleman氏は「一部の地域では、たとえば、米国東海岸、AWS、GCP(Google Cloud Platform)データセンターは、遅延が最小限に近づいており、DynamoDBデータベースをGCPで実行されている広告サーバーから攻撃することは問題ありませんが、ダブリンのDynamoDBにアクセスしながらアムステルダムでGCPベースの広告サーバークラスターを立ち上げようとしたとき、遅延は非常に高かった。 DynamoDB オプション Yieldmoのチームは、非常に読み重いデータベースワークロードに適したDynamoDBの代替案を探求し始めました。 パートナーからのリアルタイムのデータの継続的な流れで、Yieldmoのデータをパートナーのデータと一致させるために不可欠です。 歴史的データから得られた機械学習の洞察力によるバッチアップデート この高周波の読み取りと構造化された書き込みのバランスを考慮して、同時にパフォーマンスの低下なしで同時更新を効率的に管理しながら、大規模で低遅延のアクセスに対処できるデータベースを探していました。 チームは最初にDynamoDBと滞在し、キャッシュレイヤーを追加することを検討しましたが、キャッシュは地理的な遅延の問題を解決できず、キャッシュの欠落はこのオプションでさらに遅くなります。 彼らはまた、スピードとクロスクラウドサポートを提供するAerospikeを調査したが、Aerospikeのインメモリインデックスには、Yieldmoの小型データオブジェクトの大量を処理するのに非常に大きく、高価なクラスターが必要だと知った。 その後、スカイルラDBを発見し、スピードとクロスクラウドのサポートも提供したが、DynamoDB対応のAPI(Alternator)と低コストだった。 Coleman 氏は、「ScyllaDB はクロスクラウド展開をサポートし、管理可能なサーバー数を必要とし、競争力のあるコストを提供しました。 ScyllaDB 評価、移行、および結果 ScyllaDB がどのように環境で動作するかを評価するために、チームは 1 つの地域に広告サーバーのサブセットを移行しました. これには、リアルタイムのアップデートを維持しながら複数のテラバイトを移行することがありました. プロセスとして、Spark ベースの移行ツールで ScyllaDB の歴史データをコピーし、ML バッチの仕事を休止し、カフカアーキテクチャを活用して、最近の書き込みを ScyllaDB に再生しました. 約 28 億のオブジェクト (~ 3.3 TB) を含む 1 つの DynamoDB テーブルを移動するのに約 10 時間かかりました. 次のステップは、5 つの AWS リージョンにわたってすべてのデータを移行することでした。この段階は約 2 週間を要しました。パフォーマンスを評価した後、Yieldmo は ScyllaDB を主な状態に昇格させ、最終的にほとんどのリージョンで DynamoDB への書き込みを中止しました。 ほぼ1年後、コールマン氏は移行について述べ、「最大の利点はマルチクラウドの柔軟性ですが、それなしでも移行は有益でした。データベースコストはDynamoDBと比較して約半分削減され、保有容量価格でさえ、私たちは軽度の遅延改善を見ました。 ScyllaDBとDynamoDBの比較方法