BBCがAWSに切り替え、新しいウェブサイトアーキテクチャをサーバーレス化、観測者はHTMLについて不満を漏らす

Table of Contents

BBCがAWSに切り替え、新しいウェブサイトアーキテクチャをサーバーレス化、観測者はHTMLについて不満を漏らす

更新英国で 6 番目に人気のある BBC の Web サイトは、そのほとんどが放送局のビットバーンから Amazon Web Services (AWS) に移行し、現在ではサイトの約半分がサーバーレス プラットフォームである AWS Lambda を使用してレンダリングされています。

「最近まで、BBCのウェブサイトの大部分はPHPで書かれ、ロンドン近郊の2つのデータセンターでホストされていました」と、アーキテクチャ責任者のマシュー・クラーク氏は最近語った。「ほぼすべての部分がクラウド上に再構築されました。」

PHPはクラウドでも問題なく動作しますが、これはリフト&シフトの問題ではありません。BBCチームはサーバーレスコンピューティングに基づく新しいアーキテクチャを考案しました。また、以前はニュースやスポーツなど複数のサイトだったものを1つに統合しようと試みましたが、クラーク氏によると、ワールドサービス、iPlayerビデオ、ラジオサイトBBC Soundsはそれぞれ独立したままです。

残りはWebCoreという新しいものに統合されました。「複数のサイトではなく、1つのサイトの作成に注力することで、パフォーマンス、信頼性、SEOが大幅に向上しています」とクラーク氏は述べています。

ウェブトラフィックはまず、グローバルトラフィックマネージャー(GTM)に到達します。これは、Nginxウェブサーバーをベースとした社内ソリューションで、一部はオンプレミス(BBCがデータセンターを完全に廃止したわけではないことを示しています)で、一部はAWS上で稼働しています。クラーク氏によると、GTMは「1秒間に数万件のリクエスト」を処理します。AWS上の2番目のレイヤーはキャッシュとルーティングを処理し、その後AWS Lambda上で実行される関数に到達します。AWS Lambdaは、JavaScriptフレームワークであるReactを使用して動的コンテンツのサーバー側レンダリング(SSR)を実行します。

サーバーサイドレンダリングとは、ブラウザが多くの作業をすることなくページを表示する準備を整えることを意味します。そのため、ページは瞬時に表示されるはずですが、サーバーの負荷は増加します。この点はキャッシュによって軽減されます。SSRへの移行も監督したウォルマートのエンジニア、アレックス・グリゴリアン氏は、SSRとクライアントサイドレンダリング(CSR)をテストし、「SSRとCSRのA/Bテストを行った結果、レンダリングを早期に開始した方が顧客のエンゲージメントが高いことが分かりました」と述べています。ただし、サーバー負荷の増加が大きなデメリットであると指摘しています。

BBCの場合、オンデマンドで自動スケーリングが可能なLambdaが使用されています。「BBCのウェブサイトを作成するために、毎秒約2,000個のLambdaが実行されています。この数は今後増加すると予想しています」とクラーク氏は述べています。さらに、LambdaはAWS Elastic Compute Cloud(EC2)上のVMよりも優れたスケーリング性能を発揮し、「トラフィックレベルが瞬時に急増することもあります。LambdaはEC2の自動スケーリングでは不可能な方法でこれに対応できます」と述べています。

BBCサイトのもう一つの特徴は、コンテンツをリクエストするためのロジックであり、クラーク氏はこれを「ビジネスレイヤー」と呼んでいます。コンテンツはREST APIを介してウェブレンダリングレイヤーに提供され、「Fast Agnostic Business Layer」と呼ばれるソリューションによって「複数のチームが独自のビジネスロジックを作成できる」とクラーク氏は述べました。これにより、アクセス制御やキャッシュといった機能については同じシステムを共有しながらも、異なる要件に対応できるようになります。コンテンツ自体の保存方法についてはクラーク氏は多くを語りませんでしたが、今後の投稿でこの話題に触れることを約束しました。

WebCoreプラットフォームはCI/CDを活用して迅速なイテレーションを実現しており、クラーク氏は月次レポートの例を示しました。リリース数は110件、つまり1日あたり約3件でした。ビルドには約3.5分かかり、この月におけるプルリクエスト(新しいコードがマージされる時点)から本番環境での実行までの平均時間は1日23分でした。平均して、プルリクエストの67%が実際にコードにマージされました。

BBCウェブサイトHTML

本日BBCサイトに掲載されたニュース記事のHTMLの一部。ニュースアグリゲータによると、解析が以前よりはるかに困難になっているとのこと。

素晴らしい仕事ですね? Hacker Newsのコメントを見ると、意見は様々です。「BBCほどの規模のサイトをLambdaで運営するなんて、政府補助金付きの予算を無駄遣いしているに等しい。全く馬鹿げています。LambdaのVM時間は、通常のコンピューティングと比べて大幅に値上がりしています…私の意見では、これはサーバーレスの失敗の典型です」とあるコメントは述べています。

News Snifferという見出し集約サイトを運営するジョン・リーチ氏も、生成されたHTMLは解析が容易ではないとコメントしています。「私はBBCニュースページを解析するNews Snifferプロジェクトを運営しており、数週間前にHTMLのフォーマットが完全に変更され、パーサーが機能しなくなった時に、このロールアウトについて知りました。ちなみに、新しいHTMLは以前よりもはるかに複雑で、解析がはるかに困難です。コンテンツの解析を容易にすることが目的ではないことは承知していますが、それでもこのような結果になったのは残念です。」

未解決の疑問への関心も高まっています。オンプレミスからAWSへの移行によるコストへの影響は?EC2とLambdaのコストへの影響は?キャッシュとコンテンツ配信ネットワークが期待通りに機能しているのに、なぜ1秒あたり2,000 Lambdaが必要なのでしょうか?

詳細についてはBBCに問い合わせました。®

2020年11月5日16:02 UTCに更新

BBCのマシュー・クラーク氏は、「EC2 Lambdaのコンピューティングコストは高いものの、必要な量は少ないので、その分は相殺されます」とコメントしました。EC2は自動スケーリングが可能なため、少々不可解な点として、クラーク氏はさらにこう付け加えました。「EC2では、急激なトラフィックの変化(例えばニュース速報など)に対応できるよう、十分なキャパシティを備えたウェブサーバーをプロビジョニングできます。一方、Lambdaでは実際に使用した分だけ料金を支払います」

なぜBBCはサーバーサイドレンダリングを活用して、解析やアクセシビリティツールに適した、人間が読みやすいHTMLを提供しなかったのかという質問に対し、彼は次のように答えました。「WebページのHTMLは、主にReactというフレームワークによって生成されるため、見た目が異なります。BBCはアクセシビリティとパフォーマンスに非常に高い基準を設けており、様々なブラウザやスクリーンリーダーで問題なく動作することを確認するために、サイトのテストを続けています。」最後に、キャッシュとコンテンツ配信ネットワークが期待通りに機能しているのであれば、なぜ1秒あたり2,000回のLambda関数が必要だったのかを尋ねました。

クラーク氏は次のように主張した。「ラムダ式は、サイトを最新の状態に保つための更新処理に不可欠です。BBCの各ページは通常、複数の単純なラムダ式の実行を必要としますが、そのほとんどは150ミリ秒未満で完了します。」

Discover More