orangeitems’s diary

クラウドで働くインフラエンジニアの日々の感想です(ほぼ毎日更新)。

クラウドサービスに関する基本的な考え方

f:id:orangeitems:20210220173808j:plain

 

「AWS使えば、サービスは落ちないんでしょ?。」

この発想は非常に危険です。昨日もAWSの単一データセンター障害で、多数のサービスが停止しました。

 

www.itmedia.co.jp

 米Amazon Web Services(米AWS)が提供するクラウドサービス「AWS」の東京リージョンで、2月20日午前0時ごろに障害が発生した。発生から約5時間がたった午前5時9分に同社は、障害の大部分を解消したと発表した。この影響でAWSを利用するオンラインゲームの一部などが利用しづらい状態に。また、気象庁の公式サイトが一時接続できない状態になり、同庁は復旧作業や関連性の調査を急いでいる。

 

原因を確認すると電源障害で、なんだか昔にも記憶があるなと思いましたが主題ではないので省略。

そもそもAWSを含む主流なクラウドサービスで、単一データセンターの可用性を100%保証しているところなんてどこにもありません。

1つのデータセンターが停止しても、他のデータセンターも同時利用し、冗長化してシステムを作れば停止しないシステムが作れます。だから、今回のように1つのデータセンターが停止して影響を受けるようなシステムはそもそも1つのデータセンター前提で動いていますから、落ちないサービスを実装するのは絶対に不可能です。

じゃあ冗長化するかと考えた時に、やはり2つ以上のデータセンターを使うとどうしてもその間のサーバー同士の通信がボトルネックになりますし、単一データセンターでシンプルに構築したときよりも費用もかかるし、サーバー構成も複雑になるしと、いいことばかりではありません。

それを含めて考えて、まあデータセンターが停止すると言っても年に一度あるかないかだし、インフラ復旧も運営者側でするだろうし、最悪バックアップだけでも他のデータセンターに取っておけばいいだろう。その間利用できない不便まで担保しないほうが、トータルでは得だ、という判断も、これはこれで現実的だと思います。

無停止システムに挑んだとしてもかえって障害時に復旧手順が大変になる可能性もある。だから、障害が発生したとして、データセンターが復旧したときに、スムーズに再起動できるシンプルなシステムにしたほうが何かと良い、これは小さなシステムを作る場合はよくある考え方かなと思います。

ただ、私が今日本のクラウド事情に関して思うのが、AWSとAzureが勝ちすぎていることです。かつそれぞれのクラウドサービスが日本に百も千もデータセンターを持っているわけではない。国内に数えるほどしかデータセンター拠点はありません。したがって、単一データセンターの障害「ごとき」でかなり広範なサービス群に社会的影響が発現してしまうのはまずいです。

方法論としては2つ。

①AWSやAzureなどが、日本国内に百や千のデータセンターを持つこと

②ユーザー側が、AWSやAzureではないクラウドやデータセンターの利用も発想に持つこと。

現実的には②がお勧めです。①が実現するのか、事業者任せです。②ならばユーザーがコントロールできる。実際AWSやAzure以外にも類似のクラウドサービスはあります。しかしもう、有害と思えるほどにシェアを伸ばし過ぎてしまった。おかげで昨日のような混乱(同時多発的サービス障害)が発現するリスクが年々高まっています。

特に最近は、SaaSが世の中にかなり行きわたりました。ユーザー側も特定のSaaSに業務依存すると、使えなくなった時にまずいので複数のSaaSも利用し、冗長性を考えることも増えています。しかし、それらのSaaSが全部AWS、全部Azureなんてことになったら、結局はSaaSを分けたところで何の対策にもなっていなかった、ということも考えられます。

私はAWS、Azureの寡占状態は、利用者にとってよくない、と思いますね。