Azureのサービス停止を防ぐ設計|Azureの障害を防ぐ設計

はじめに

今や企業や団体に問わず個人でも利用されているAzure。今回はそんなAzureなどのクラウドサービスを使用して障害発生などでサービスが停止しないシステムを設計するにはどうすればいいのかを調べてみました。

クラウドについて

オンプレミス環境とクラウドの違いをしっかり押さえて、Azureなどのクラウドについて学んでいきましょう。障害の観点からいうと、オンプレミス環境でデータセンターが丸ごと運用不能になってしまうことは基本的にはありません。一方、クラウドではリージョン丸ごとの障害がAzureのみならずAWSなどのベンダーでも発生しています。AWSについては2019年の8月に約10時間に及び東京リージョンにてEC2やRDSへ接続できないといった障害が発生し、AWS上に構築されていた決済サービスやSNS、ECサイトなどが利用できなくなるなどの様々な被害が及びました。ちなみに原因は冷房をコントロールする制御システムを中心とする多重障害であり、サーバーの温度が異常に上がりすぎたことによる過熱とされています。今回はAWSについての事例ですが、Azureについても冷却装置の故障による過熱が原因の障害が発生しています。
このように、リージョン丸ごとの障害が発生する原因は、クラウドの運用が世界規模で自動化されており、1つの障害が影響を与える範囲が大きくなりがちであることに起因します。ですが、複数のリージョンが同時期に停止したり、1つのあるサービスがリージョンをまたがって複数のリージョンで障害により停止するという状況はまずありえません。その理由として、物理的にサーバー群が独立して運用するように設計されていることが挙げられます。例えば、東日本のリージョンで何かトラブルが発生したとしても、西日本のデータセンターでシステムが停止するような事態ができる限り発生しないように分離させる設計がなされています。先ほどのAWSの障害事例でも、影響は単一のアベイラビリティーゾーンにとどまっており、マルチAZ構成ではほとんど影響がないとのことでした。とはいえ、設計上の不備があるシステムで一部影響があった模様です。

サービス停止を未然に防ぐ設計ポイント

頻繁に障害が発生するなんて怖くて使えたものじゃないと思われがちですが、Azureなどのクラウドは適切に使用する限りSLAの下で安定してサービスを停止せずに利用できます。停止しないサービスの設計を行う上でのポイントを説明していきます。

マルチリージョン、マルチAZ構成にする

最初に考えられるのは、シングルリージョンによる設計ではなく、マルチリージョンあるいはマルチAZをベースにシステムを設計することです。そうすることで、リージョンに障害が発生したとしても、他のリージョンで補うことができ、結果的にサービスを継続することができます。設計の難易度や分離レベルの高さ、通信コストなどの考慮すべき点を踏まえ、どちらをベースに設計するかを選択してください。

1つのリージョンに固定化される設計を避ける

マルチリージョンを選択した場合に、システム自体は複数リージョンに配置しているのに、処理系を片方に寄せてしまうといった設計上の失敗がよくあります。オンブレミス環境での設計が長い方ほどこういった失敗に陥りやすい傾向にあります。複数のリージョンにシステムを構築しているのですから、きちんと両現用になるように設計することを心がけてください。でないと、1つ障害が発生した場合にサービス全体が停止してしまう事態に陥ってしまうのは言うまでもありません。

「リージョンなし」のサービスの対策

多くのクラウドサービスではリージョンに紐づいており、利用開始する際にリージョンを選択します。しかし、その一方で、サービスそのものがリージョンなしであるものがあります。Azureを例に挙げるならば、Cognitive Servicesの一部やTraffic Managerなどがそれにあたります。これらは1つのリージョンに依存しないので、仮に別のリージョンで障害が発生したとしても影響を受けないことを前提としています。一見得しかないように見えますが、リージョンなしサービスにはリージョンなしサービス特有のリスクを孕んでいます。そのリスクとは、そのサービスが全世界的に障害となる可能性がある、ということです。もしそうなった場合の対策を考えておくことが設計する上で重要となってきます。
以上の点に注意することで、大規模障害が発生しても停止しないサービスを構築することが可能となります。

おわりに

AzureやAWSなどのクラウドのサービス停止を未然に防ぐ設計ポイントとして、マルチリージョン、マルチAZで構成するという方法を説明しましたが、利用するサーバーの台数などが増えてしまうため、必然的にシングルリージョン構成よりもコストが上がってしまいます。構成する際はよく考えて設計してください。特性を熟知し、適切に設計することで大規模障害が発生してもサービス停止しないシステムを構築することができます。
需要がどんどん上がっていくAzureやAWSについて学習したい方は、実際に利用してみるのが一番です。Azureではちょうど無償試用版というものがありますから、勉強にはもってこいです。この機会にぜひチャレンジしてみてはいかがでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です