レジリエントアーキテクチャ(レジリエント:回復性ある)の設計


<h2>1.1 多層アーキテクチャソリューションの設計</h2>
コンポーネントの状態の疎結合化

AWSで疎結合を実現するために利用するサービス
・ELB・SQS・SNS

 <h2>Elastic Load Balancing  </h2>
・Classic Load Balancer
・Network Load Balancer
・Application Load Balancer

受信したトラフィックを複数のアベイラビリティーゾーンの複数のターゲット (EC2 インスタンス、コンテナ、IP アドレスなど) に自動的に分散させる。登録されているターゲットの状態をモニタリングし、正常なターゲットにのみトラフィックをルーティング。受信トラフィックの時間的な変化に応じ、ロードバランサーをスケーリングし、大半のワークロードに合わせて自動的にスケーリングでる。
 
アプリケーションの可用性とスケーラビリティを高める以下のサービスを使用
<h3>ELBと連携するサービスや機能</h3>
 <h5>Amazon EC2 </h5>—クラウドでアプリケーションを実行する仮想サーバー。EC2 インスタンスへのトラフィックをルーティングするように、ロードバランサーを設定できる。
<h5>Amazon EC2 Auto Scaling </h5>インスタンスに障害が発生した場合でも、必要な数のインスタンスを実行していることを確認。Amazon EC2 Auto Scaling を使用すると、インスタンスに対する需要の変化に応じて、インスタンスの数を自動的に増減することもできる。AWS ELBと組み合わせることで、負荷に応じて自動的にAmazon EC2の台数を増減する。

<h5>Route 53 </h5> 
Amazon Route53はDNSサービス。AWS ELBは、Network Load Balancer以外ではグローバルIPアドレスを使用できない。しかし、Amazon Route53と組み合わせ、AWS ELBを指定するエイリアスを作成することで、独自ドメインでもAWS ELBを使うことができる。
ドメイン名を、コンピュータが相互の接続に使用する数字の IP アドレスに変換することで、閲覧者をウェブサイトにルーティングするための信頼性が高く、コスト効率のよい方法を提供。例えばwww.example.com を数字で構成される IP アドレス 192.0.2.1 に変換

<h5>Amazon CloudWatch </h5> ELBの動作をモニタリングし、システムが正常に稼働しているか確認できます。

<h2>SQS(Simple Queue Service) </h2>
SQSはメッセージをキューイングするサービス。
Amazon SQS を間に挟む事で、各アプリケーションの独立性を保ったまま、**疎結合**でつなぐ。

キューイングはメインフレーム時代からある概念でエムキューと言われ、送信側はキューにメッセージを送り、受信側はキューに問い合わせて受け取る。<br>exキャンペーンなどでRDSへのアクセス負荷増が見込まれる場合、SQSを利用することで負荷増時もキューがバッファとなりRDSへの負荷が平準化される。<br>
SQSは容量無制限でデータセンタ間冗長化されるため、メッセージ消失の可能性は低いです。料金の課金は100万件/月までは無料でそれ以降課金。<br>
・FIFO キュー：各メッセージが、送信した順序通りかつ 1 回のみ受信される<br>

・標準キュー：各メッセージが、送信した順序通りに受信されるとは限らず、かつ 1 回以上受信される可能性のある<br>

・アクセス許可について<br>
*IAM ポリシーを使う方法<br>
*Amazon SQS ポリシーを使う方法 (IAM ポリシーに似たリソースベースのアクセス許可)<br>

・ログ記録について<br>
AWS CloudTrail を使用して Amazon SQS API コールのログを記録する<br>
・キューの正常性を監視<br>
Amazon CloudWatch を使用

 <h2>SNS(Simple Notification Service) </h2>
SNSはメッセージを登録しているエンドポイントへプッシュ配信するサービスです。SNSではメッセージ送信側を「パブリッシャー」、受信側を「サブスクライバー」と呼びます。パブリッシャーからサブスクライバーのメッセージ受け渡しはトピックと呼ぶ箱で行います。
利用方法は、マネジメントコンソールのAPIを介してトピックを作成しアクセス制限のためトピックを通信できるパブリッシャーとサブスクライバーをポリシー定義します。例えばCloudWatchから受け取った障害通知をメールで送信することも可能

