THE文系の俺が機械学習コース無職転生 ~PART6 AWSに関して学ぼう~

# きっかけは以下に！
本日はこちらに途中から参加させていただきました！
全くもってわからない領域でしたので、今日少しスクールで少し動かすところまでは触っておいてよかったです！
![スクリーンショット 2021-03-26 20.54.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1031281/d74b2853-3925-f623-fab5-ced5849291b1.png)


参考になることが少しでも皆さんにあればと思いますので、是非ご一読下さい！
(こういうレベルでQiitaに書いていいのかわからないので、もしダメだったらすぐ削除します！)

# 読者対象者
AWSって何？おいしいの？
便利なの？

といった方々にオススメかなと思います。

**目次見て、読みたいところに飛ぶのがいいと思います！**

それではどうぞ(*^^*)ニヤリ

![スクリーンショット 2021-03-26 20.54.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1031281/20d228e2-a371-065d-cc30-c6deaf8e8fb1.png)

# AWSの基本と使い方など

## ほしいとき、好きな数だけ作れる
- 明日からサーバ増強したい
- 月末だけサーバ増強したい
- お客さん減ったから、サーバ減らしてコスト削減したい

インフラのメンテは大変だから、こういうのはありがたいそうです。

## マネージドサービス
メンテナンスフリーです。
要は、AWSによって管理されているサーバということです。


## 楽したいならマネージドを使え！
【メリット】
すぐ使える。メンテをしなくていい。おぉ。

【デメリット】
好きなバージョンを使えない
カスタムチューニングするような構成はできない。
ちょっと高い

ちょっとここらへんは今は私はピンとこないです。

## イントラでも使えるAWS
閉域ネットワークに社内やデータセンターなどからなどの専用線を引き込んで、インターネットに接続しない状態でも使える。

## AWSの料金のかかり方
稼働時間/呼び出し回数
ストレージ容量
通信量


## クラウド破産
台数、ストレージに注意(高性能なサーバを間違えて長時間起動しないように！)
管理パスワードの漏洩に注意(Gitととかにあげちゃう人いるので気をつけて〜！)

ちょっと色々とクラウドサービス登録しまくっているので今不安になりました(゜∀。)

#### 「請求アラームを設定しよう」
AWSにはそういうサービスもあるらしいです。

## 予算が見積もれないって声も聞くけど？？
計算すればちゃんと分かるぞ！
平均バイト数×ユーザー数とか。

あとはユーザー数は営業戦略などから想定出来るはず。
そういうのがなければ、人口の何％がそのサービスにアクセスするかなどを予測するとのこと。

## シンプルアイコンを知るのも大事！

https://booth.pm/ja/items/1732181

# リージョンとアベイラビリティゾーン(はて？？)
## リージョン
どこかのデータセンターで提供されているってことです。

## リージョンは勝手に動かない
サーバなどのリソースは、リージョンを決めて作る。
リージョン間を勝手に移動することはできない。

これはちょっと今日触ったので、ピンときました。色んな国に行けます(そういうことではない笑)

## アベイラビリティゾーン(AZ)
リージョンをさらに分割した単位。地理的、ネットワーク的、電気的に十分離れていて、障害対策の単位。

災害ではAZ全体がダメになる。

## どのリージョンを使えばいいの？
１，運用が海外でよいかで決める
２，提供されているサービスで決める
３，コストで決める
４、レスポンスで決める

→東京リージョンや、大阪リージョン優先で決める！(スクールでそんなこと言われなかったので、意外でした！)

# VPCとEC2
## AWSのネットワーク
仮想的なネットワークのことをVPCと言う。
VPCには、サーバとかデータベースとかを接続する。

## アベイラビリティゾーンとサブネット
VPCは、さらにサブネットに分かれる。サブネットは、いずれかのアベイラビリティゾーンに置く。
つまり、どのサブネットに置くかで、どのアベイラビリティゾーンに置くのかが決まる。冗長構成をとるときには注意。

##### 冗長構成とは？
情報システムなどの構成の一種で、設備や装置を複数用意し、一部が故障しても運用を継続できるようにしたもの。 システムなどが持つそのような性質を「冗長性」、そのような構成法を「冗長化」という。

## VPCやサブネットのIPアドレス
VPCを定義するときにプライベートIPを決めて、サブネットに分割して割り当てる。

