youRoomにおいて発生した 2011/4/21 のAWSの障害について技術的な観点から

SonicGardenがサービスしている youRoom ( http://youroom.in/ ) が昨日障害により最大1時間程度サービスをご利用いただけない状態になりました。ご利用の方にはご迷惑をおかけしました。大変申し訳ございません。現在は、復旧し正常にサービスを提供しています。

障害の原因は、youRoomが利用している Amazon Web Service の障害により利用しているサーバが停止したことによります。

今回の障害で、AWSが危ない・不安定だという印象を受けた方もいらっしゃるかと思いますが、SonicGardenとしてはあたりまえだと思っています。そのための準備もしていました。なので、他のサービスよりも短時間でサービスを復旧できたのではないかと思っています。ただし、今回の障害でまだまだ改善する点が見つかったので、AWSの障害が起こってもサービスを継続できるように・より安定してサービスを継続できるように仕組みを見直して改善していきます。

今回の障害の流れ

17:00 ごろ
DBサーバのレスポンスが遅延する事象が発生。1分程度で復旧。今回の障害の一部かと想定している。

18:20 ごろ
APサーバがレスポンスを返さなくなる。SSHで接続をすると接続可能。メンテナンス画面を表示するためにコマンドを発行しようとするが、lsなどファイルシステムにアクセスするとレスポンスが返らない状態になる。ファイルシステムでの障害が発生した模様。

18:30 ごろ
AWSのコンソールからリブートを試みるが、反応しない。

18:50 ごろ
新しいインスタンスを起動して、切り替える作業をスタート。新しいサーバをバックアップしておいたAMIから起動開始。

19:10 ごろ
起動後、アプリケーションの最新化、動作確認などを実施し、正常に動作することを確認して、IPの付け替えを行って、新インスタンスでサービス再開。復旧。

障害発生時、このような時間の流れでした。1時間弱サービスをご利用いただけない状態になりました。

今回の障害での反省点

・新しいインスタンスに切り替える作業を開始するタイミングの遅れ
=> リブートで復旧できるのか結果がでるまでに多少の時間がかかるのと、新しいインスタンスを起動するのにも多少時間が必要。この間の時間が復旧の時間を伸ばしてしまっているので、リブート作業のタイミングで新インスタンスの準備も行って、リブートで復旧できないと判断したタイミングで新しいインスタンスで動かせるように準備するとより早くサービス復旧ができたはず。

SonicGardenの運用の考え方

システムを運用すると、サーバの障害は少なからず発生します。AWSを利用していても、実サーバを利用していても発生します。

SonicGardenとしては、その障害発生時にどれだけ早くサービスを安定した状態に戻せるのかということに重点をおいています。AWSであれば、10分もあれば新しいサーバを調達して、起動することができます。それも、AMIとしてバックアップをとっておけばほぼ動いていたサーバのそのままの状態で起動できるのです。ここまでのスピード感実現できるのは、まだAWS以外にないのではないでしょうか?
もし、AWSでなく実サーバで運用していたらと思うとぞっとします。サーバを買いに走って電気屋まで行かないといけないのですから。さらにOSインストールして。。。もしくは、障害のためにもう1台サーバを用意しておかないといけないのです。

AWSを利用していると、インスタンスが動かなくなるという現象は何度か発生しますが、今回のようにリブートもできない状態になるのは非常にまれです。ほとんどがリブートで復旧します。SonicGardenではかなりの台数のインスタンスを2年以上AWSで運用していますが、この状態になったのはほんの数回です。内2回がyouRoomのインスタンスだったりしますが。。。

SonicGardenのアプリケーション開発は、「どれだけ頑張ってもバグは発生する。0にするよりもどれだけ早く直せるかを考える」という方針です。インフラも同じく「障害は発生する。どれだけ早く復旧するか」なのです。バグを0にする・障害を0にすることは、ほぼ不可能であり実現しようとすると非常にコスト・手間がかかります。といっても、決して品質に対して手を抜くということをやる訳ではありません。過剰に品質にこだわることを捨てているのです。その保証として対応できるスピードを用意しておくのです。アプリケーション開発であれば、Railsを利用しているのは修正する時間を最短にすることができるからですし、インフラとして、AWSを利用するのはそのためでもあります。

世の中のみなさんは、今回の障害によりAWSに対して不安をいだいているかもしれませんが、私はこう思っています。

「 AWS最高! 」

最後に、この障害のタイミングでサーバをよりよいものに変更しました。少し費用は上がってしまいましたが、停止してしまったお詫びの気持ちもこめて、より早く・快適にご利用いただけるようになったと思います。是非、ご利用ください。
http://youroom.in/

※ SonicGardenのインフラエンジニアのトップが別の観点からのブログを書いています。こちらも御覧ください。 http://d.hatena.ne.jp/interu/20110425/1303731515