https://xtech.nikkei.com/atcl/learning/lecture/19/00047/062700001/?P=11

<h1>1.2 可用性の高いアーキテクチャ,フォールトトレラントなアーキテクチャの設計</h1>
システムの疎結合化を進めると、スケーリングが容易になり、耐障害性が向上する。
<h3>AWS Well Architected Frameworkの理解</h3>
・運用上の優秀性
・セキュリティ
・信頼性
・パフォーマンス効率
・コスト最適化

<h3>AWS CloudFormation での耐障害性</h3>
一貫した再現可能な方法で AWS リソースのデプロイと管理を行うことができるサービスです。
リソース管理に割く時間を減らし、AWS で実行するアプリケーションにさらに注力できるようになります。使用するすべての AWS リソース (Amazon EC2 インスタンスや Amazon RDS DB インスタンスなど) を記述するテンプレートを作成すれば、AWS CloudFormation がお客様に代わってこれらのリソースのプロビジョニングや設定を受け持ちます。
<h3>AWS Lambda での耐障害性</h3>
Lambda では、AWS グローバルインフラストラクチャに加えて、データの耐障害性とバックアップのニーズに対応できるように複数の機能を提供。サービス自体とサービスによって運用される関数のために高可用性を発揮するよう設計されています。メンテナンスの時間帯や定期的なダウンタイムはありません。

