AWS 認定ソリューションアーキテクト – プロフェッショナル 合格

#はじめに
前回から半年ほど間が空きました。SAPは二回落ちましたが、スコアは徐々に上がってました。ですが、自分の中でAWSがまだ体系的に理解できていなかったのと、教科書としているものが翻訳の追いついていないホワイトペーパーという現実、また勉強のしかたなど色々迷っていました。
今回記事を更新することができた要因としては、書籍の発売によるものです。私の中で合格実績のあるシリーズのSAPが登場したので試験申し込みに踏み切ることができました。長々と学習から逸れましたので本編に戻ります。
#SAP試験を受けるにあたってのサービスの全体像
##コンピュート
* EC2
* ECS
    * マネージド型コンテナ オーケストレーションサービス。コンテナ の停止・起動・アクセス制御・信頼性やスケーラビリティの担保等を一元的に管理する。
* ELB
    * ALB・CLB・NLBの使い分けに注意
* EKS
    * ECSと同様のコンテナオーケストレーションサービスだが、使用しているエンジンがK8Sを利用している。
* Fargte
    * Fargateはコンテナ用のクラスタを構築しコンテナを実行するマネージド型のコンピューティングリソース。コンテナ用のクラスタはEC2でも構築できるが、Fargte自体のパッチ適用やウイルス対策等のホストレベルのセキュリティはAWSが担保するので、ホストレベルの運用を意識する必要がない。しかし、運用不可が軽減される代わりにFargteが実行されているホストにSSHで接続することができない。したがってコンテナのログをFargteないから抽出する実装について設計時に詰める必要がある。
* EB
* Lambda
* AWSBatch
    * バッチ処理のためのマネージドサービス
    * 夜間バッチのような使い方ではなく、大規模な科学計算や趣味レーションといった用途でよく使われる。
##ネットワーキング
* VPC
* ダイレクトコネクト
    * インタネットを経由したVPNを利用することもできるが、安定した通信帯域を確保しセキュリティの担保された通信キャリアの閉域網を経由してVPCにアクセスするにはDXを利用する。非常に高い可溶性がもとめらる場合には複数キャリアの回線を利用してDXの経路を二重化するケースも考えられる。しかし、インタネットVPNよりコストは高くなるので、回線冗長化とコスト削減を両立させる場合にはDXのバックアップ回線としてVPN接続を併用するケースも存在する。
* ナットゲートウェイ
* VPCエンドポイント
    * AWSの各サービスはAPIのURLを持っている。ユーザはインタネットでAPIを呼び出してAWSを使う。しかし、要件でVPCからインタネットへのアクセ鵜を完全に遮断したい要件がある。その時に使う。
    * ゲートウェイ型
        * S3とDynamoDB
    * インタフェース型
        * プライベートリンクと呼ばれる。
* マネージドVPN
    * VPCとオンプレミスとのリモート接続間で、IPsec VPN(Virtual Private Network Connection)を作成
* プライベートリンク
    * VPCエンドポイントのうちインタフェースエンドポイントをプライベートリンクという。VPC内にENIが作成されて、プライベートIPが割り当てられる。
* VPCピアリング
    * 異なるアカウント間またはリージョン間でも設定ができる。
* ルート５３
    * 名前解決以外にルーティングや、Route５３自身によるサービスの死活監視、およびその結果に基づくトラフィックのフェイルオーバ等も実現できる。

##ストレージおよび配信
* S3
    * データのアクセス頻度や耐久性に応じたストレージクラスの使い分けやアクセス制御、Webサイトホスティング、暗号化、バージョン管理、ライフサイクル管理などを問われる。
* CloudFront
    * CDN。静的コンテンツをエッジロケーションにキャッシュとして保持して、そこからオリジン（S3、EC2、オンプレ）などのバックエンドの負荷を低減できる。
* EBS
    * シーンに応じてボリュームタイプを使い分ける必要がある。またEC2とEBSはネットワークで繋がっているので、EC2の大尉行きが細い場合には作用しない。そういう場合には、インスタンスタイプを上げるかEBS最適化が有効となっているタイプで解消される。
* EFS
    * 複数のEC2でファイルシステムを共有できる。しかし、SMBとWindowsには対応していないので注意
* Glacier
    * 以前はめっちゃ安い代わりに取り出し速度がクソ遅いことがあったけど、最近は少しお金を払えば結構早めに取り出せるように変わった。また、Deepアーカイブというストレージクラスも増えて、最小ストレージ期間が二倍の１８０日へ取り出し時間は１２時間（普通は６時間くらいだったはず）になったけどめっちゃ安く保存できるようになった。
* Storage Gateway
    * オンプレのデータを仮想アプライアンス（専用機器）経由でS3にバックアップするサービス。オンプレのサーバは残しつつ、データのストレージへのバックアップ部分のみをAWS側へオフロードする用途に適している。
        * ファイルゲートウェイ
        * ボリュームゲートウェイ
            * ストアドボリューム
            * キャッシュドボリューム
        * テープゲートウェイ

