最近のAWSS3の停止から学んだ教訓

Amazon S3は、AWS Lambda、Elastic BeanStalk、Amazon独自のService HealthDashboardなどの多くのAWSサービスを支えています。また、毎日それに依存している他の多くのインターネットサービスのオブジェクトおよびメディアストアとしても機能します。

2017年2月28日、AWSはUS-EAST-1リージョンでAmazonS3サービスの1時間の停止を経験しました。これにより、Dockerhubなどのサービスを含むインターネットのかなりの部分で停止のカスケード効果が発生しました。

ヒューマンエラーが根本的な原因であることが判明しました。

太平洋標準時の午前9時37分に、確立されたプレイブックを使用する承認されたS3チームメンバーが、S3課金プロセスで使用されるS3サブシステムの1つで少数のサーバーを削除することを目的としたコマンドを実行しました。残念ながら、コマンドへの入力の1つが誤って入力され、意図したよりも多くのサーバーのセットが削除されました。

結局のところ、耐久性と可用性の違いについてはよくある誤解があります。耐久性は、ストレージの信頼性を測定し、「データが失われるのでしょうか?」という質問に答えます。一方、可用性は、データへのアクセス可能性を測定します。つまり、「データを取得できるようになるか」ということです。

AWS S3は、単一のリージョン内で99.999999999%の耐久性を提供します。Amazonの例を見ると、S3に10,000個のオブジェクトを保存すると、平均して1つのオブジェクトが1,000万年に1回失われる可能性があります。Amazon S3は、リージョン内の複数の施設間でデータを複製することでこれを実現します。

一方、オブジェクトの標準S3可用性は、リージョン内で年間99.99%です。つまり、12か月の間に、合計52分33秒でデータにアクセスできなくなると予想されます。

AWSは、IaaSサービスとPaaSサービスの両方を提供します。IaaSレベルでは、AWSのお客様は仮想サーバーとネットワークを完全に制御できます。彼らは彼らが望むどんなソフトウェアとサービスも構成することができて、彼らは彼ら自身でそれを管理します。停止はお客様の責任です。

PaaSレベルでは、AWSは、オブジェクトストレージ、データベース、キューなどのフルマネージドプラットフォームサービスを提供します。クライアントは、これらのサービスの可用性と耐久性に関する責任をマネージドサービスプロバイダー(この場合はAWS)に委任します。独自のAPIを介して利用されるAWSプラットフォームサービスは、AWSでの人為的エラーによる地域の停止に対して特に脆弱です。

人的エラーは、オンプレミス、クラウド、マネージド、またはセルフホストなど、どこでも停止を引き起こす可能性があります。セルフホストシステム全体がダウンした例として、最近のDeltaコンピューターの停止について考えてみます。プラットフォームサービスの管理責任をクラウドプロバイダーに委任しても、人為的エラーによってサービスがダウンする可能性があるという事実は変わりませんが、影響は増幅されます。Deltaの停止はDeltaにのみ影響を与えましたが、AWSS3の停止はインターネットのかなりの部分に影響を与えました。

幸い、AWS S3は、停止の影響を軽減するための十分なツールを提供します。いくつか考えてみましょう。

S3クロスリージョンレプリケーション

特定のS3リージョンに保存されたデータは、すべてのアベイラビリティーゾーンに複製され、どのゾーンでも停止を維持できます。ただし、2月28日に発生したような、地域全体の停止に耐えることはできません。地理的領域間でS3オブジェクトを複製すると、冗長性の要件を満たすのに役立ちます。

バックアップ

クロスリージョンレプリケーションは、可用性の向上に役立ちます。AWS Glacierへのバックアップは、耐久性の向上に貢献できます。便利なことに、AWSはS3のオブジェクトをGlacierにバックアップする自動メカニズムを提供します。

CloudFrontを使用したコンテンツ配信を検討してください

S3オブジェクトに頻繁にアクセスする場合は、S3からオブジェクトを提供するようにAWSCloudFrontを設定することが理にかなっている場合があります。CloudFrontは、ユーザーが最も必要とする場所にデータを複製し、一部のユースケースではS3停止の影響を軽減するのに役立つ場合があります。

最終的な考え

マネージドプラットフォームサービスは、クラウドサービスの基盤です。S3のようなものを使用すると、DevOpsのコストを削減し、アプリケーションをより早く市場に投入するのに役立ちます。AWSは長年にわたって非常に信頼性がありますが、Amazonは過去に自傷行為による停止を経験しています。最近のS3の停止も例外ではありません。クロスリージョンレプリケーション、バックアップ、およびコンテンツ配信のいくつかの組み合わせにより、このような停止の影響を減らすことができます。