• 完全マネージド型のコンピューティングサービス
• イベントへの応答として、または指定された時間間隔でステートレスなコードを実行する(Node.js、Java、C#、Go、Python など)。
• Amazon EC2 インスタンスなどのインフラストラクチャの管理をまったく行わずにコードを実行する。

<h2>1.4 適切な回復力のあるストレージの選択</h2>
  Amazon EC2 インスタンスストア  <br>
  Amazon EBS（Amazon Elastic Block Store）<br>
EFS（Amazon Elastic File System）<br>
Amazon S3（Amazon Simple Storage Service）<br>
Amzaon S3アクセスコントロール<br>
Amazon S3 Glacier<br>

<h5>Amazon EC2 インスタンスストア</h5>
インスタンスストアは、インスタンス用のブロックレベルの一時ストレージを提供.<br>インスタンスが停止/休止/終了などで、インスタンスストアのデータは失われる。長期的に使用する重要なデータがある場合は、インスタンスストアに頼りすぎないようにする。<br>
高速・広帯域なのでバッチ処理の一時ディスクやキャッシュとしての利用が好まれる。

<h5> Amazon EBS（Amazon Elastic Block Store）「Erastic：伸縮性・弾力性」</h5>
EBSボリュームは 99.999% の可用性があり、ブロックレベルのストレージを提供し、インスタンスから独立した永続性を持つ。
仮想マシンに割り当てることができる「ブロックストレージ」のスペックは「サービスとしてのインフラストラクチャ」(infrastructure as a service: IaaS)の性能に大きく影響する。EBSはEC2の仮想的に外付けされるHDDのような記憶領域になる。

Amazon EBSが提供するストレージは「Amazon EBSボリューム」「ボリューム」と呼ばれ、AWSの仮想マシンサービス:Amazon Elastic Compute Cloud (EC2)のインスタンス(仮想マシン)にAmazon EBSボリュームを割り当てることができる。
・Amazon EC2インスタンスにAmazon EBSボリュームを割り当てることを「アタッチ」
・Amazon EC2インスタンスからAmazon EBSボリュームの割り当てを解除することを「デタッチ」

・ストレージの種類：SSD（ソリッドステートドライブ）HDD（ハードディスクドライブ）

・汎用 SSD (gp2)
・プロビジョンド IOPS SSD (io1)
・スループット最適化 HDD (st1)
・Cold HDD (sc1)

Amazon EBS (Elastic Block Store)には、ボリュームのスナップショットを Amazon S3 に保存する機能がある。Amazon EBS スナップショットは段階的に格納され、増分バックアップ方式で最後のスナップショットが保存された後に変更されたブロックだけが保存されるため、利用料金も変更されたブロックに対してのみの請求となる。

<h5>EFS（Amazon Elastic File System）</h5>
EC2上で利用できる共有ファイルのディスク。
アプリケーションを中断せずにオンデマンドで自在にスケールできる設計で、自動拡大、縮小し、ユーザー管理の手間が省ける。

EBSを使った共有ファイルディスク作成は出来ないのが注意。
クラウドネイティブな完全マネージドタイプのNFSファイルシステム.
ファイルストレージの1つで、標準ストレージクラスと低頻度アクセスストレージクラスの2種類を提供。




<h5>Amazon S3（Amazon Simple Storage Service）</h5>
インターネットからアクセス可能なオブジェクトストレージ<br>

・柔軟なストレージ機能<br>
・耐久性と可用性の高さ<br>
・低コストによる運用が可能<br>
・静的ファイルの配信<br>
・豊富なツールや機能<br>

・オブジェクトストレージはデータを「オブジェクト」という単位で扱う記憶装置。ディレクトリ構造で管理するファイルストレージとは異なり、データサイズやデータ数の保存制限がないため、導入が効果的なのは、更新、書き換えの少ない大容量データ。<br>
exコンテンツデポと呼ばれる動画や音楽、ゲームなどのサービスプロバイダーが提供するコンテンツデータの保管・配信

容量は事実上無制限。

<h5>ストレージサービスの違い</h5>
・Amazon EFS<br>「ファイルストレージ」LinuxなどのOSでマウント可能なファイルシステムを提供。[複数]のインスタンスが同一のファイルをシェアできるサービスを提供。ビッグデータ分析、マルチメディア処理、内容管理に適用。**☆複数のEC2 instance☆ストレージ制限あり<br>**

・Amazon Simple Storage Service (S3)<br>「オブジェクトストレージ」、データを「オブジェクト」単位で読み書きするHTTPSなどでアクセス可能なエンドポイントを提供。静的webpage、マルチメディアの分配、バージョン管理、ビッグデータ分析に適用。AWS CloudFrontと合わせて、アップロード＆ダウンロードの速度が早くなる。**☆一番遅い☆インタネット経由アクセス<br>**

・Amazon Elastic Block Store (EBS)<br>「ブロックストレージ」、Amazon Elastic Compute Cloud (EC2)のインスタンス(仮想マシン)にアタッチするためのボリュームを提供。データベースやアプリケーション向けのストレージサービス。**☆高速なI/O Throughput。☆単一インスタンス**

https://qiita.com/houka/items/98de0469fc1ac5d5f6b9

<h5>Amzaon S3アクセスコントロール(ACL):ステートレス</h5>
設定ルールに従うファイヤーウォール。AWS VPC内で、ネットワーク通信を**許可/拒否(ステートレス)**、ネットワーク通信を制御。デフォルトでは全て許可。どのオブジェクトに誰がアクセスできるのか細かく定義できる。
(↔︎セキュリティグループはステートフルなため許可ルールのみで入りの通信も同様に制御が可能:ステートフル:出の通信が許可されていれば戻ってくる通信は自動的に許可)
・通信の入り:インバウンドトラフィック<br>・通信の出:アウトバウンドトラフィック<br>
・ルール番号を設定する必要があり、このルール番号が評価の順番に影響する。
**サブネットに対して設定**、ルール番号の **順に評価される**

・↔︎**セキュリティグループはEC2インスタンス単位**で設定する**全て評価される**,

<h5>Amazon S3 Glacier</h5>
通常は取り出さないが、なにかあった時の為に、消すことはできないが使うことも、ほとんどない場合において安価に保存ができるストレージサービス。
ライフサイクルルールで、転送元のAmazon S3でデータを保管する期間、Amazon S3 Glacierへ移行後に保管する期間を設定する項目を決める。このライフサイクルポリシーを活用し、必要なデータを一定期間保ちつつ、コスト最適なデータライフサイクルを実現できる。
・高い耐久性:データの耐久性がS3と同様99.999999999%<br>・低コスト:従量課金制<br>・S3 Glacierでは1,2分、<br>
ex規制およびコンプライアンスのアーカイブを
データのアーカイブ基盤を容易に導入できる:
長期間保持しておく必要がある金融サービスやヘルスケア