おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-信頼性設計-高可用性の確保

今回のテーマ:高可用性の確保

概要

高可用性

  • アーキテクチャにより自動でシステムのダウンタイムを限りなくゼロにすることになります。
  • AWSアーキテクチャ設計においていかに高可用なシステムを実現するかが重要な項目となります。

cf)アーキテクチャ:構想、方式など

方式①:高可用なサービスを利用

AWSサービスの多くはAWS側で高可用に設計されてります。
具体的なサービスは以下などになります。

  • S3/Glacier
  • DynamoDB
  • SWF
  • SQS/SNS/SES
  • Route53
  • ELB/AutoScaling
  • Lambda
  • IAM
  • Data Pipeline
  • Kinesis
  • EFS
  • CloudFormation
  • Directory Service
  • EBS
  • CloudWatch など
方式②:高可用なアーキテクチャ設計

基本機能はユーザー側で高かような設計をする必要があります。
具体的なサービスは以下になります。

  • EC2
  • RDS
  • Direct Connect

高可用性の非機能要件

  • 目標復旧時間(RTO:Recovery Time Objective):いつまでにシステムが復旧するかという目標時間を表す指数
  • 目標復旧辞典(RPO:Recovery Point Objective):システム障害などでデータが破損した際、復旧するバックアップデータの古さの目標
  • 耐障害性:アプリケーションコンポーネントに組み込まれた冗長性の確保。
  • 復元可能性:システム障害/災害発生時におけるサービス復旧に係る機能とプロセスやポリシーを含めた整備。例:運用体制、復旧方法など文書管理
  • 拡張性:既存設計・構成において、アプリケーションの拡張性を確保する能力

高可用性のトレードオフ

  • 可用性を向上することにより、コストアップや構成の煩雑さも併せて上がるため、考慮する必要があります。

高可用性の実現する考え方

AWSを利用する際は、配置構成や高可用性を達成するサービスを組み合わせて高可用性を実現します。

AWSのサービス配置による高可用性の向上
  • リージョン数の選択:単一リージョンまたはマルチリージョンの選択
  • AZの選択:マルチAZ構成により高可用性を高める
  • VPC設計:複数VPC利用やサブネット分割するような設計により高可用性を高める
AWSサービスの利用
  • Route53によるフェイルオーバー
  • ELBによるロードバランシング
  • ClouWatchによるモニタリング
  • Auto-Scalingによるスケーラビリティの確保
  • Lambdaによるスケーリング処理
  • ElastiCacheを利用したキャッシュアクセス
単一障害点の排除

アーキテクチャが高可用性を実現できてないものはELBなどによる高可用性設計が必要になります。
対象となるAWSサービスは以下になります。

  • EC2
  • Direct Connect
  • RDS

上記の対応で利用する主要サービスは以下となります。

  • ELB
  • Route53
単一障害点の排除に関する基本的な事例
  • EC2を使用する場合、基本はELBを利用しマルチAZまたはマルチVPC構成を採用すること
  • RDSを使用する場合、マルチAZでマスタースレーブ構成を取って自動フェイルーバーで切り替え可能にし、参照はリードレプリカで負荷を軽減すること
  • ElasticIPをインスタンスへ適用する場合、同じパブリックIPを持つ別のインスタンスへIPをフローティングすること(制御はRoute53で実装します。)

今回のテーマは以上です。