AWSを使用した代表的なサービスと学習方法（初心者向け）

# はじめに
youtubeの動画を元にAWSの学習を実施したので、アウトプット兼備忘録としてこの記事を投稿しました。私自身が初心者なので記事の解説レベルは初心者レベルですが誰かのお役に立てれば幸いです。

## AWSとは何か

AWSはインターネット上でコンピューターの力を借りることができるサービスであり、詳細を示すと、AWSとは「Amazon Web Services」の略称で、アマゾンが提供しているクラウドコンピューティングサービスのことです。

### クラウドコンピューティングとは
以下の機材やソフトウェアなどのコンピューティングリソース（資源）をインターネット経由で使用すること
- サーバー（業務用の高性能なPCのこと　複数のユーザーが同時に使用する）
- ストレージ（ファイルを保存する場所　バックアップにも使う）
- データベース（表形式のデータを扱う場所　効率的に管理できる）

## AWSについての例え

あなたが喫茶店を開くとします。普通はお店を建てるために土地を買い、建物を建てて、テーブルや冷蔵庫など必要なものを全て揃えなければならないため、お金も時間もたくさんかかります。

`AWSを使う`ことは、喫茶店を建てる代わりに、テーブルや冷蔵庫のほかコーヒースタンドなど全てをレンタルしてすぐにビジネスを始めるようなものです。インターネット上で、あなたが必要なコンピューターの機能をいくらでも、そして必要な期間だけ借りることができます。

たとえば、お店のウェブサイトを作りたいとき、AWS上でサーバーを借りて、そこにウェブサイトの情報を置くことができます。

また、お客さんがたくさん来るようになれば、より多くのレモネードスタンドを借りるように、AWSでもサービスを拡大していけばいいのです。お客さんが少ないときは少ない分だけの料金で済むので、無駄がありません。

このように、AWSはインターネットを通じて、必要なときに必要なだけ`コンピューターの力を借りる`ことができる便利なサービスなのです。

## AWSの歴史

AWSは2006年（Twitterサービスが開始された年）にサービスを開始しました、当初はクラウドサービスであるElastic Compute Cloud、通称`EC2`とストレージを提供するサービス`Simple Storage Service`通称`S3`などが中心でしたが、現在では200種類を超えるサービスがAWSから提供されています

### AWSが提供するサービスの例
- Amazon RDS (Relational Database Service)
マネージドリレーショナルデータベースサービスで、MySQL、PostgreSQL、Oracle、SQL Serverなどの人気のあるデータベースシステムを簡単にセットアップ、運用、スケールすることができます。

- Amazon VPC (Virtual Private Cloud)
ユーザー専用の仮想ネットワークを提供し、AWSのリソースを安全に管理できます。

- Amazon Glacier
長期間のデータアーカイブやバックアップに適した低コストのストレージサービスです。

## AWSを利用している企業
AWSは幅広いサービスと柔軟性から世界中の様々な規模や業界の企業に利用されています。以下はその一部の企業になります

- Netflix
ストリーミングサービスの大手会社、AWSを使用して世界中の顧客にコンテンツを配信しています。

- Airbnb
宿泊予約プラットフォーム、バックエンドインフラストラクチャの多くをAWS上で稼働させています。

- Samsung
電子機器の製造大手で、AWSを利用してその多岐にわたるウェブアプリケーションとサービスを支えています。

Pfizer
製薬会社で、研究開発プロセスの加速やコスト削減のためにAWSを利用しています。

## AWSを利用するメリット

### オンプレミス
従来、企業がコンピューターを利用したITシステムを利用したり、提供するためには自社でPCやソフトウェアを購入して、専用の部屋や部署、建物に設置し、運用するなどが一般的でした。そういった形態を`オンプレミス`と呼びます

### クラウドベース
自社でサーバーやソフトウェアなどの資産を持たない代わりに、AWSなどのサービス提供者へ利用時間に応じた料金を支払うことでサービスを運用、管理する形態を`クラウドベース`または単に`クラウド`と呼びます

### クラウドを使用するメリット
クラウドベースを利用する最大のメリットは、利用開始の手続きするだけで開始できる手軽さにあります。オンプレミスの場合、機材の選定や予算の設定、設置場所の選定や、搬入など時間がもスペースも大き過ぎるところが最大のデメリットになります

