Amazon Web Services ブログ

グローバルマルチメディア通信社であるロイターがアマゾン ウェブ サービスをどのように利用しているかをご覧ください

私は Thomson Reuters でソリューションアーキテクトを担当している、Romeo Radanyi です。チームがクラウドテクノロジーを理解したり、導入できるようサポートしています。企業レベルの標準規格の設定、人工知能や機械学習の計画の推進、そして数多くのロイターシステムの構築にも携わっています。また、データサイエンスとJupyterノートブックの初心者向けのコースを A Cloud Guru で開発して提供しました。

ロイターは、世界最大のマルチメディアニュース源で、みなさんが目にしたり、読んだり、聞いたりするニュースネットワークへのニュースソースを提供しています。弊社は、いわば卸売業者の一種です。つまり、BBC、CNN、ニューヨークタイムズ、ワシントンポスト、そして他の世界中のお客様向けに、さまざまな形式で生のニュースを販売しています。

このブログ投稿では、ロイターがコンテンツの大部分を AWS に移行した方法を取り上げます。AWS のターンキーオブジェクトストレージソリューションである Amazon Simple Storage Service (Amazon S3) とそのコンテンツ配信ネットワーク (CDN) である Amazon CloudFront を使用して、どのように世界中の何十億もの人々に日々コンタクトするのかを説明します。

レガシーシステムが直面した課題

弊社は 5年前に、新しく開発したすべてのロイターシステムの戦略的プラットフォームとして AWS を選択しました。あなたは、「なぜ?」と質問するかもしれません。

ロイターは、さまざまなフォーマットでコンテンツを作成して配信しています。フォーマットには、動画、画像、テキスト、さらにはニュース速報でのライブストリームなどがあります。さらに、記録保管として1896年当時の物理テープもありました。最後に重要なことですが、弊社は実質的にミニデータセンターである 200 を超えるニュース局から成るグローバルな規模を持っています。これらの局では、現場で生のコンテンツを撮影し、編集した主な情報源を扱っています。世界中のこのようなコンテンツすべてをさまざまなフォーマットやフレームレートで、瞬時に保存、変換、提供することは簡単な作業ではありません。

最初は、コンテンツの保存、変換、提供、チームが学習してプロセスに統合するために必要な工数などの一部の作業をサードパーティに頼ってました。サードパーティと協業した際、サービス停止やサービス関連の問題を解決するのに課題が発生し、それらを改善するためのプロセスを実行するまで時間がかかりました。ロイターチームからの広範なサポートがあっても、コストは増加していました。様々な記録媒体において、テープは安価で使いやすいですが、取り出しに時間がかかるため、コンテンツを世界中のニュースアウトレットに配信して販売するのはほぼ不可能です。弊社の実際の局において、それらのすべてのミニデータセンターをそれぞれが島であると想像してください。コンテンツを編集用に暫定的に保管するための拡張可能な空間がない限り、共同作業するのは難しいです。

結果として、ロイターは 3 つの主な課題に直面していました。一つ目は、第三者にすべてのメディア資産の保管を委託するとか、高価な CDN を使用することが、将来的な選択肢でなくなりました。二つ目は、記録保管されているテープが広範囲なコレクションのため、情報を迅速に配布することが困難でした。三つ目は、弊社の実際の局では、島のようなデータセンターすべての間で結びつきが不十分なため、チーム間で協力し合うことがうまくいきませんでした。

AWS Glue の選択

AWS と Amazon S3 に慣れるにつれ、API と HTTPS 呼び出しによる幅広い機能と使いやすく、組織全体の課題に対する完璧なソリューションであることがわかりました。さらに、AWS と Amazon S3 のコスト面と耐久性のリットも享受しました。これは CDN プロバイダーへのコンテンツの取り込みの大部分が依然として FTP 経由であった 2015 年のことです。

最初は、クラウドへの取り組みを始めたばかりで、他社と同じように慎重でした。主要なグローバルニュースの組織として、注意しなければならないことがいくつかありました。

  1. セキュリティ
  2. グローバルカバレッジ
  3. 配信のレイテンシーと速度
  4. 可用性
  5. 耐障害性
  6. スケーラビリティ

