AWS 認定 - 試験対策 「ソリューションアーキテクト - アソシエイト」（１

# 回復性の高いアーキテクチャを設計する
[AWS Innovate オンラインカンファレンス](https://aws.amazon.com/jp/blogs/news/aws-innovate-japan-201904-registration/)

* AWS 認定 - 試験対策 「ソリューションアーキテクト - アソシエイト」
* [セッション 1：回復性の高いアーキテクチャを設計する](https://qiita.com/yodyman/items/73a0f91b79675f5e80ff)
* [セッション 2：パフォーマンスに優れたアーキテクチャを定義する](https://qiita.com/yodyman/items/8071258b1fe972477674)
* [セッション 3：セキュアなアプリケーションおよびアーキテクチャを規定する](https://qiita.com/yodyman/items/3398f00a57de87347ae8)
* [セッション 4：コスト最適化アーキテクチャを設計する](https://qiita.com/yodyman/items/298ae52c4f84624ef774)
* [セッション 5：運用上の優秀性(オペレーショナルエクセレンス)を備えたアーキテクチャを定義する + クロージング](https://qiita.com/yodyman/items/53dd34d1e4ca99aeed34)


## 信頼性と回復性に優れたストレージを選択する

### EC2インスタンスストア
*  一時的なブロックレベルストレージ
*  EC2ライフサイクルによっては、データが消えてしまうエフェメラルボリューム
*  ホストコンピューターに物理的に直結されているのでEBSなど他のストレージに比べて高いパフォーマンスを発揮
*  頻繁に変更される情報の一次ストレージに適している
*  インスタンスストアの料金は、EC2料金に含まれる

### Elastic Block Store(EBS)
* EC2インスタンスで利用できるブロックレベルのストレージボリューム
* 同じAZにある任意のEC2にアタッチできる可用性、信頼性に優れたストレージボリューム
* EC2ライフサイクルから独立した永続性を持つストレージボリューム
* EC2料金とは別で利用料金がかかる
* ソリッドステートドライブ(SSD)

||汎用|プロビジョンド|
|---|---|---|
|ボリュームサイズ|1 GB～16 TB|4 GB～16 TB|
|最大IOPS/ボリューム|16,000|64,000|
|最大スループット/ボリューム|250 MB/秒|1,000 MB/秒|
|ユースケース|ブートボリューム、インタラクティブで低レイテンシーの<br>アプリケーション、開発およびテスト環境|I/O 負荷の高い NoSQL データベースと<br>リレーショナルデータベース|

* ハードディスクドライブ (HDD)

||スループット最適化 HDD (st1)|Cold HDD (sc1)|
|---|---|---|
|ボリュームサイズ|500 GB～16TB|500 GB～16TB|
|最大IOPS/ボリューム|500|250|
|最大スループット/ボリューム|500 MB/秒|250 MB/秒|
|ユースケース|ビッグデータ、データウェアハウス、ログ処理|1 日のスキャン必要回数が少ないコールドデータ|

* マグネティックボリューム
  * 旧世代なボリューム。SSD, HDDを推奨

#### ホワイトペーパー(英語)
* AWS Storage Services Overview
    * https://d1.awsstatic.com/whitepapers/AWS%20Storage%20Services%20Whitepaper-v9.pdf

### Amazon Elastic File System(Amazon EFS)
* EC2インスタンスで使用するファイルストレージの設定とスケーリングを簡単に行うことができる完全マネージド型のサービス
* ギガバイトからペタバイトまでを自動でスケールすることができる
* 数10~数1000のEC2インスタンスから同時にアクセスできる
* 使用したストレージにのみ料金がかかる

### Amazon Simple Storage Service (S3)
* インターネット経由で利用できるオブジェクトストレージ
* 耐久性は、イレブンナイン=99.999999999%
* リージョン内で複数の施設にまたがる複数のデバイスに冗長格納される
* ライフサイクルポリシー
  * オブジェクトが格納されてからの経過時間によってストレージクラスを自動で変更することが可能
* 柔軟なアクセスコントロールができる 
* 暗号化
* バージョニング
* マルチパートアップロード
    * 大規模データをS3にアップロードできる機能

### Amazon S3 Glacier
* データアーカイブ用のストレージサービス
* データを取り出す際にコストと時間がかかる、反面データサイズにかかるコストがS3よりも非常に安価な設定
* データの取り出しオプションは、３つ
* 耐久性は、イレブンナイン=99.999999999%

#### ストレージクラス
* Amazon S3 標準 (S3 標準)
  * アクセス頻度の高いデータ向けに高い耐久性、可用性、パフォーマンスのオブジェクトストレージを提供します。
  * クラウドアプリケーション、動的なウェブサイト、コンテンツ配信、モバイルやゲームのアプリケーション、ビッグデータ分析など、幅広いユースケースに適しています。
  * 複数のアベイラビリティーゾーンにわたってオブジェクトに耐久性 99.999999999%
  * 1 年で可用性が 99.99% になるように設計
* Amazon S3 Intelligent-Tiering (S3 Intelligent-Tiering)
  * パフォーマンスの低下や、オペレーション上のオーバーヘッドを発生させることなく、最もコスト効率の高いアクセス階層に自動的にデータを移動することで、コストを最小限に抑えるように設計されています。
  * 複数のアベイラビリティーゾーンにわたってオブジェクトに耐久性 99.999999999%
  * 1 年で可用性が 99.9% になるように設計
* Amazon S3 標準 – 低頻度アクセス (S3 標準 – IA)
  * アクセス頻度は低いが、必要に応じてすぐに取り出すことが必要なデータに適しています
  * 複数のアベイラビリティーゾーンにわたってオブジェクトに耐久性 99.999999999%
  * 1 年で可用性が 99.9% になるように設計
  * 取り出し料金がかかる
* Amazon S3 1 ゾーン – 低頻度アクセス (S3 1 ゾーン – IA)
  * アクセス頻度は低いが、必要に応じてすぐに取り出すことが必要なデータに適しています。
  * ひとつの AZ にデータを保存するため、S3 標準 – IA よりもコストを 20% 削減できます。
  * 複数のアベイラビリティーゾーンにわたってオブジェクトに耐久性 99.999999999%
  * 1 年で可用性が 99.5% になるように設計
  * 再作成可能なデータのセカンダリバックアップのコピーを保存するのに適しています
  * 取り出し料金がかかる
* Amazon S3 Glacier
  * データのアーカイブに適しています。
  * 複数のアベイラビリティーゾーンにわたってオブジェクトに耐久性 99.999999999%
  * 3 種類の取り出しオプション
      * 取得時間を設定可能 (数分～数時間)
      * Amazon S3オブジェクトのライフサイクルポリシーと連携して動作することができる
  * 取り出し料金がかかる

* Amazon S3 Glacier Deep Archive
  * 1 年のうち 1 回か 2 回しかアクセスされないようなデータを対象とした長期保存やデジタル保存をサポート
  * 7〜10 年間保持されるデータの長期保存用に設計された低コストのストレージクラス
  * 複数のアベイラビリティーゾーンにわたってオブジェクトに耐久性 99.999999999%
  * 取り出し時間は 12 時間以内
  * Amazon S3オブジェクトのライフサイクルポリシーと連携して動作することができる
  * 取り出し料金がかかる

## AWSのサービスを使用した疎結合化メカニズムの設計方法を決定する

### コンポートネント間の疎結合化
* 疎結合なシステム構成では、システム全体の可用性を向上することができる
* 密結合なシステム構成では、結合したコンポーネントの内ひとつが停止するとシステムが正常に動作しなくなるリスクがある

### スケーラビリティの疎結合化
* 密結合なシステム構成では、結合したコンポーネントの内ひとつが過負荷状態になると引きずられてシステム全体が遅延となるリスクがある
* 疎結合なシステム構成では、過負荷状態となったコンポートだけをスケーリングし性能を補うことができる

## 多層アーキテクチャソリューションの設計方法を決定する
* システムの可用性を向上させるメリット
* スケーラビリティの疎結合化
* 相互に密接に依存しない疎結合なコンポーネントで構築する
* 独立したコンポーネントは、容易に増強できる
* コンポーネント同士を非同期で連携する
* コンポーネントをブラックボックス化する
* AWS CloudFormation
  * コンポーネントのスタックを作成するサービス
* Amazon Simple Queue Service
* AWS CloudTrail
  * ログ記録サービス
* Elastic Load Balancing
* Amazon Elastic MapReduce
  * マネージド型Hadoopサービス

## 可用性や耐障害性に優れたソリューションの設計方法を決定する

* 「あらゆるものはいつ故障してもおかしくない」という前提でシステムを構築することが重要
* 高可用性とは、システムを構成するいずれかのコンポートネントが故障しても長時間停止することなく自動的に復旧する
* 自己修復して可用性を継続する
* 単一障害点を無くす
* 複数のAZ/リージョンを利用する
* AutoScaring する
* 可用性の高いマネージド型サービスを利用する

### 耐障害性（フォールトトレランス性）
* 耐障害性とはアプリケーション内のコンポートネントが備える冗長性のこと
* 疎結合性を促進することでスケーリングが容易になり、耐障害性が向上する
* 高可用性と耐障害性の考え方の違い
    * 前提として SLAを満たすには４つのEC2インスタンスが必要。AZで障害があった場合を考える
    * 高可用性
        * 二つのAZを利用し、個々のAZに2台のEC2インスタンスを配置
        * AZの一つが障害となった場合、AutoScaringで2台のEC2を起動する
        * 一時的にSLAが満たせない
    * 耐障害性
        * 二つのAZを利用し、個々のAZに4台のEC2インスタンスを配置
        * AZの一つが障害となった場合でもSLAを満たせる
        * 8台のEC2インスタンス費用が掛かる

### CloudFormation
* AWSリソースをデプロイするための宣言型プログラミング言語
* テンプレートとスタックを使用

### AWS Lambda
* サーバレスなアーキテクチャを実現できるサービス
* あらかじめ用意したコードを関数として実行させることができる
* 実行タイミングをAWSのイベントと紐づけることができる
* 二つの大きなメリット
  * 運用上の様々な操作を自動化できる
      * 障害イベントをトリガーに自動回復させる
  * アプリケーションとして利用する
      * 可用性、運用性をAWSに任せることができる