AWS Certified Cloud Practitionerサービス解説(途中）

# はじめに
AWSの学習を始める際にどのサービスがどのようなものを提供するか理解を助けるための試験として
AWS Certified Cloud Practitionerが提供されている。

本記事はAWS Certified Cloud Practitioner認定試験において出題される可能性が高いものをベースに
サービスの概要を記載してみる。

また、本記事はAWS Skill Builderにおける「AWS Cloud Practitioner Essentials (Japanese) 日本語実写版」にて
解説された内容をベースに記載する。

<font color="red">日々更新しております。</font>

# コンピューティング

## Amazon Elastic Comute Cloud(Amazon EC2)
### 概要
プロセッサ、ストレージ、ネットワーク、オペレーティングシステムが選択可能な
仮想コンピューティング環境

Amazon Linux、Windows Serverなど任意のオペレーティングシステムを選択し
インスタンスと呼ばれる単位で環境の構築が可能

### インスタンスタイプ
- 汎用インスタンス
     コンピューティング、メモリ、ネットワークのリソースをバランスよく提供
    - アプリケーションサーバー
    - ゲームサーバー
    - エンタープライズアプリケーションのバックエンドサーバー
    - 小規模、中規模データベース

- コンピューティング最適化インスタンス
    高パフォーマンスプロセッサ向けインスタンス
    汎用インスタンスに比べより計算負荷の高いサーバー向け
    多くのトランザクションを処理するバッチサーバーにも適正あり
    - Webサーバー
    - アプリケーションサーバー
    - ゲームサーバー

- メモリ最適化インスタンス
    メモリ内に大規模なデータセットを処理するワークロード向けインスタンス
    高パフォーマンスなデータベース、大量の非構造化データのリアルタイム処理
    - 大量のメモリを消費する物
    - 非構造化データのリアルタイム処理

- 高速コンピューティングインスタンス
    ハードウェアアクセラレーター、コアプロセッサーを利用しS/Wを効率的に実行
    浮動小数点計算、グラフィックス処理、データパータン照合向け
    - グラフィックスアプリケーション
    - ゲームストリーミング
    - アプリケーションストリーミング

- ストレージ最適化インスタンス
    ローカルストレージに大規模なデータセット、高速シーケンシャル読み取り、書き込みを
    必要するものに適正
    高いIOPSを必要とするアプリケーションがある場合にもストレージ最適化インスタンスは
    最適化されていない他のインスタンスタイプより適性がある。
    - 分散ファイルシステム
    - データウェアハウジングアプリケーション
    - 高頻度のオンライントランザクション処理(OLTP)

### 料金
Amazon EC2には複数の料金オプションが存在する。
その中で適切な料金オプションを利用することで利用料金を節約することが可能

|料金オプション|課金方法|利用シーン|
|:--|:--|:--|
|オンデマンド|使用時間での課金|・中断不可で不規則、短期的なワークロード向けな料金オプション<br>・開発、テスト、予測不可能なアプリケーションの実行向け<br>・1年以上の利用が計画される場合はオンデマンドは非推奨となり、<br>リザーブドインスタンスを利用することで料金の削減が可能|
|Amazon EC2 Savings Plans|コンピューティング使用料の期間契約<br>1年 or 3年|・オンデマンドと比較し最大72%の節約が可能<br>・契約した使用料に達するまで割引された料金で課金<br>・利用料を超えた際はオンデマンド料金で課金|
|リザーブドインスタンス|オンデマンドインスタンスの利用に適用される期間契約<br>1年 or 3年|・リザーブドインスタンス期間が終了した場合はオンデマンド料金で課金<br>・インスタンスの削除もしくは、インスタンスの属性にあった新たなリザーブドインスタンスの購入するまでオンデマンド料金で課金|
|スポットインスタンス|オンデマンドインスタンスの利用に適用され<br>使用時間で課金|・開始時刻、終了時刻が決まっていないワークロードに最適であり最大90%の節約が可能<br>・EC2キャパシティーに空きがある場合のみ実行され、キャパシティーに空きがない場合は実行がされない<br>・インスタンスが中断される可能性があるため中断が可能なワークロードに最適|
|Dedicated Host|オンデマンド or 予約料金 or Savings Plansから選択|・H/Wを占有する物理サーバー<br>・最も高価な料金オプション|

### Amazon EC2 Auto Scaling(スケーリング)
Amazon EC2では需要に応じて自動的にスケールアウト、スケールインが
可能なアーキテクチャ設計が可能となり、
繁忙期などのキャパシティー不足に対して柔軟性を持っております。

スケーリングを行う際に利用するサービスは「Amazon EC2 Auto Scaling」

Amazon EC2 Auto Scalingで提供されるスケーリング方式は以下の2パターンとなる
- 動的スケーリング
    需要に応じて自動的にスケールアウト、スケールインが行われる方式
- 静的スケーリング
    事前に予想された需要を元にスケールアウト、スケールインを行う方式

ピーク時の予想が可能な際は両方のスケーリング方式をリよすることにより
迅速なスケールが可能となる。

Amazon EC2 Auto Scalingではグループ作成時に最小インスタンス数、最大インスタンス数の指定が可能


## Elastic Load Balancing
アプリケーションのトラフィックをEC2インスタンスなどのリソースに自動的に分配するAWSサービス

Amazon EC2 Auto ScalingとElastic Load Balncing(以降ELB)を組み合わせ
代表的な通信先として機能する。
EC2インスタンスがAuto Scalingにてインスタンス数を増減させた場合でも
トラフィックが増加前のEC2インスタンスに集中することを防ぎ、
スケールアウトしたEC2インスタンスに対して分散させることが可能となる。


![ELB1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884937/f14e0e45-e311-dc15-eff7-ae99b0ce15dd.png)

![ELB2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884937/8f8b6860-8f38-2b0c-fc8b-9e34db0ee6cd.png)


## Amazon Simple Notification Service(Amazon SNS)
AWSにおけるPub/Sub型サービスとなり、イメージとしてはMQTTと捉えることが可能。
各AWSサービス間をつなぐ用途に利用される。

それぞれ「パブリッシャー」「サブスクライバー」が存在し
パブリッシャーはメッセージの発行を行い
サブスクライバーにてメッセージの購読を行う。

AWSサービスにおいて必要なメッセージを購読するようにすることで
アプリケーションにて必要なメッセージ、不要なメッセージを判断することなく
振る舞いを構築することが可能となる。

主に連携にて利用されるAWSサービスは以下
+ Aamazon Lambda
+ ウェブサーバー
+ Eメール


## Amazon Simple Queue Service(Amazon SQS)
メッセージキューイングのサービス
AmazonSQSを利用することで各コンポーネント（構築されたサービス）間で
メッセージの欠損なく送信、保存、受信が可能となる。

Amazon SQSを利用することでコンポーネント間にて
順序を維持したままシーケンシャルな処理が可能となる。
また、Amazon SQSでメッセージが保存されることで
例えばAmazon SQSのデータをAWS Lambdaを利用する構築を行うことで
何かしらサービスが不通となった際でも再開された際にデータの欠損なく
処理が再開することが可能となる。
![SQS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884937/6f6eefa6-5c01-9686-8d57-ca83711843f2.png)

Amazon SQSを利用することでLambdaから別のサービスとなる際にでも
ユーザーからのリクエストはAmazon SQSが受け取るため疎結合な設計を行うことが可能となる。

## サーバーレス
クラウド内のサーバーにてコードの実行は行われるが、ユーザーがEC2のように
OSのインストール、設定などが不要なものになります。
サーバーのプロビジョニングが不要などとも言われたりもします。

## AWS Lambda
AWSサービスの中でも高い知名度を誇るサーバレスサービス
サーバーのプロビジョニング、管理が不要でコードの実行が可能なサービス

AWS Lamdaでは料金の発生はコンピューティング時間に対してのみ発生し
課金が発生するのはコードが実行された時のみとなります。

1. Lambdaにソースコードをアップロード
1. API GatewayなどからLambdaの実行をトリガー設定
1. Lambdaを実行するようにトリガーを実行

この際にLambdaに対して課金が発生するのは「3.」のみとなります。

## コンテナ
アプリケーションのコードなどを１つのオブジェクトとして管理し
ユーザーに仮想的な空間を提供する。
代表的な技術としてDockerが存在する。


コンテナ化を行うことでアプリケーションの実行に必要な最小構成の環境を
コンテナとして定義することで依存関係やセキュリティ、スケーラビリティを要求される
ワークロード柔軟に対応することが可能になります。

## Amazon Elastic Container Service(Amazon ECS)
Amazon ECSはDockerコンテナをサポートした
フルマネージドコンテナオーケストレーションサービスです。
アプリケーションを簡単にデプロイ、管理、スケーリングすることが可能です。

また、AWSの他のサービスと密接に結合されコンテナワークロードを実行するうえで
安全で使いやすいソリューションを提供します。

Docker Community Edition,Dokcer Enterprise Editionをサポートしており、
APIコールを通じてDockerコンテナの起動、停止することが可能です。

## Amazon Elastic Kubernetes Service(Amazon EKS)
Amazon EKSはAWS上でKubernetesを実行できるフルマネージドサービスです。

Kubernetesとは、コンテナ化されたアプリケーションを大規模にデプロイして管理できる
OSSとなります。
Kubernetesは大規模コミュニティにて管理されており、新機能がリリースされた際に
Amazon EKSによって管理されているアプリケーションに容易に更新を適用することが可能です。

## AWS Fargate
AWS Fargateはコンテナ向けのサーバーレスコンピューティングエンジンです。
Amazon ECK,Amazon EKSの両方で使用することが可能になります。

AWS Fargateを利用すことでサーバーのプロビジョニングや管理が不要となり、
ユーザーはアプリケーションの開発に注力することが可能です。
AWS Fargateを利用しない場合は、Amazon EC2を利用することとなります。

料金の発生は従量課金制となりコンテナの実行に
必要なリソースに対してのみ発生します。

# グローバルインフラストラクチャ

## リージョン

## アベイラビリティゾーン

## エッジロケーション(Amazon CloudFront)

# AWSサービスの操作

## AWSマネージメントコンソール

## AWS コマンドラインインターフェス(AWS CLI)

## ソフトウェア開発キット(SDK)

## AWS Elastic Beanstalk

## AWS CloudFormation


# ネットワーク

## Amazon Virtual Private Cloud(Amazon VPC)

## AWS Direct Connect

## パブリックサブネット

## プライベートサブネット

## ネットワークアクセスコントロールリスト(ACL)

## セキュリティグループ

## Amazon Route 54

# ストレージ

## Amazon Elastic Block Store(Amazon EBS)

## Amazon Simple Storage Service(Amazon S3)

## Amazon Elastic File System(Amazon EFS)



# データベース

## Amazon DynamoDB

## Amazon Redshift

## AWS Database Migration Service

## Amazon Neptune

## Amazon ElastiCache

## Amazon DynamoDB Accelerator(DAX)

# セキュリティ

## 責任共有モデル

## AWS Organizations

## AWS Artifact

## AWS Shield

## AWS Key Management Service(AWS KMS)

## AWS WAF

## Amazon Inspector

## Amazon GuardDuty




# モニタリングと分析

## Amazon CloudWatch

## AWS CloudTrail

## AWS Trusted Advisor

# 料金とサポート

## 無料枠に関して

## AWS 料金計算ツール

## AWS Budgets

## AWS Cost Explorer

## AWS サポート

## AWS Marketplace



# 移行

## AWS Coud Adoption Framework(AWS CAF)

## 6つの移行戦略

## AWS Snow ファミリー

# クラウドの利点

# その他


## AWS Well-Architected

## Amazon DeepRacer

## Amazon SageMaker

## Amazon Comprehend

## Amazon Lex

## Amazon Transcribe


# さいごに
クラウドプラクティショナーの試験として
・どのようなサービス
・どのような機能を提供するか
またAWSとしての料金体系、セキュリティ、責任範囲と広い範囲となるが何があるか、
何が出来るかを考えるうえで理解をしておいたほうが良いものとなるかなーって思います。

初投稿になるので試験助けになればうれしいです。