まず初めに、Amazon CloudFront に対してさまざまなテストダウンロードを行い、配信とカバレッジの速度を検証しました。ロイターでは、主要な収益源の1つがまだ放送事業のため、世界中に分散している物理的なテストクライアントの規模が大きいです。ハードウェアデバイスとサーバーをお客様に提供して、従来の放送ワークフローをサポートし、シリアルデジタルインターフェースを使用して編集ワークフローにニュースコンテンツを直接フィードできるようにしました。コンテンツは衛星経由でインターネット配信ベースのバックアップでこれらのサーバーに配信されます。ただし、クラウドコンピューティングとインターネットのカバレッジが増加するにつれ、衛星の要件と使用量は減少しています。このために Amazon S3 テストバケットや CloudFront ディストリビューションをセットアップするのは非常に簡単でした。結果を見れば明らかです。S3 と CloudFront を使用することで、機能はより安価に、高可用で、安全で、そして拡張可能になりました。さらに、AWS のグローバルなエッジロケーションの数が多いため (正確には 205 のエッジロケーションと 11 のリージョナルエッジキャッシュ)、サービスのパフォーマンスも向上しました。

初期段階での成功により、すべての中核となるニュースコンテンツを Amazon S3 に移行し、Amazon CloudFront と比べ高価な CDN プロバイダーを見直すことを決定しました。さらに、ニュース速報 (そして一般的なニュース) は、時代とともに価値が減少しています。このため、コンテンツは 30 日以内に作成されたかどうかを基準に分類し、その後、コンテンツはアーカイブの一部になります。Amazon S3 でプレフィックス戦略を思いついてからは、既存コンテンツの構造とコンテンツの保管期間に関する要件に基づき、分類とアーカイブを簡単に行うことができました。S3 ライフサイクルルールを使用して、30 日後にコンテンツを「期限切れ」にするだけで、ストレージコストを節約することができます。

Multipart Upload API を使用したオブジェクトのアップロード

大きな動画ファイル (100 MB~2 GB) を配信するとき、送信中に発生する可能性のあるエラーを解消するために、回復力のある再試行ロジックを組み込む必要がありました。そのため、オンプレミスでホストされているアプリケーションを書き直して、AWS SDK Multipart Upload API を使用できるようにしました。また、Amazon S3 マルチパートアップロード API を使用して、最高のパフォーマンスを実現しています。これは、伝送制御プロトコル (TCP) 接続を複数並列にすることで、利用可能な帯域幅をより有効に利用できるからです。以下は、TCP ウィンドウサイズがどのように帯域幅を割り当てるのかを示しています。Multipart Upload API を使用すると、大きなオブジェクトを部分的にアップロードできます。これは、大規模な動画ファイルを頻繁に送信する場合に最適な方法です。

Multipart Upload API を使った動画のアップロードは、簡単な 3 つの手順で行うことができます。

  1. アップロードを開始する。
  2. オブジェクトパートをアップロードする。
  3. すべてのパートをアップロードしたら、マルチパートのアップロードを完了する。

S3 が完全なマルチパートアップロードリクエストを受信すると、アップロードされたパートからオブジェクト全体を構築します。その後、バケット内の他のオブジェクトと同じようにオブジェクトにアクセスできます。

マルチパートアップロード API を使用するときは、ライフサイクルルールを作成して、開始してから指定日数以内に完了しない不完全なマルチパートアップロードを確実に削除してください。これは、ストレージコストを節約するための重要なステップです。マルチパートアップロード API を使用しているほとんどのバケットで、次のルールを使用します。

<LifecycleConfiguration>
  <Rule>
    <ID>multipart-cleanup-rule</ID>
    <Prefix/>
    <Status>Enabled</Status>
    <AbortIncompleteMultipartUpload>
      <DaysAfterInitiation>7</DaysAfterInitiation>
    </AbortIncompleteMultipartUpload>
  </Rule>
</LifecycleConfiguration>

バケットをクリーンに保つために、明確に定義したプレフィックス戦略と一連のライフサイクルルールを用意することが重要です。最も重要なシステムを保護するための適切なマルチリージョン戦略で信頼性を確保することも重要です。これは、お客様が最新ニュースにいつでも公平にアクセスできるようにするために重要です。安定した稼働時間はビジネスにとって不可欠です。

ロイターの最新のグローバルデータアーキテクチャ

次のアーキテクチャ図は、Amazon Route 53、CloudFront、Amazon S3 を使用して S3 API 関連の問題や S3 のリージョンに関する問題から保護する方法を概念的に示しています。