#### 初期費用が安い
AWSなどのクラウドベースの場合、まずは小規模なサービスから利用を開始することで低コストでサービスを開始することもでき、WEBサイトやWEBアプリのアクセス数の増加やサービスの増加による規模の変化に応じて、支払う料金を変更することでPCのスペックや容量などを柔軟に変化させることができます

#### オンプレミスの場合の費用
オンプレミスの場合、ハードウェア、ソフトウェアの購入費用はもとより工事費、保守費用など多額の費用が伴います

#### オンプレミスのメリット
自分が所有する機材なので細かいカスタマイズやネットワークを自由に調整することができ、インターネットに接続する必要がないので、他と分断したセキュリティを維持することができます。長期的な運用の場合はサブスクリプションによる継続的な支払いよりも低コストで収まる可能性もあります

### クラウドベースは初心者にもおすすめ
クラウドベースの場合、サーバーのメンテナンスは提供元が全て実施するため、機械のメンテナンスや故障に対する修理などの面倒ごとはサービス利用者が意識する必要はありません

## AWSは責任共有モデル
小難しい言い方ですが、「AWSはクラウドのセキュリティを守るけど、クラウドの中で何をするかはユーザーが守る必要があるよ」ということです。例えばアプリケーションのセキュリティやデータの暗号化、アクセス管理などを自分で管理しなければなりません。ユーザーがAWS上で動かすシステムやデータの保護は、ユーザーの責任です。

例を挙げるならば、ハッカーがあなたのデータを狙っていた場合、AWSはあなたのデータを最大限守りますが、あなたがAWSに保管していたファイルを間違って自ら消してしまった場合、その責任はあなたが負う事になるという意味です

## AWSのデメリット
AWSのメリットは非常に多く存在しますが、デメリットも存在します

### 自由が効かない
AWSは200種類以上のサービスを提供していますが、利用者が特殊な要件を必要としており提供されるサービスでは達成が難しい場合は利用することが駅ません

### 費用が高額になる可能性
AWSが提供するサービスは200種類以上存在するため料金体系は様々に分岐しています。また利用している時間に応じて料金が発生するため長期的に見た場合、電気代のみで済むオンプレミスよりも維持コストが高額になる可能性があります

### 学習して習得するまでに時間がかかる
200種類以上存在するサービスを全て把握することはとても困難であり、クラウド操作が初めてのユーザーにはさらに操作の習得には時間がかかる場合があります

### 責任共有モデルであること
機械の設定は自分で行うため、重要な設定を見逃してしまったり、不要な設定をするなどセキュリティに関するリスクがあります。

## 個人利用の場合にはクラウドサービスは推奨される
プログラミングの学習や、案件を受けた場合の短い利用の場合であれば機材を購入するよりもずっと安く済みます

## AWSとMicrosoft Azure