##DataBase
* RDS
    * 簡単にアクティブスタンバイ構成、障害発生から五分前の状態に復元することができるポイントインタイム昨日も提供。
* Aurora
    * RDSとは違いアクティブスタンバイではなくライターとリーダーというDBインスタンスを同時に利用することで、コスト効率が良くなっている。
* DynamoDB
    * データは３AZに分散保管。自動スケール。RDBMSで設計ミスると速度が遅かったりコスト増。スループットはあらかじめRCUとWCUで指定する。
* ElastiCCashe
    * エンジンはRedisとMemcashedを選択できる。インメモリデータストアの特性として、データがメモリの中にあるのでハードディスクからデータを取り出す場合よりも早い。RDSへの問合せが頻繁にあるデータについてはアプリケーション全体のスピードが上がる。
    * また、アプリケーションで持っている状態情報などを格納する用途でも役立つ。
* Neptune
    * グラフデータベース。データ同士がネットワーク上の構造で保管されている。リレーションシップの探索に最適。
* Redshift
    * データウェアハウス。データは列で格納されるので列での集計が早い。数十のクライアントが分析業務を行うワークロードに向いている。

##Analtics
* EMR
    * Hadoopを動かすための分散処理フレームワークはマスターノード、HDFSにデータを保存するコアノード、処理を実行するタスクノードに別れる。これらを使いやすい形で提供。ノードにはEC2を使うのでEMrの機能やコストについて予習が必要。
* QuickSight
    * マネージド型のBIサービス。従業員へのダッシュボードの提供やブラウザを利用した分析やデータの可視化を可能にする。オンプレのDBやCSVやEXcellといったファイルに止まらず、セールスフォースなどのサードパーティ製のSaasだけでなくAWSが提供する様々なサービス（S3、アスナ、レッドシフト、RDS）をデータソースとして活用できる点にある。
* Athena
    * S3に保存されたデータに対し、標準SQLを実行して分析処理を簡単に行えるサービス。レッドシフトやEMRに対してEC2使わないのが特徴。課金はデータスキャン量に応じる。軽く分析を行いたい時に向いている。
* Glue
    * 分析基盤を構築する場合、データの抽出（Extract）、データ形式変換（Transform）、データ分析基盤に対するデータのLoadといった三つのタスクが必要になる。これらをETL処理と呼ぶが、これをマネージドで提供するのがGlue。PythonやスカラでETL処理を記述できる。普通はETL処理をするにはライセンス料とサーバコストがかかるけど、インフラの管理がいらないのですごい。
* CloudSearch
    * 検索機能サービス。アプリケーションに検索機能を楽に実装できる。
* ElasticSearch
    * キバナというBIツールがデフォでついている。データの分析や可視化を行うことができる。
* Kinesis
    * データストリーム
        * サーバから送られてくるログをリアルタイムで処理するのに向いている。データ送信側はKPLまたはキネシスエージェントを入れてアプリケーションを開発してストリームに対してデータを送る。データ処理側はKCLを使ってアプリを作ってデータを処理する。
    *　データホース
        *　受け取ったデータをS3レッドシフトESといった分析サービスに流す。受け取り元としてデータストリームを指定もできる。この場合はKCLでアプリケーションを開発する必要はない。
    *　kinesics　データアナリティクス
        *　キネシスで受信したデータについてリアルタイムでSQLを使って分析できる。データファイアホースから分析サービスに配信されたデータを分析することもできる。

##Application integration
* SNS
* SQS
    * SNSの後に挟むのが基本。SQSに保存されたメッセージの量についてオートスケーリングを発動させてコンシューマ側のEC2インスタンスを増加させる動きも可能。
* SES
    * マネージド型のSMTPサービス。SMTPサーバはポストフィックス等のミドルウェアをインストールすることでも構築が可能ですが、その倍には死活監視や冗長化、OSの保守などが発生す流のでオススメしない。
* SWF
    * マネージド型のワークフロー実行サービス。AWS　Flow　フレームワークというSDKを活用してアプリケーションを開発し、SWF上にデプロイしてキック・タスク・条件分岐判定を行うデサイダーを実装して業務処置を記述することができる。
* APIGateway
* StepFunction
    * アプリケーションは服すの処理が連携して動作する。それぞれの処理を実行するには、処理間のデータの受け渡し、条件分岐、同期・並列実行。リトライなどの考慮が必要だが。複数の処理をステートマシンとしてJSON形式の定義ファイルで定義して、実行する基盤を提供する。ステートマシンが登録されると、コンソール上からユーザはワークフローを確認することができる。Lambda、AWSバッチ、ECs、SNS、SQSといった様々なネイティブサービスと連携可能。
* ElasticTransCorder
    * 動画のトランスコード（解像度の変換やフォーマットの変換処理）を実現する。S3に保存された動画ファイルを変換し、変換後のファイルをフロント経由でストリーミング配信するといった使い方できる。
##AI
* Recognition
    * 画像・動画を認識するサービス。
