2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
リンクをコピー
記事をブックマーク
堀貴裕氏:ここまででAWS内部と静的安定性の概念を説明してきたのですが、ここからはアベイラビリティゾーンを使用したアーキテクチャを例に取って、静的安定性をより深掘りしたいと思います。
では、この章で学ぶことについて説明します。ここまではAWSサービス内の静的安定性を説明していることが多かったのですが、ここからはAWSサービスを使った静的安定性の高いアーキテクチャ設計を学びます。
そしてこれを説明するために、複数のアベイラビリティゾーンを使用したアーキテクチャを例に取って、静的安定性の高いアーキテクチャを実現する方法を学びたいと思います。
(スライドを示して)始めに、AWSのアベイラビリティゾーンの考え方を復習したいと思います。このアベイラビリティゾーンは、1つ以上のデータセンターで構成されています。。
また、アベイラビリティゾーンは落雷・竜巻・地震などの大規模な災害の相関的な影響から保護するために、意味のある距離で物理的に分離されています。これはつまり、1つのアベイラビリティゾーンでこのような災害が起きた際も、違うアベイラビリティゾーンに波及しないということです。
そしてこれも重要なのですが、高速で暗号化されたプライベート光ファイバーネットワークで接続されています。(スライドを示して)下はアベイラビリティゾーンを図示していて、1つのアベイラビリティゾーンに1つ以上のデータセンターがあって、そのアベイラビリティゾーンが高速な光ファイバーネットワークで通信されていて、その複数のアベイラビリティゾーンでリージョンを形成しています。
例えば日本のリージョンでは、東京リージョン・大阪リージョンがあります。このようにアベイラビリティゾーンで冗長化、そして光ファイバーネットワークで高速に通信することによって、パフォーマンスを落とさずに高い可用性を実現できます。
次に、そのようなアベイラビリティゾーンを複数使用した、高い可用性を持つアーキテクチャを説明したいと思います。これはかなり有名なアーキテクチャですが、複数のアベイラビリティゾーンにEC2仮想サーバーを配置します。Elastic Load Balancingはいわゆるロードバランサーの役割を持って、リクエストを均等に配分します。
そしてAuto scalingです。(スライドを示して)Auto scaling groupと書いてあるAuto scalingはEC2の1つの機能で、負荷に応じてEC2のインスタンスの数を増減させます。つまり、負荷が増えるとEC2を増やし、負荷が減るとEC2の数を減らします。
そしてこのような構成を取ることによってアベイラビリティゾーンで冗長化されているので、1つのアベイラビリティゾーンの障害の際にも、もう片方のアベイラビリティゾーンで動作を継続できます。
ここまでで複数のアベイラビリティゾーンを使ったアーキテクチャを説明してきたのですが、ここでそれを使った静的安定性を説明する前に、一般的なアーキテクチャ設計における静的安定性の考え方を説明したいと思います。
これは復習ですが、静的安定性の定義は障害で依存関係が損なわれてもシステムが動作し続ける性質(のこと)でした。
そしてAWSサービス自体の静的安定性は、コントロールプレーンが障害の際もデータプレーンが安定して動作し続ける設計でした。
そこでアーキテクチャ設計における静的安定性はどのようなものかをお話しすると、何らかの障害が発生した際に、先ほど説明したコントロールプレーンに依存しない。そのような設計を取ることが、AWSのアーキテクチャにおける静的安定性です。
では、先ほどの複数のアベイラビリティゾーンを使ったアーキテクチャで、静的安定性を考えていきましょう。ここで、EC2インスタンスのアイコン2つ分をリクエスト処理に必要なインスタンス数と仮定します。これは例えば負荷テストなどでインスタンス数を調査できます。
ここで、例えばアベイラビリティゾーン1つに何か障害が起きてしまったと仮定します。その際に考えられる動作としては、EC2の能力が1つしか残っていないので、Auto scaling groupの機能を使って、追加でEC2インスタンスを作成します。(スライドを示して)このように2つに増えていますね。
(スライドを示して)(図に書かれている)リクエスト処理に必要なインスタンス数の左側の片方。インスタンス作成という機能は、何かを作成したり設定を変更する、コントロールプレーンの機能であることを思い出してもらいたいです。つまりはアベイラビリティゾーンの障害の際に、可用性の低いコントロールプレーンに依存してしまっています。
これは先ほどのアーキテクチャ設計における「静的安定性の障害時にコントロールプレーンに依存しない」という原則に反しています。
(スライドを示して)なので、静的安定性が高いアーキテクチャを組む方法としては、マーク2つ分になっています。つまり、EC2インスタンスを200パーセント余分に用意する必要があります。
これはつまり、Auto scalingの設定は負荷テスト時の50パーセントにしておくということです。1つのアベイラビリティゾーンに何か障害が起きてしまった際に、1つのアベイラビリティゾーンに2つ分の負荷テストに耐え得るインスタンスが作成されているので、インスタンス作成の必要がありません。
そして、インスタンス作成に依存しないので、コントロールプレーンに依存せず静的安定性が高い設計になっています。デメリットとしては、やはり200パーセントもEC2インスタンスを余分に用意するので、コストは増加しています。
そのような問題を回避するために、3つのアベイラビリティゾーンを使用してコストを抑えることを考えます。(スライドを示して)このようにアベイラビリティゾーンを3つ使って、1つずつアイコンの分のEC2インスタンスを用意することです。EC2インスタンスを150パーセント余分に用意することです。これはつまり、Auto scaling groupの設定を負荷テスト値の66.6パーセントにしておくということです。
こちらの構成でも1つのアベイラビリティゾーンで何か障害が起きた際に、アイコン2つ分あるのでEC2インスタンスの作成の必要がありません。
そして、2つのアベイラビリティゾーンと比べて200パーセントから150パーセントになっているので、コストを削減できます。ですが、やはり150パーセント余分に用意するので、コストは増えてしまいます。なので、お客さまのコスト要件と可用性の要件を天秤にかけてもらって、(その上で)こちらを選択してほしいです。
お客さまによっては、サーバー以外にもデータベースを使ったアーキテクチャを設計したいということが考えられます。なので最後に、データベースを使ったアーキテクチャの静的安定性を考えたいと思います。
(スライドを示して)これはRDS(Relational Database Service)データベースのサービスですが、静的安定性を高く保つためには、プライマリのインスタンスとしてスタンバイのインスタンスを用意することをおすすめしています。
このプライマリからスタンバイに同期的にレプリケーションがされています。そこでもしプライマリのアベイラビリティゾーンで何か障害が起きてしまった際は、スタンバイにフェイルオーバーすることによって、コントロールプレーンに依存せず静的安定性が高い構成を取ることができます。
ここまでのまとめを行います。アーキテクチャ設計において静的安定性を高めるためには、障害時にコントロールプレーンに依存しない設計にする必要がありました。こちらをまず大原則として覚えてもらいたいです。
そしてEC2の例では、コントロールプレーンに依存しないために余分にインスタンスを用意する必要がありました。
そしてデータベース、RDSのサービスでは、スタンバイを他のアベイラビリティゾーンに用意して、フェイルオーバーすることで静的安定性を高めることができます。
最後に全体のまとめを行いたいと思います。AWSサービスやお客さまのサービスのような高いパフォーマンス、高い機能、高い可用性を実現するサービスにおいては、静的安定性について考える必要があります。そして静的安定性の定義については、障害で依存関係が損なわれてもシステムが動作し続ける性質であることを学びました。
AWSサービス自体で静的安定性をどのように実現するかというと、コントロールプレーンが何か障害が起きた際にもデータプレーンが安定して動作し続けることで実現してきました。
そして最後に、アーキテクチャ設計における静的安定性を実現するためには、何らかの障害が起きた際にコントロールプレーンに依存して復旧しない設計を取ることが必要であることを学びました。
私からの発表は以上です。ご清聴ありがとうございました。
関連タグ:
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.11.29
「明日までにお願いできますか?」ちょっとカチンとくる一言 頭がいい人に見える上品な言い方に変えるコツ
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.04
いつも遅刻や自慢話…自分勝手な人にイラっとした時の切り返し 不平等な関係を打開する「相手の期待」を裏切る技
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.03
職場の同僚にイライラ…ストレスを最小限に抑える方法 臨床心理士が語る、「いい人でいなきゃ」と自分を追い込むタイプへの処方箋
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
2024.12.05
「今日こそやろう」と決めたのに…自己嫌悪でイライラする日々を変えるには
PR | 2024.12.04
攻撃者はVPNを狙っている ゼロトラストならランサムウェア攻撃を防げる理由と仕組み