AWSome Day 2018 Osakaまとめ

# はじめに

AWSの無料トレーニングイベントAWSome Day 2018（大阪）に参加してきました。
https://pages.awscloud.com/AWSomeDayOsaka20181016.html

その時のメモをまとめます。

![awsomeday2018.png](https://qiita-image-store.s3.amazonaws.com/0/64046/10902edd-5189-2130-79f1-9d65c360049f.png)

# 【オープニングセッション】はじめての AWS ～初級者から中級者への道筋。クラウドアーキテクチャの理解を深める～

## ビジョン
### Vision
地球上で、最もお客様を大切にする企業であること。

### Commitment
我々はお客様の生活をより楽にします。

## Amazon Goの紹介
レジなしコンビニAmazon Goをプロモーションビデオで紹介。
よく無人コンビニと言われるが、万引き防止や棚だしなどで店員が配置されてる。

RFIDでも同様のことはできるが、コストが高くて少額の小売には難しい。
クラウドでユーザーの行動をリアルタイム解析することで、コストを下げられる。

課金されずに持ち出せるか試した動画投稿などもあるが、デバッグしてくれてありがとう、という感じ。

## Amazon Roboticsの紹介
Amazonの物流センターの作業をロボットで自動化。
従来は、人が棚においてある商品を探していたが、現在はロボットが棚そのものを運んできて、人は固定位置でそこから商品をピックアップする。

日本だと川崎フルフィラメントセンターで利用されている。

## クラウド・AWSについて
### 原点
顧客体験を起点として、コスト、品揃えなどを突き詰めて成長していく。
規模を大きくしてコストを下げるという小売業と同じ考え方。
現在125のサービスが用意されており、一箇所でまとめることで開発効率が上がり、顧客体験が向上。
結果として顧客が増え、使われるサービスも増える。
コストが下がったら、値下げする。

### クラウドの特徴
必要なときに、必要なだけ、低価格でITリソースを提供。
初期投資が不要で、必要な分だけ利用。固定費ではなく変動費。
減価償却がなくなるので一時的にマイナスになる。

新しい考え方のようだが、要はラーメン屋でラーメンを食べるのと同じ。

### AWSの実績
クラウド活用企業の1/2はAWS。
世界で数百万、日本で１０万以上の顧客がいる。
毎年数百〜千件を超える機能改善。うち９割は顧客からの要望によるもの。

### クラウド導入のメリット
- ビジネスの俊敏性
    - 必要なインフラが数クリックで手に入る。
    - 納品を待たなくていい。
- コスト削減
    - 必要なときに必要な分だけリソースを確保するので無駄がない。
    - 初期投資不要。
    - ハードウェア維持費、代替機の用意、ソフトウェアのパッチ適応など様々なコストを削減。
    - 電気代やセキュリティも込みで、トータルで安い。
- 運用負荷軽減
    - バックアップやパッチ適用など運用作業の削減。
    - サーバーレス、フルマネージドアーキテクチャの活用。
    - 運用が楽になった分、もっと優先度の高い業務、未着手だった業務ができる。

### データレイク
とりあえずストレージ（S3)に貯めておいて、あとから必要なデータを取り出す。

### セキュリティ
クラウドのセキュリティはAWSが担保。
セキュリティは最重要視。さまざまな認証を得ている。
メガバンクに採用されている実績もあり。

### クラウド導入によって実現できること
- カイゼンアプローチ
    - 今までできていたことを、より早く、簡単に、安く実現できる。
- イノベーションアプローチ
    - 今までできなかったことが実現できる。

