AWSクラウド入門
AWSクラウドの概念や、AWSのサービス、セキュリティ、アーキテクチャ、料金、サポートについて学び、AWSクラウドの知識を深める。
参考:AWS Cloud Practitioner Essentials
クラウドコンピューティングとは
クラウドコンピューティングとは、インターネット経由で従量課金のITリソースをオンデマンド(必要な時に必要なリソースを使用する)で提供すること。
AWSクラウドの利点
- 従量課金制:使用した分だけ支払う。オンプレミスのような固定費が不要。スモールスタートが可能
- 圧倒的なスケールメリットの享受:Amazonによる大量導入で低コスト化
- 容量の予測が不要:容量を予測してハードウェアを購入する必要がない
- スピードと俊敏性の向上:新しいサービスを気軽に試すことができる
- データセンターの運営や維持が不要:イノベーションにコストを割くことができる
- 数分でグローバル展開可能:新しいリージョンにアプリケーションをデプロイをするだけでよい
AWSグローバルインフラストラクチャ
リージョンは3つ以上のアベイラビリティゾーンがある入り的な場所のこと。
各アベイラビリティゾーンには電源、ネットワーク、接続機能を冗長化した1つ以上の独立したデータセンターが存在する。
以上により、高可用性と耐障害性を実現している。
※高可用性:ダウンタイムを最小限に抑えながらアプリケーションにアクセスできるようにすること
※耐障害性:複数のコンポーネントに障害が生じても動作し続けるようにすること
AWSの責任共有モデル
クラウドの責任はAWSが負い、クラウド内のセキュリティは利用者が責任を負う。
クラウドで実行されているOSのセキュリティ設定とパッチを管理する責任は利用者が負う。

クラウドコンピューティング
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2)
AWS クラウド上の仮想サーバー
- オンプレミスサーバーよりも柔軟性やコスト効率が高く迅速に運用できる
- 垂直スケーリング:メモリやCPUを追加できる
- 料金は実行中のみ発生
Amazon EC2 インスタンスタイプ
- 汎用:コンピューティング、メモリ、ネットワークのリソースの組み合わせがバランスよく提供されている。ウェブサービスやコードリポジトリなどの多様なワークロードに最適
- コンピューティング最適化:ゲームサーバー、ハイパフォーマンスコンピューティング (HPC)、機械学習、科学モデリングに最適
- メモリ最適化:大量のデータを効率的に処理するのに必要なパフォーマンスを備えているため、大規模なデータセット、データ分析、データベースの処理に最適
- 高速コンピューティング:GPUなどを使用。浮動小数点計算、グラフィックス処理、機械学習に最適
- ストレージ最適化:大規模データベース、データウェアハウスなどローカルに保存されたデータに対して高いパフォーマンスを必要とするワークロードに最適
AWS リソースをプロビジョニングする方法
AWSサービスの操作はすべてAPIによって行われる。
アクセス方法:
- AWSマネジメントコンソール:視覚的
- AWS CLI(コマンドラインインターフェース):自動化
- AWS SDK(ソフトウェア開発キット):プログラミング言語を使用
Amazon EC2 の料金
- オンデマンドインスタンス:実行中のみ料金発生
- Savings Plans:1年または3年契約とし1時間単位で料金が発生。最大72%の割引
- リザーブドインスタンス:予測可能なワークロードに対して1年または3年契約とし、最大75%の割引
- スポットインスタンス:未使用のEC2キャパシティを利用するため最大90%割引で利用できる。AWSの需要に応じて、インスタンスが途中で停止・終了する可能性があるため、中断できるワークロードである必要がある
- ハードウェア専有インスタンス:物理サーバーを占有する。セキュリティや特定のコンプライアンス、規制要件を満たすときに使用する
Amazon EC2 のスケーリング
スケールアップ:処理能力を高くする(垂直スケーリング)
スケールアウト:マシンの台数を増やす(水平スケーリング)