Reuters Route 53 CloudFront および Amazon S3 アーキテクチャ

  • ウェブサービスには、S3 でコンテンツの可用性を検出するスマートロジックがあり、リージョンに問題がある場合はローカルストレージからのダウンロードを提供できます。
  • Web ポータルは 2 つのリージョン間で live-live モードで実行されるため、1 つのリージョンで問題が発生した場合に影響を受けるのは一部の顧客のみです。
  • システム全体が 2 つのリージョン間で複製され、Route 53 を使用して DNS ベースのフェイルオーバーが簡単かつ高速に行われます。
  • 障害期間中に公開されたコンテンツはキューに入り、S3 がリージョンで回復した後に自動的に再アップロードされます。

また、同様の設定を使用して、すべてのアップストリームシステムに回復性と柔軟性のあるコンテンツ取り込み機能を提供します。これらは、動画、テキスト、画像などを生成するシステムです。

ロイターのマルチリージョン取り込み設定

次のアーキテクチャ図は、マルチリージョン取り込みの設定を示しています。

ロイターのマルチリージョン取り込み設定

  1. Reuters Connect には、2つのリージョンのそれぞれに、アップストリームシステムがコンテンツを配信するための Amazon S3 バケットがあります。単一のドメイン名が上流のシステムに提供され、コンテンツを 1 回だけアップロードする必要があります (2 つのリージョンの両方のバケットに二重にアップロードする必要はなし)。
  2. Route 53 を介して登録された単一のドメインは、CloudFront ディストリビューションを指してます。そこでは、S3 バケットの 1 つがオリジンです。弊社のシステムでは、CloudFront オリジンを手動または Lambda 経由で変更することにより、S3 バケットのフェイルオーバーを処理します。
  3. 上流システムの AWS アカウントには、CloudFront URL に署名する権限が付与されます。これは、オブジェクトを S3 に PUT リクエストするために使用されます。
  4. レプリケーター Lambda 関数を使用して、PutObject イベントをリッスンし、オブジェクトを別のバケットにコピーします。また、レプリケータ機能は、複製されたオブジェクトメタデータにフラグを追加して、このオブジェクトが他のバケットから複製されたものであることを識別します。つまり、それの複製を防止するためです。
  5. PutObject イベントは、システムがリッスンする SQS キューにも送信されます。アプリケーションが新しいアイテムの着信メッセージを受信すると、S3 からアイテムをダウンロードして処理します。
  6. 処理が完了すると、SNS トピックに通知を送信します。次に、トピックは同じ通知を両方のリージョンの SQS「確認応答キュー」に発行し、元のアイテムが処理され、レプリカではない場合にのみ検証します (S3 オブジェクトメタデータが役立つ)。
  7. 上流のシステムは、場所に近い SQS の「確認応答キュー」の 1 つをリッスンし、各アイテムの処理結果の通知を受けます。いずれかのリージョンで SQS に障害が発生し、いずれかのリージョンで SQS に障害が発生した場合、上流システムは 2 つのリージョン間のフェイルオーバーを処理する必要があります。

サードパーティの寄稿者のワークフロー

ロイターは、世界中の 200 以上の拠点に 2500 名以上のジャーナリストを抱えており、主に大規模なコンテンツを製作しています。ただし、ニュース速報が出ると、どこにもいることはできなくなります。ですから信頼できるサードパーティやユーザー生成コンテンツ (UGC) にも頼ってます。コンテンツを受け取ってシステムに取り込み、処理する方法はたくさんあります。

  • FTP/SFTP
  • RSS
  • ウェブサービス
  • Webform/Web ポータル

ロイターのサードパーティ寄稿者のワークフロー

上の図は、ワークフローブレークダウンで、左から進みます。

  1. サードパーティは RSS ページを提供する場合がありますので、私たちはアプリケーションを通じてニュース記事を常にチェックしています。また、ECS クラスターで管理される、スケーラブルで安全な MFA で保護されたカスタムのウェブサイトを使用して寄稿し、ログインしてメタデータ、スクリプト、動画を提供することもできます。
  2. 次に、Lambda 関数を介して、XML から JSON への メタデータの標準化を完了させます。
  3. メタデータと動画の両方を S3 にアップロードします。
  4. これにより、Lambda 関数がトリガーされ、Step Function ジョブがトリガーされて動画処理が開始されます。
  5. 次に、Reuters Connect プラットフォームからコンテンツを提供するために使用するのと同じ CloudFront ディストリビューションを介してコンテンツを利用できるようにします。