## まず学ぶべきこと
AWS利用内訳は仮想サーバ(EC2）,データベース（RDS）で９割。まずはこれらについて学ぶ。

#【セッション１】AWSのグローバルインフラストラクチャネットワークおよびコンピューティング

# リージョンとアベイラビリティゾーン
AWSのデータセンター群は、複数のリージョンとその中のアベイラビリティーゾーンで構成される。

### リージョン

リージョンは東京やロンドンなど、地理的なロケーション。
最低２つのアベイラビリティゾーンで構成される。

ただし、大阪だけは特殊で単一のAZしかない。（ローカルリージョン）
基本は東京で、どうしても法的な要因などで国内にデータを持たないといけない特定の顧客のみが利用。

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

データセンターの集まり。
リージョンは隔離された複数のAZを持つことで、他のAZからの障害を分離する。

# VPC (Virtual Private Cloud)
AWS上にオンプレミスと同様の構成で仮想プライベートネットワークを構築できる。
IPアドレスの制限やVPNアクセスなどセキュリティ設定できる。
VPC内で、サブネットを分けることができ、
パブリックサブネット、プライベートサブネットのようにそれぞれアクセスできる範囲を設定できる。

# コンピューティングサービスの紹介
## 種類
- Elastic Compute Cloud (EC2) 
    - Linux, Windowsの仮想サーバー。
- Lambda
    - 使用した分のみ料金が発生。
    - フルマネージドサービスで管理不要。
- Lightsail
    - 仮想プライベートサーバ。
    - 単純なWebサーバとアプリケーション。
- 他
    - ECS, Fargate, EKSなど

## EC2とは
Elastic = 伸縮性。柔軟にサイズ変更可能な仮想サーバー。
Linuxは秒単位で課金、Windowsは時間単位で課金。
アプリケーションサーバ、Webサーバ、データベースサーバなどなんでも。
サーバーインスタンス起動時間が分単位。

###　構築手順
1. リージョン決める
2. AMIからEC2起動
3. CPU、メモリなどのタイプ(インスタンスタイプ）を選択
4. セキュリティ設定
5. 
これだけ。

AMIはOSなど設定済みのインスタンスのテンプレート。
Marketplaceからソフトウェアセットアップ済みのを選べる。

## Auto Scaling
負荷状態に合わせて、自動的にスケーリングする。

Auto Scalingグループを作成、サブネットにEC2インスタンス配置して使う。
- スケールアウト：　グループにインスタンスを追加
- スケールイン：　グループからインスタンスを削除

Auto Scaling自体は無料。

## ELB (Elastic Load Balancing　: ロードバランサー）
負荷分散の仕組み。
ELB配下にグループをつくり、EC2インスタンスを配置する。
設定してDNS名をブラウザ開くと、更新のたびに接続先が切り替わるのが確認できる。

配置位置
- 外部（インターネット向け）: 例えば、Webサーバ向け
- 内部：例えば、内部アプリサーバー向け

アプリケーション、ネットワーク、クラシックの３種類。
クラシックは互換性確保用なので新規では使わない。
新しいアプリケーションロードバランサーのほうが安くなるはず。

## Cloud Watch
システムの状態を監視。
EC2の負荷状態、S3の容量、ELBのレイテンシなど監視。
グラフと統計を表示するなど。
アラームを設定し、AutoScaleと連動できる。

# 【セッション2】AWSのストレージとデータベース

## Elastic Block Store (EBS)
EC2のローカルストレージ。
永続的なブロックレベル(4kB)のストレージ。
AZ内で自動的にレプリケート（複製）し、市販HDDの20倍の耐久性がある。
S3にスナップショットを保存できる。

SSD/HDDを選べる。
使い分け
- 細かいファイルをランダムアクセスする場合はSSD。
- 大きな1つのファイルにシーケンシャルにアクセスする場合はHDD。HDDのほうが安い。

AWSはいつでも別のタイプへ切り替えられるので、耐久性の問題は無い。
容量に応じて課金される。(インスタンス置きっぱにするので、時間課金ではない)
  
ライフサイクル
1.未使用スペースから1GB〜16TB確保
2.インスタンスにアタッチ（１インスタンスのみ）
3.OSからフォーマット
4.デタッチ、削除

## Simple Storage Service (S3)
インスタンスなしでも外からhttpでアクセスできるオンラインストレージ。
容量制限無いので、ビッグデータのデータレイクとして使える。

ファイルをオブジェクトという単位で管理。
オブジェクトごとにURLが発行される。

さらにバケットという概念でアクセス管理。
バケット名はドメインになるので、全世界で一意である必要がある。

## Relational Database Service (RDS)
マネージドなリレーショナルデータベース。
EC2上で自分でMySQLとか入れることも出来るが、RDS使うと運用が楽になる。

１日１回自動バックアップ（必須）。最大35日保存。
任意の日時に巻き戻せる。

もちろん手動スナップショットを取ることも可能。
S3に永続保存される。

クロスリージョンスナップショットで、
他のリージョンにコピーして災害対策。

## Aurora
Amazonオリジナルのリレーショナルデータベース。
MySQL, PostgreSQLと互換性があり、よりパフォーマンスがいい。
サーバーレス構成が選べる。

## DynamoDB
フルマネージド型、サーバーレスのNoSQLデータベース。
項目(item)ごとに属性が異なってもいい。

制限なく大容量のデータを保存可能で、IoT用途などに向く。
テーブルごとにリクエストキャパシティを設定。（性能を指定）

#【セッション3】AWSセキュリティの基本
セキュリティは当然、AWSの最重要事項。
責任共有モデルでAWS側で担保する領域を明確にした上で、さまざまな対策がとられている。
取り組みの詳細についてはホワイトペーパーなどで共有されている。

今回のセッションではキーワードをあげてざっと紹介しつつ、IAM、Trusted Advisorについては少し詳しく説明していただいた。

参考）責任共有モデル
https://aws.amazon.com/jp/compliance/shared-responsibility-model/

参考) セキュリティ関連のホワイトペーパー
https://aws.amazon.com/jp/whitepapers/#security

## IAM (Identity and Access Management)
AWSリソースへのアクセス制御（認証、認可）を行うサービスで、他の各サービスのアクセス権やロールを管理するのに使う。

### 認証
認証手段として、AWSマネジメントコンソール内はもちろん、AWS CLIや、SDK APIでも利用する。

マネジメントコンソールはユーザー名とパスワード、AWS CLI, SDK APIはアクセスキーとシークレットキーで行う。

パスワードポリシーを設定できるので活用すること。
特に権限の強いユーザーには多要素認証を有効にしておいたほうがいい。

AWS利用開始後すぐに管理者権限をもつIAMユーザーを作ることを強く薦めていた。
登録時に作ったアカウントルートユーザーは、すべてのAWSサービスへの完全なアクセス権を有しており、しかも削除ができないので、流出したら大変。
（実際に乗っ取られてBTCマイニングに悪用された例もあるそう）
普段はIAMユーザーで認証するようにしておき、万が一の場合は削除すればいい。

### 認可
IAMポリシーと呼ばれる、どのサービスに対してどんな権限をもたせるかのドキュメントを記述して、各AWSサービスへのアクセス権の付与を行う。
IAMユーザー単位だけでなく、グループやロール単位でも管理できる。


## AWS Trusted Advisor
AWSのパフォーマンスとセキュリティについて、ベストプラクティスと照らし合わせた上で改善点、推奨事項を教えてくれるサービス。
サポートプランによってチェック項目が変わる。
- セキュリティ
- 対障害性
- パフォーマンスの向上
- コスト最適化

# 【セッション4】 Well-Architected Frameworkと料金の話
設計内容がベストプラクティスや原則にあってるかレビューする指針。
ちゃんと考えて設計しているか確認するドキュメント。

原則として、
- 必要キャパシティの推測をやめる
　無駄なリソースを用意しない
- 本稼働スケールでシステムをテストする
- できるだけ自動化する
　設定をスクリプトをしとく
- 新しいアーキテクチャを許容する
- データドリブンでのアーキテクチャ変更
- 本番で想定される自体を実際に起こしてテストする（Game Day）

確認する内容は、ログをどのように分析しているか、需要の変化にどう対応するかなど、きちんと考えていないと回答しにくいもの。

## 料金
- 基本は使った分だけ請求される従量課金制
- 予約しておくと安くなる
- 使った量が多いと単位あたりの支払いは安くなる
- AWS側でコスト削減できたら値引きで還元

# おわりに
AWSを活用してサーバー管理のコストやリソースを削減し、顧客自身のサービスの価値を高めてほしいという発言がよくあり、Amazonの顧客第一である考えが徹底されていると感じた。

コストや運用面でクラウドはメリットが多い（そういう話しか聞いてない）、クラウドはもう利用する前提で、どう向き合っていくかが重要とのことで、特にシェアの高いAWSについて学んでいくことは必須のように思われる。

今回のイベントでは、EC2やS3といった定番のサービスについてより詳しく知れたり、実際の運用やセキュリティに対する考え方も紹介していただけたりと、今後学習をすすめていく上での入り口として非常に有用であった。