Amazon EC2 Auto Scaling:アプリケーションの需要の変化に応じてEC2インスタンスの数を自動的に調整し、可用性を向上させる。
Elastic Load Balancingを使用してトラフィックを転送する
Elastic Load Balancing(ELB)を使用すると、EC2インスタンスなどの複数のリソースにアプリケーションの受信トラフィックが自動的に分散される。

メッセージングとキューイング
メッセージキューイング:コーヒーショップにおけるレジ係とバリスタ係の間の注文ボードのようなもの。
- Amazon Simple Queue Service(Amazon SQS):メッセージキューイングサービス。メッセージが保存され、失われることはない
- Amazon Simple Notification Service(Amazon SNS):パブリッシャー(発行者)がサブスクライバー(購読者)にメッセージを送信するためのパブリッシュ/サブスクライブサービス
コンピューティングサービスの探索
AWS Lambda
イベントに応答してコードを実行できるサーバーレスのコンピューティングサービス。
マネージドサービスであり、コードを書くことだけに集中できる。
ウェブサイトのリクエスト処理、データのバッチ処理、経費報告書の生成など15分以内に終わるイベント駆動型のプロセスに最適。

AWSにおけるコンテナとオーケストレーション
コンテナ
コンテナは、コード、ランタイム、依存関係、設定などアプリケーションの実行に必要なものすべてを1つの移植可能な単位にパッケージ化できる手法。
これによりどのコンピュータでも同じように機能する。

コンテナオーケストレーション
数百、数千のコンテナ規模になると、運用を手動で行う体制が難しくなる。
そこで、コンテナオーケストレーションサービスを使用すると、コンテナの起動、停止、実行などコンテナのライフサイクルや管理を自動化できる。
Amazon Elastic Container Service(Amazon ECS):
DockerコンテナをAWSで実行、管理するためのスケーラブルなコンテナオーケストレーションサービス。
アプリケーションのコンテナイメージ、EC2インスタンスタイプ、ロードバランサーなどのリソースを定義できる。設定したパラメータに基づいてコンテナとそのインフラストラクチャが自動的に管理される。
Amazon Elastic Kubernetes Service(Amazon EKS):
AWSでKubernetesを実行するのに使用できるフルマネージドサービス。
コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化する。
コンテナレジストリ
オーケストレーションサービスでは、コンテナを取得する場所が必要。
Amazon Elastic Container Registry(Amazon ECR):
コンテナイメージの保存に使用されるフルマネージドコンテナレジストリ。
コンピューティング
AWS Fargate:
コンテナ用のサーバーレスのコンピューティングエンジン。
サーバーのインフラストラクチャの管理はAWSが行うため、ユーザーはアプリケーションの開発に注力できる。
| オーケストレーション→ ↓コンピューティング |
ECS | EKS |
|---|---|---|
| EC2 | インフラストラクチャを完全に制御する必要がある中小規模の企業に最適 | インフラストラクチャを完全に制御する必要がある企業に最適 |
| Fargate | サーバーの管理を行うことなく、トラフィックが変動するウェブアプリケーションを構築するスタートアップ企業や小規模チームに最適 | サーバーの管理を行うことなく、Kubernetesの柔軟性を求めるチームに最適 |
その他のコンピューティングサービス
Elastic Beanstalk:
ウェブアプリケーションのデプロイ、管理、スケーリングを効率化するフルマネージドサービス。
デベロッパーはアプリケーションコードと必要な設定をアップロードするだけで、ネットワーク、EC2インスタンス、スケーリング、ロードバランシングなどのインフラストラクチャを自動化で構築。

AWS Batch:
バッチコンピューティングワークロードを実行するためのフルマネージドサービス。

Amazon Lightsail:
仮想プライベートサーバー (VPS)、ストレージ、データベース、ネットワークを予測可能な月額料金で提供するクラウドサービス。

AWS Outposts:
AWSのインフラストラクチャとサービスをオンプレミスのデータセンターに拡張するフルマネージド型のハイブリッドクラウドソリューション。