## インターネットに接続するための構成
インターネットゲートウェイでルーティングする。
VPCはインターネットに接続されていない。

## デフォルトのVPC
インターネットに接続可能なVPCがあらかじめ用意されている。サーバを構築して、ここに置けばひとまずインターネットから接続可能なサーバができる。

業務で使う場合は、ちゃんと専用のVPCネットワークを作る。

## EC2
仮想サーバのサービス。さまざまなスペックのものがある。ストレージのEBSとともに使う。

## EC2インスタンスの作成
AMIと呼ばれる、初期セットアップ済みのイメージから作る。**OSのインストール作業無し。** 初期アカウントが設定されていて、SSHやリモートデスクトップで接続できる。

## EC2のIPアドレス
初回起動時に確定したプライベートIPが割り当てられる。起動時に確定。以降、変更されない。

## インターネットと接続する場合
 インターネットと通信するときはインターネットゲートウェイでグローバルな動的IPに変換される。このIPはインスタンスを停止すると変わる。EC2には、グローバルIPで接続できるけれども、割り当てられているのはプライベートIP。
 
## 固定IPにしたいとき
 Elastic IPを使う
 
## 作ったあとはふつうのサーバと同じ
EC2インスタンスを作るまではAWS。作ったあとは、SSHなどで接続して操作する。ここから先はAWS関係なし。

# S3とWebサーバ

## S3
ストレージサービス。VPCなし(=グローバルIP)で使えるサービス。S3バケットと呼ばれるモノを作って、ファイルを保存出来る。

## S3の用途
- 汎用ストレージ

サービス間のデータの受け渡し
ログの保存

- Webサーバとして

HTML、画像、ダウンロードファイルなどの公開

## 負荷を気にする必要がないWebサーバ
Webサーバを公開する場合は、EC２インスタンスにあるApacheやNginxなどのWebサーバを入れる方法もあるが、負荷の心配がある。S3ならメンテナンスフリー。自動スケール。静的コンテンツの配信なら、積極的に使うべき。

# その他の主要なサービス
## ELB
ロードバランサー。EC2の前段に置いて負荷分散する。

## CloudFront
CDN。S3やEC2の前段に置いてキャッシュする。SSLによる暗号化機能あり。(証明書はCertificate Managerを使えば無料)

## Route 53
ドメイン名(DNS)のサービス。

## LambdaとAPI Gateway
最近の流行りのサーバレスでプログラミングできる環境。
サーバレスとは我々が管理しないサーバ。AWSが管理してくれるサーバで勝手に実行してくれる。
たくさんのユーザのアクセスがあったら、勝手にサーバを増やして運営してくれるみたいな？
ただ、サーバレスのプログラムはサーバレスの仕組みに乗っ取らなければならないので、改めてスクラッチする必要あり。
API GateWayはLambdaで作ったサービスをWeb上で運営出来る。
この２つはプログラマ向け。

# AWSで理解したいこと

## AWSをつかうには
- オンラインサインアップ
- クレジッドカード
- １年間は基本的なサービスは無料で使える

https://aws.amazon.com/jp/

## VPCと非VPC
- VPC

自分で作ったネットワーク(EC2,RDS,ELBなど)

- 非VPC

非VPCはAWS上のネットワーク(S3,CloudFrondなど)

## コマンド操作(AWS CLI)
ブラウザからではなく、コマンドでAWSを操作する仕組み。
インフラ技術者は、是非知っておきたい！
Web上からポチポチはしない！

## コマンドを使う時の認証
アクセスキーIDとシークレットアクセスキーを使う(IAM設定画面で参照できる。)
これをAWS　CLIや各種ツールに設定する。

## Infrastructure As a Code
コードとしてのインフラストラクチャ。
物理的な配線ではなくて仮想的なネットワーク、サーバになったため、コマンドを流せば必要なインフラができるという考え方。

## CloudFormation
テンプレートを作っておき、実行すると、必要なインフラが作れるサービス。作成はもちろんだが、削除も一発でできる。開発、検証、本番など、複数環境を作るときに、とても便利、もちろん障害時の復旧もしやすくなる。

インフラ担当者は是非覚えたいサービスとのこと！

## CloudWatchとCloudWatch Logs
- CloudWatch
AWSの監視サービス
閾値を超えると、アラート出せる


