Amazonプライムデーのサーバ障害、AmazonがOracleからAurora DBに乗り換えたのが原因ではない。Amazon CTOがCNBCの報道を否定
Amazon.comが毎年開催するバーゲンセール「Amazonプライムデー」では、大量のトラフィックがAmazonのWebサイトに押し寄せます。今年7月に開催されたAmazonプライムデーではそのために一部のWebサイトで障害が発生し、アクセスが遅くなったことが報告されました。
この障害の原因は、Amazonが内部データベースをOracleからAWSのデータベースサービスであるAmazon Aurora PostgreSQLに移行したことが原因だと、米CNBCが10月24日付けで報道しています。
CNBCはAmazon.comの社内で作成された障害報告書を入手。そこには、OracleとPostgreSQLにおけるセーブポイントの違いが障害の原因だと記述されていると、次のように説明しています。
Savepoints are an important database tool for tracking and recovering individual transactions. On Prime Day, an excessive number of savepoints was created, and Amazon's Aurora software wasn't able to handle the pressure, slowing down the overall database performance, the report said.
セーブポイントは、トランザクションの追跡や復旧のための重要なデータベースツールである。プライムデーのときにはセーブポイントが大量に作成されたことで、Amazon Aurora PostgreSQLはそのあまりの負荷にデータベースの処理全体が遅くなってしまったと、報告書に記述されている。
Amazonは2020年までに内部データベースの脱Oracle化を実現すると報道されていますが、それに暗雲が立ちこめているという論調です。
原因はデータベースではなくアプリケーション側だと、Amazon CTOのVogels氏
しかしAmazon.com CTOのWerner Vogels氏は、このCNBCの報道を「くだらないミスリーディングな記事だ」と真っ向から否定しました。
Vogels氏はTwitterで長文を公開するためにわざわざ文書を画像にしてツイートしています。冒頭の一部を翻訳し、引用しましょう。
まず最初に明確にしておきたいのは、AWSとAuroraはAmazonプライムデーの障害にまったく関係ないということだ。プライムデーのWebサイトの障害はAmazonリテール側のソフトウェアスタックの問題に起因するのだ。
Never let facts interrupt a "good story.” Tried to help reporter get it right, but clickbait won (https://t.co/4iiy2lGbQd). Our Fulfillment Centers have migrated 92% of DBs from Oracle to Aurora with better avail, less bugs and patches, less troubleshooting, less hw cost. More: pic.twitter.com/cwM5SHai2p
— Werner Vogels (@Werner) 2018年10月24日
Vogels氏も当然ながらAmazon.com社内の報告書を見ています。その上で、障害の原因はセーブポイントにあったものの、それはアプリケーションに起因しており、アプリケーションを修正することで解決したと説明。
The application in question accidentally created an excessive number of savepoints, despite that team knowing that Aurora and Oracle handle savepoints differently. This created a temporary situation where the database was very slow and the application experienced intermittent timeouts. The problrem was quickly diagnosed and completely resolved by simply removing the unnecessary savepoints that had been inadvertently left in the retail application.
チームはAuroraとOracleがセーブポイントを異なる方法で処理することを知っていたにもかかわらず、問題となるアプリケーションは大量のセーブポイントを作成してしまった。これによって一時的にデータベースは非常に遅くなり、アプリケーションは断続的なタイムアウトを発生するようになったのだ。
しかしこの問題はすぐに解明され、リテールのアプリケーションが原因で不用意に残ってしまったセーブポイントを削除するだけで完全に解決された。
AWSは、AuroraがOracleと同等以上の性能を備えたデータベースであるとつねに主張してきました。OracleからAuroraに乗り越えたことで処理能力が不足し障害の原因になった、という報道に対して敏感になるのは当然でしょう。
では、CNBCの報道とVogels氏の発言、どちらが正しいのでしょうか。
データベース専門家の意見をCNBCは受け入れなかった
ここで第三者が登場します。カーネギーメロン大学でデータベーステクノロジーの助教授(Assistant Professor of Databaseology)を務めるAndy Pavlo氏です。
2週間ほど前、CNBCは障害報告書の内容を分析するために何人かのデータベース専門家に接触し、Pavlo氏もその一人だったとのこと。このとき、Pavlo氏はCNBCに対してOracleとPostgreSQLのセーブポイントの扱いが違うのは重要な点ではないと返答したら記者がぶち切れたとツイートしています。
So I was slightly involved with this story: https://t.co/ohZhpyqmjo
— Andy Pavlo (@andy_pavlo) 2018年10月24日
TLDR: I've read the internal Amazon document in the CNBC story. @Werner is correct. When I told the reporter that it wasn't a big deal he called me on the phone and flipped out.
Pavlo氏はCNBCから障害報告書を受け取り、それを読んだ上で記者に「OracleとPostgreSQLのセーブポイントの扱いに重要な違いはない」(there is not significant difference about how Oracle does SAVEPOINTs versus Postgres.)と回答。
I responded to him with my assessment and told him that I didn't want to be involved in his story. To the best of my understanding, there is not significant difference about how Oracle does SAVEPOINTs versus Postgres. pic.twitter.com/nUlqbigCgs
— Andy Pavlo (@andy_pavlo) 2018年10月24日
するとCNBCの記者は朝6時に電話を掛けてきて、嘘つきだ、Amazonから金をもらってるんだろうと、Pavlo氏を非難してそれを受け入れなかったと。
どうやらCNBCの記者は記事をOracleとAWSが絡んだセンセーショナルなものにしたかったようです。
Pavlo氏は、「So I agree with @Werner」(Werner Vogels氏に同意する)としています。
So I agree with @Werner that this is a non-story. Oracle and Postgres are both solid DBMSs. Notice how he has no quotes from DB people.
— Andy Pavlo (@andy_pavlo) 2018年10月24日
And for the record, I am not on Amazon's payroll. They gave @danavanaken credits for her research & we are thankful: https://t.co/kz2WeJMFkZ
あわせて読みたい
Javaはなぜ変わらなくてはならなかったのか。JavaOne改め「Oracle CodeOne」の基調講演で語られた理由。Oracle CodeOne 2018
≪前の記事
Angular 7正式版リリース。バーチャルスクロール、ドラッグ&ドロップのサポートなど、6カ月ぶりのメジャーバージョンアップ