AWSと類似するサービスとしてマイクロソフト社が提供しているAzure(読み：アジュール）が存在します

Microsoft Azure(アジュール）は2010年にリリースされ、AWSとはライバル関係にあります。クラウドサービスの先駆者であるAWSに対して、AzureはWindowsなどの自社製品への統合性を武器にクラウド業界のシェアを争っています。

### AWSの特徴（比較）
大手クラウドサービスの中で最も初期に運用を開始したため最も歴史が長く、運用実績や導入実績が豊富であるほか、利用料金の値下げなども積極的に実施していることから世界中で最も利用されているクラウドサービスになっています。先進的な技術や環境を試したいなどの場合はAWSが有力な選択肢となります

## AWSの学習方法

### 書籍を使った学習
AWSのサービスは日々進化しており、最新の機能や改善が常に行われています。このため、購入した書籍が半年から1年以内のものであっても、その内容にはすでに時差が生じている可能性があります。情報が最新の状態でないことがあるため、現行のサービスの最先端に追いついていないことがあります。それにもかかわらず、AWSの基本を体系的に理解したい、あるいは資格試験の準備をしたい場合には、書籍を使った学習は依然として非常に有効な手段です


### 勉強会やセミナーに参加する
一人で学習する事には限界があるため、勉強会やセミナーに参加することは非常に有効な手段です。Amazon社ではAWSに関連するセミナー、イベントを定期的に開催しています

#### connpass
conpassではIT関連の勉強会がまとめられており、AWSのセミナーに関してもスケジュールが記載されています

https://connpass.com/calendar/

#### TECH PLAY
TECH PLAYもスケジュールが掲載されています

https://techplay.jp/calendar

## AWSの代表的なサービス8選
AWSには非常に多岐にわたるクラウドコンピューティング製品とサービスを提供しています。以下は代表的なサービスの一例です
### Amazon EC2について
- WindowsやLinuxの他、MacOSなどをクラウド上で仮想サーバーとして稼働させることができるサービスです
- 用途や予算に応じて様々なOSやスペックの仮想サーバーを選択できます

#### EC2の使用例
- オンプレミスで使用していたシステムをそのままクラウドへ移行する
- 数ヶ月程度の短期プロジェクトでクラウドを利用する（購入費用節約）
- 災害対策として複数のサーバーを設置する

### Amazon EBSについて
- EC2と一緒に利用することが多いサービスです
- Elastic(エラスティック）Block Storeの略称になります
- データを保存するストレージ機能を提供するサービスです

#### EBSの使用例
- EC２にもストレージはありますが電源を切るとデータが消えます
- 永続的に保存したいデータはEBSに保存します
- EC2に配置しきれない大量のデータがある場合、EBSを使ってデータを保管することも可能です

### Amazon S3について
- S3もEBSと同じストレージ機能を提供するサービスです
- Simple Storage Serviceの略称です
- EBSと違って容量の制限がありません

#### EBSとS3の違い
- EBSはEC2とセットで使われることが主になります
- EBSにはEC2に必要なファイルやデータを保存する目的で使われます

- S3は主にバックアップなどの大容量データを扱う場合に利用します
- EBSと比較すると価格が安価になりやすいです
- 仮想サーバーのドライブとしては扱われません
- コマンドでデータの送受信を行うことができます

### Amazon Auroraについて
- MySQLやPostgreSQLと互換性のあるクラウド型のSQLデータベースサーバーです
- データベースの初期構築、設定、バックアップなどが自動化されています
- テーブル作成やレコードの読み書きなどがすぐ始められます

#### Auroraの類似サービスについて
- AmazonRDS（リレーショナルデータベースの略）は一般的に普及しているMySQLやPostgreSQLを提供するサービスです
- AuroraはAmazonが独自に開発した特別なデータベースです。
- Auroraはより高速、より多くのデータを扱えるように作られており、一般的なRDSよりも高性能なサービスと考えることができます

### Amazon DynamoDBについて
- SQLを使わないデータベースです
- SQLを使ったデータベースと同じくユーザー情報や、セッション情報、商品リスト、ゲームのスコアなどの情報を保存すること目的としています
- 複雑なSQLを使わなくて良い分、高速な読み書きが可能です
- データの容量が多くなっても自動でサイズを調整することができます

#### DynamoDBの使用例
- 読み書きが多数発生する環境で主に採用されます
- ゲーム、ECショップ、WEBアプリなど

### Amazon Lambda（ラムダ）
- WEBサービスなどを運営する場合はコンピュータ（サーバー）を24時間稼働させてユーザーのアクセスを待つ必要がありました
- Lambdaはプログラムを作動させるために自信でコンピュータを持つ必要がないサービスです
- JavaやPythonなどのプログラムをアップロードすることで、ユーザーのアクセスなどのイベントが発生した時にそのコードを実行することができます
- プログラムが稼働していない時は料金も発生しません

#### Lambdaの使用例
- 写真のサイズを操作するWEBアプリを運用する場合
- Lambdaに操作するためのコードをアップしておけば、アクセスした時にだけ自動でプログラムが実行されます。それ以外は料金は発生しません

### Amazon VPCについて
- AWSの中で自分だけのプライベートなスペースを作ることができるサービスです。

#### Amazon VPCの使用例
- WebサイトをVPCに設置した場合、許可した人のみサイトを閲覧できます
- チームメイトのみが利用できるオンライン環境を構築できます

### Amazon SageMaker
- 機械学習のモデルを作成、訓練、実際に使えるようにデプロイできます
- デプロイとは人が実際に使えるようにすることを指します