技術

AWS東京リージョン障害からの考察

各地で話題になりましたが、先日 AWS の東京リージョンで大規模な障害が発生しました。

私は現在は、本番リリース前の開発業務をしているのでほとんど影響はなかったのですが、もし1年前、 SRE をやっていた頃に同じことが起きたらと考えると、ゾッとします。前職の現場は阿鼻叫喚だったかと思います。

一方、SREやインフラのエンジニアからしたら、大変な出来事ではあったと思いますが、非常に貴重な経験となったことでしょう。クラウドの大規模障害はめったにありませんが、避けては通ることのできない事案ですからね。

さて、前置きが長くなってしまいましたが、今回はインフラ担当とクラウド障害の付き合い方について考えてみたいと思います。

今回のAWS障害下でもサービス存続は可能だったのか


極論をいうとインフラはクラウド/オンプレ関係なく、お金と時間をかければほとんどの障害に対してサービスの維持は可能になります。今回のAWSの障害でも、マルチクラウドにしてAWSがなくなっても大丈夫なリソースをAzureやGCPで確保しておき、あらゆる事態を想定した十分な切り替えテストをしていれば乗り切ることはできたでしょう。

しかし、これはあくまで理論上の話です。現実的には不可能でしょう。

サービスが大規模であればあるほど、障害発生時のリソース確保は難しいですし切り替えも様々なケースが発生し、複合的な要因で失敗しやすいです。

事実、今回の障害においても名だたる大規模サービスで障害報告が上がっています。

今回大丈夫だったのは、フルサーバレス化やシンプルなマルチAZで構成される小規模サービスぐらいだったかと思われます。

AWS障害が原因でもサービス停止は現場エンジニアの責任


今回の様なAWS側に障害の要因がある場合、エンジニアからしたら今回の障害は仕方がなかった、避けられなかった、自分に責任はないとしてしまいがちになります。

エンジニアはサービスの提供者であると同時に、AWSというサービスのユーザでもあるわけですからね。

しかし、この考えは明らかに間違いです。サービスの提供者である以上、そのサービスにおける障害はエンジニアの責任です。

ユーザからしたら障害ポイントがどこかなんて関係ありません。ユーザからしたら極端な話、AWSを選定するから悪いんでしょ、GCPにしておけば今回の問題は起きなかったんでしょ? と言われたら、はい、その通りですと言うしかありません。

そもそも今回の様な物理障害は、100%避けることは不可能です。AWS側にしても、今回の様なシングルAZにおける障害は想定済みで、マルチAZマルチリージョンといったソリューションを用意してくれています。

さらには、AWS全体に障害が起きたときのために、他サービスに切り替えるマルチクラウドという考えもあります。

それを利用しなかったのは、予算や人的リソースなどといったユーザ側の問題です。

そういったソリューションを利用したらしたで、切り替え(フェイルオーバー)が上手くできなかったなどの問題が生じますが、それもエンジニアサイドの技術力の問題です。

こういった考えはインフラをずっとやってきた技術者からしたら当たり前の考えなんですが、最近はクラウドで手軽にインフラ構築できるようになり、インフラ経験があまりないアプリ開発者等でも気軽にインフラ構築できるようになりました。

今回の障害の全てをAWSのせいにしようとしているのは、こういったインフラ経験が乏しい人かもしれないですね。。。

今回の障害を受けて


今回の東京リージョンのシングルAZの障害を聞き、個人的にあらためて思ったことは

  • 導入前のインフラ設計を丁寧にする
  • マイクロサービス化、サーバレス化を積極的に利用していく

の2点です。

導入前のインフラ設計を丁寧にする

インフラの設計は一度、稼働してしまうと変更や修正は困難です。サービス拡大に伴い、インフラを増築していくのはそれほど難しいことではないのですが、根幹の部分の構成を変えようというのは、そう簡単にはできません。

アプリ側の変更も必要になってきますし、ユーザ側にも影響ありますので調整や通知の徹底など、関係各社を巻き込んでの大がかりなことになります。

なので稼働前、もっと言うと開発前段階で、インフラ設計はサービス品質の根幹に影響するものととらえ、経験が十分なしかるべきエンジニアが工数を割いて取りかかるきです。

マイクロサービス化、サーバレス化を積極的に利用していく

隙あらばマイクロサービス化やサーバレス化を進めて、障害の影響範囲を狭めるようにしていくべきだと思いました。

マイクロサービスやサーバレスは障害対応のための考えではありませんが、マイクロサービスは物理障害が発生しても影響範囲はサービスレベルでとどめることができますし、サーバレスに至っては、クラウド側が裏でいい感じにフェイルオーバーしてくれてユーザは障害を意識する必要がありません。

まとめ

以上、インフラエンジニア視点からのクラウドサービス障害についてでした。

ABOUT ME
tara
tara
年収360万円でIT業界のキャリアスタート
SES -> Web業界 -> 大手メーカー -> フリーランス
と経験してきて、現在は年収1000万円を越えました。

エンジニアのキャリアアップに役立つ情報を発信していきます。