- CloudWatch Logs
AWSのログ管理サービス。サービスに関する情報は、ここに記録される。開発したアプリケーションのログも、CloudWatch Logsに出力するようにしておくと便利。


# 講座中の質疑応答(細かく回答頂いたところは載せられてないです。)


## S3は負荷によって自動スケールとのことですが、自動スケールによって価格の変動はあるか

ありません

## メニューが豊富で、何でもできるがゆえに、サービス選定および設計ノウハウが必要になる感じがします。そこをうまく解決する方法はありますか？

参考事例集などを見るのが良い

## AWSの中で人気が陰りそうなサービス、これから出そうなサービスなど、今後のAWSの展開予想があれば教えて下さい。

サーバレスが普及していくのでLambdaは出てくるのではないか。
AI関連も注目

## 個人単位で使う際のオススメのAWSの組み合わせをお伺いしたいです。

ライトなんとか
EC2インスタンス

## AWSがAzureやGCPと比べて優れた部分は何？逆に弱点は？

- 優れた部分

情報がとにかく豊富、サービスの質は良い

- 弱点

操作体系、操作メニューが分かりづらいかも

- GCPと比べる
 
巨大なサービスとしてつかっているのでそこは負ける。けど、案件によっては併せて使っている。

## 多くのクラウドサービスの中で、それぞれの特徴、長所や短所はあるか？

AzureはMicrosoftが法人向けに営業しているので、そこは手厚い。AWSはパートナー企業向けにはやっている。

## 資格取りたいけど、初学者が難関になりそうなところはどこか

セキュリティ関連は難しそう。IAMとか。
ネットワーク絡めるとVPCとか。
すぐ情報が変わりがちなので、追っかけるのが大変かもしれない。

## サーバにインストールできるOSのパッケージなどに使用できる拡張機能に制限があったりはしないのか？

基本的にない。

## あらかじめ必要なMWが載ったイメージもAMIで用意できるのでしょうか

出来る。

EC2を一回作ってAMIとしてイメージ化出来る。
そうするとカスタムAIを作れる。
デプロイ考えている人はカスタムAI是非作って欲しい。

## グーグルは不人気なサービスをすぐ終了する印象があるが、AWSはサービス統廃合はよく起きてますか？

起きてないとは思う。

マネージドサービスは確かに注意は必要。
AIとか機械学習のサービスは頼り切ってしまうとたしかに怖いところはある。

## AWSサービスのRedshiftとAuronaがこれから普及するという記事を見たのですが、具体的にどういったサービスになるのでしょうか。

- Redshift

ビックデータを処理するためのサービス。データベースとは違くて、雑多にデータを入れて集計してくれる。GCPとビッククエリティみたいな使い方。

- Aurona

AWSが開発した。お金がかかるけど、スケールしやすい。アクセス数が多いデータに対して使われていく。エンタープライズシステムには活用していける。



# 結論
質疑応答のところは読み返すと色々と今の私でも分かるところがありました！
今は分からなくても、少し使ってみた見えてくる世界もあるので、またここに戻ってこようと思います。
自分で書いたのは愛着わきますし。

少しでも「あ〜なるほどね〜」というところがあれば幸いです。
下記は講師の方と、その方の著書を載せさせて頂きました！

**改めて開催者の方、講師の方貴重なお時間をありがとうございました！！**


# 講師の方の紹介(DoorKeeperに載ってたものです。)
大澤 文孝さん
テクニカル・ライター、プログラマ／システムエンジニア。情報セキュリティスペシャリスト、ネットワークスペシャリスト。入門書からプログラミングの専門書まで幅広く執筆。

# 【主な著書】(DoorKeeperに載ってたものです。)
Amazon Web Services 基礎からのネットワーク&サーバー構築（共著）（日経BP）
docker基礎からのコンテナ構築（共著）（日経BP）
ゼロからわかる Amazon Web Services超入門（技術評論社）
Amazon Web Servicesネットワーク入門（インプレス）
AWS Lambda実践ガイド（インプレス）

ちゃんと使える力を身につける Webとプログラミングのきほんのきほん（マイナビ）
いちばんやさしいPython入門教室（ソーテック社）
いちばんやさしいGit 入門教室（ソーテック社）
Python10行プログラミング（工学社）
プログラムのつくり方（工学社）