* Polly
    * テキストデータから音声データへの変換を実現。ボカロ
* Forecast
    * 時系列予測サービス
* Personalize
    * レコメンデーション機能実装サービス
* Transcribe
    * 音声をテキストへ変換
* Translate
    * 翻訳
* Comprehend
    * テキストから感情を感じ取る
* Lex
    * チャットボットを容易に構築できる。

##Security
* IAM
* STS
* KMS
* HSM
    * 業界によっては暗号化キーの管理を自前のサーバでやりたい要望もある。そのために、AWsデータセンタ上にハードウェアを用意してあげる。
* ACM
* WAF
* Shield
    * スタンダードとアドバンスド。スタンダードはレイヤ３４から防御。アドは有料で、EIPやELBにも適用が可能。３４だけでなく７も保護。DRTというDDOSチームkらのサポートも２４３６５で対応。
* Cognito
* Secrets Manager
* GuardDuty
    * トレイルのアラートあげれるバージョン。後、コンソールで教えてくれる。
* Inspector
    * インスタンスにエージェント入れて、脆弱性診断。
* MAcie
    * S3に保存されているデータを機械的に保護分析してくれる。
* Directory Servise
    * コンピュータを利用するユーザ名やその付随情報を管理するためにディレクトリサービスが使われている。マイクロソフトのADやOSSのOpenLdapがあげられる。
    * SimpleAD
        * Samba４に対応したAD互換のディレクトリとして利用できる
    * AdConnecter
        * 認証プロキシの役割を果たす。既存のDSを利用して認証を行うことが可能。
    * MSAD
        * オンプレ環境を含めた大規模な統合認証基盤構築に約立つ。
* AWS Organization
    * コンソリデSCPを定義して制御。IAMユーザ・グループ・ロールに対しては別途で設定する必要がある。
* AWS SSO
    * Saasとの連携、ハードウェアのセットアップなど、SSOに関する

##Gavanance
* Cloudwatch
* Auto scaling
* CloudFormation
* CloudTrail
* Config
* OpsWorks
* System Manager
    * インベントリ
        * システム設定とアプリケーション情報の把握
    * オートメーション
        * プレイブックにより運用タスクを自動化
    * 実行コマンド
        * レジストリの編集やユーザ管理、インスタンスに対する運用管理タスクを自動化。オートメーションで実行コマンドと連携？
    * セッションマネージャ
        * マネコン経由でSSH接続
    * パッチマネージャ
        * 選択したOSとソフトウェアのパッチのベースラインを定義し、メンテナンスウィンドウでパッチを当てる。
    * メンテナンスウィンドウ
        * 運用管理タスクのスケジュール。パッチマネージャで定義して、メンテナンスウィンドウで設定。それをオートメーションで最終的に決定？
    * ステートマネージャ
        * インスタンスに対するサーバの設定。アンチウイルス定義、ファイアウォールなどの設定情報を保持。
    * パラメータストア
        * 接続文字列などのパラメータを一時的に保持
* Trusted Advisor
    * ビジネスまたはエンタープライズサポート契約が必須。コスト、フォールトトレランス、パフォーマンス、セキュリティ、サービス制限のうちから自動的に提案される。
* Personal Hearth Dashboard

##Cost
* Reserved instance
* Spot instance
* Consolidated Biiling
* Cost explorer
* Budgets

##migartion
* DMS
    * DB移行サービス。移行もとをオンプレまたはAWS上に選択でき、移行先のEC2インスタンス上にインストールしたDBやRDSにデータを移行できる。異なるDBエンジン間の移行も対応している。エンジンが異なるとデータ型やプロシージャの差異を変換する必要があるので、スキーマコンバージョンツールと組みあわせて移行を実施する。
* SCT
* SMS
    * 仮想環境に存在するサーバをAMIとして移行するサービス。SMSがサポートしているのはリホスト。オンプレのワークロードを変更せずに大量にクラウドへ持ち込む場合に向いている。増分レプリケーションを採用しているので、移行時のネットワーク帯域への影響を最小限にできる。
* Application discovery Service
    * オンプレを対象としたクラウドへの移行前に使う。エージェントを使わないでも情報収集を行える。
* Migration hub
    * AWSのみならず、サードパーティ製も合わせた以降サービスを提案。
* VM import/export
    * 仮想サーバとEC2への変換
* Snowfamilry
    * スノーボール
        * テラバイト級のデータの保存を行う。
    * スノーボールエッジ
        * デバイス内でデータ加工も可能になっているので、
    * スノーモバイル
        * ストレージ機器を搭載したトレーラ。ペタバイトレベルの移行に使う。

##devlopper
* code commit
* codebuild
    * ビルド形式をYMALで記述
* code deploy
    * サービスのダウンタイムを減らすためにブルーグリーンでもデプロイ可能。
* code pipeline
* Code star
    * CICDパイプラインを簡単に構築。
* Xray
    * AWSサービスとのリクエストのやりとりの追跡などができる。SDKをアプリケーションに組み込んで問題点の発見ができる。