コンテンツの保護

最後に、偶発的または悪意のある削除、不審なアクティビティ、侵入、またはアクセス権の盗難から保護するために、Amazon S3 上のコンテンツを守ることが重要です。Amazon S3 バケットポリシー、Multi-Factor Authentication (MFA) 削除保護、CloudTrail および IAM アクセス許可は、データを保護するさまざまな方法を提供します。

次の IAM ユーザーポリシーを使用して、IAM ユーザー (admin も同様) が Amazon S3 オブジェクトまたはバケットを削除できないようにします。このポリシーを有効にするには、アカウント内のすべてのユーザーにこのポリシーを適用する必要があります。これは、ユーザーをグループに編成し、それらのグループにポリシーを適用するだけで実行できます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1523630470225",
            "Action": [
                "s3:DeleteBucket"
                "s3:DeleteBucketPolicy",
                "s3:DeleteBucketWebsite",
                "s3:DeleteObject",
                "s3:DeleteObjectTagging",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging"
            ],
            "Effect": "Deny",
            "Resource": [
                "arn:aws:s3:::tr-agency-video-content-eu"
            ]
        }
    ]
}

また、プログラムで次のバケットポリシーを作成して追加し、パートナーが S3 から直接コンテンツを利用できるようにします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "$PARTNER1 read only",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::$PARTNER1_AWS_ACCOUNT_ID:root"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::tr-agency-video-content-eu/archive/*"
        },
        {
            "Sid": "$PARTNER2 read only",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::$PARTNER2_AWS_ACCOUNT_ID:root"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::tr-agency-video-content-eu/archive/*"
        }        
    ]
}

最後に、Web ホスティング以外に使用されるバケットで S3 Block Public Access 機能を選択的に有効にします。

まとめ

AWS は、報道機関の仕組みを変えました。これらのリソースのプロビジョニングなどの負荷の高いタスクをオフロードしながら、コンピューティング能力とストレージをより利用しやすくしました。ロイターは長年、Amazon S3 を使用しており、AWS サービスポートフォリオをできる限り活用しています。AWS プラットフォームで新しいプロジェクトを構築することで、信頼できるニュースコンテンツをお客様に提供する方法が完全に変わりました。その豊富な機能セット、セキュリティ、および管理と配信の全体的なコストは、弊社だけでなくお客様にとっても、コストと待ち時間を削減するのに役立ちました。これにより、主要なビジネス目標に集中し、より迅速にニュースを配信するために時間を確保できます。これは、弊社、お客様、そしてニュースの一般消費者にとってメリットがあります。言うまでもなく、通信社にとってスピードは非常に重要です。

AWS は、高いコストや複雑さなどイノベーションの障害も取り除きました。さらに、人工知能や機械学習の領域全体で将来の成功に向けて準備しました。S3 により、人間による消費と AWS Data Exchange による機械の消費の両方において、コンテンツをより効率的かつ信頼性の高い方法で提供できるようになりました。スピーチからテキストへのトレーニング、視覚分析トレーニング、または機械翻訳のためのデータが必要な場合、AWS Data Exchange のロイターコンテンツを開始するのに最適です。

弊社の経験を共有することで、コンテンツを柔軟性のある AWSで構築し、効率的にかつ回復力のある状態で管理して、顧客に最高のサービスを提供できる手助けになることを願っています。ロイターの AWS サービスの使用法について詳しく知りたい方は、動画アーカイブ機能に関する別のブログ投稿をお楽しみに。その投稿では、サーバーレステクノロジを使用して過去 124 年のコンテンツを配信する方法について説明する予定です。最後までお読みいただき、ありがとうございました。ご質問がある場合は、コメント欄に書き込んでください。 以下の 2 つの動画は、私が AWS re:Invent 2019 でのプレゼンテーションしたもので、Amazon S3 の使用方法とベストプラクティスの詳細について提供しています。

Thomson Reuters が Amazon S3 でコンテンツを管理する方法:

AWS re:Invent 2019:Amazon S3 ftのベストプラクティス。Thomson Reuters(STG302-R2)– ロングバージョン:

この記事の内容および意見は第三者の著者によるものであり、AWS はこの記事の内容または正確性について責任を負いません。