五島移住エンジニアの日々

2024年夏、五島に移住します!移住に関する情報や、エンジニアとしてのアウトプットなど中心に書いていきます!

AWSクラウドプラクティショナー 第5章 コンピューティングサービス

クラウドラクティショナー勉強録シリーズ。
予定が重なって更新が遅れてしまいましたが、ボリューミーだったので何日かに分けて勉強してました。 toyamadori.hatenablog.com



一般技術キーワード

SUSE

Linuxディストリビューションの一つ。
読み方はスーゼ。
ドイツの企業であるSUSE LLC(またはSUSE Linux GmbH)が開発。

SPOF

Single Point Of Failureの略。
日本語で単一障害点

SSLターミネーション

SSLの通信を終了するプロセスのこと。
対義語はSSLパススルー。 クライアントがHTTPSのURLにアクセスしたあと

SSLターミネーション:サーバーでSSL/TLS通信が解読され、以降の通信は非暗号化
SSLパススルー:   サーバーでは解読が行われず、以降の通信は暗号化されたまま

という違いがある。

yum

Yellowdog Updater, Modifiedの略。
yarnはjsのパッケージ管理ツールだが、yumCentOS, RHELなどのRed Hatで使用されるパッケージ管理ツール。
Debian系で言うところのaptに当たる。

サイジング

アプリケーションが必要とするのに必要なリソースを見積もること。


Amazon EC2

Elastic Compute Cloudの略で「柔軟なリソースの拡張・縮小が可能なクラウド上のコンピュータ」という意味。

AMI

Amazon Machine Imageの略で、EC2インスタンスを作成するためのテンプレート。
OSやアプリ、設定情報などが含まれている。
アカウント間で共有できるが、リージョンをまたいで共有はできない
リージョンをまたぐ場合はコピーする必要がある。(逆に言うとコピーはできる)

柔軟性

簡単にインスタンスを増減できるので、必要なインスタンス数の予測を行う必要がない

コスト

稼働時間

OSやリージョンなどにもよるが、インスタンスの起動時間が課金対象になる。

データ転送

異なるリージョンやAZに転送した際、インターネットに転送した際のOUT向きの通信に課金される。
逆にインターネットからEC2のIN向きの転送は課金対象外

ストレージ

正確にはEBS(Elastic Block Store)の料金。
1GBあたりの価格が設定されている。

Amazon EBS

Amazon EBS(Elastic Block Store)は、Amazon Web ServicesAWS)が提供するブロックレベルのストレージサービスであり、EC2インスタンスにアタッチして使用する。

インスタンスタイプ

例)t2.microと表記されたインスタンスタイプは、各部が以下のような意味を表す。

意味
t ファミリー
2 世代
micro サイズ

性能や料金が異なるので、これらの組み合わせから最適なものを選ぶ。
なお、インスタンスタイプはあとからでも変更できることもクラウドの強み。

ファミリー

ファミリー ユースケース
t 汎用、検証(Test?)
m 汎用(Medium)
c コンピューティング
x, r メモリ最適化
p, f, g 高速コンピューティング
h, i, d ストレージ最適化

世代

機能追加などでバージョンが上がると数字が上がる。

サイズ

性能レベルを指す。

EC2へのトラフィックの制御

セキュリティグループによって制御できる。
インバウンドトラフィック側の設定を変更し、例えば80ポート(HTTP)は許可するが22ポート(SSH)を許可しない、などといった設定にできる。

料金オプション

オプション名 課金形態 ユースケース
オンデマンドインスタンス 秒単位
定価
運用開始時などインスタンスタイプの変更が必要な場合
リザーブインスタンス 1年など選択した期間に対して一括
長期間や全額前払ができればコストを押さえられる
コンバーティブルという期間中に属性を変更できるものもあるが、割引率が低くなる
一定の期間稼働し続けることが決まっている場合
スポットインスタンス 変動(競り落とし方式)
ユーザーは希望する価格を指定し、その価格以下で利用可能なリソースがある場合にインスタンスプロビジョニングされる
CI/CDやバッチ処理など、一時的に発生する処理や処理が中断しても影響が少ない場合
オンデマンドインスタンスよりもコストを押さえたい場合
Dedicated Hosts(専用ホスト) ホスト(物理的なサーバー)に対しての従量課金 特定要件やライセンス、セキュリティポリシーなどにより物理的な隔離をしたい場合
CPUやメモリなどの物理的なスペックを正確に把握したり、パフォーマンスを予測したい場合
ハードウェア専有インスタンス インスタンス単位 Delecated Hostsと違いインスタンス単位で専有するため、複数インスタンスを立てる必要がない場合はこちらの方がコスト面で有利
Saving Plans 一定の金額を事前に支払い、その金額に対する割引率を得るモデル オンデマンドよりもコストを削減したいが、リザーブドのように細かい制御ができない場合
自動的に最適化してくれる
オンデマンドキャパシティ予約 一定期間の予約に対しての料金 オンデマンドはAZの容量不足でまれに起動できないことがあるので、予約する仕組み
実際にオンデマンドインスタンスを利用する際に、通常よりも割引が受けられる(※予約分を払っているのでお得というわけではない)

VPC

Virtual Private Cloudの略。
仮想的なプライベートネットワークで、AWS上に独自のネットワーク環境を構築できる。

セッションマネージャー

AWS Systems Manager
AWS Systems Manager内のコンポーネントの一つで、リモートでEC2インスタンスに対してセキュアなシェルアクセスを提供する。
セキュリティグループでポートの許可をしたり秘密鍵のローカル管理が不要になる。

セッションマネージャーを利用するには前提条件がいくつかある。

  1. SSM AgentがインスタンスのOS上にインストールされている
    • 代表的なAMIにはプリインストールされている
  2. EC2インスタンスがSystem Managerで管理できるようにIAMロールを引き受けている
    • SSMManagedInstanceCoreというAWS管理ポリシーをアタッチしたIAMロールが必要
      • 2023年2月のアプデ以降はデフォルトのホスト管理設定機能が追加され、権限が不要になった
  3. EC2インスタンスからのリクエスト送信がSystems Managerのエンドポイントに到達できる
    • リージョンごとにSystems Managerのエンドポイントが設定されているので、そこに到達できるようにNATゲートウェイVPCエンドポイントなどを利用して接続できるようにする。

NATゲートウェイ

プライベートサブネット内のEC2インスタンスなどのリソースがアウトバウンドトラフィックを送信する際に、プライベートIPアドレスから公共IPアドレスへの変換を行う。

VPCエンドポイント

VPC内のプライベートなリソースに対してAWSサービスへのプライベートな接続を提供する仕組み。


ELB

Elastic Load Balancingの略。
障害発生時や負荷分散目的で置かれるリソース。
様々な目的やタイプが存在する。

ロードバランサータイプ

ネットワークトラフィックを複数のサーバーやリソースに均等に分散し、負荷を分散する目的。

Application Load Balancer

HTTPまたはHTTPSの負荷分散をする用途。
ルーティング、SSL証明書の設定、リダイレクト、インスタンスに対してセッションを維持する機能など。
主にWebアプリに使用。

Network Load Balancer

HTTP/HTTPS以外のTCP、またはUDPプロトコルの負荷分散をする用途。
静的なIPアドレスを使用できる。
ゲームサーバーやバックエンドサーバーへのアクセス時など、外部の依存関係がある場合に使用。

ヘルスチェック

インスタンスのヘルスチェックを行い、正常なインスタンスのみにリクエストを送るように動作する。
タイムアウトや接続試行回数のしきい値などは設定可能。

インターネット向け/内部向け

IPアドレスをパブリックに割り当てるか、プライベートに割り当てるかを選択することができる。
内部にもELBを挟むことで可用性を更に高める事ができる。

SPOFになりえないか

ELB自体が複数ノードで動いているので、ELBを複数立てる必要は無い

クロスゾーン負荷分散

AZを超えて負荷分散する機能。
ALBでは常に有効で、NLBでは選択式。


Auto Scaling

その名の通り、自動で垂直・水平スケーリングを行うサービス。
無料で利用できる

起動テンプレート(何を)

EC2インスタンスを起動するために行ったような設定をする。

Auto Scalingグループ(どこで)

最小数・最大数、AZなどを設定する。

Auto Scalingポリシー(いつ)

動的スケーリングポリシー

ターゲットポリシー

最も簡単。
平均使用率などのメトリクスに応じてAWSが自動的に最小数・最大数の中でEC2インスタンスの数を調整する。

シンプルポリシー

CloudWatchのアラームに基づいてスケーリングする。

ステップポリシー

複数の段階でインスタンスの追加・削除を設定できる。

ステートレス

EC2インスタンスに情報や状態を持たせない設計。
Auto Scalingではステートレスな設計にする必要がある。

ブートストラップ

新しいEC2インスタンスが自動的に起動される際に、そのリソースが適切に構成され、正常に動作するようにするための初期化プロセスのこと。

ユーザーデータ

EC2インスタンスを起動する際に、インスタンスにカスタムスクリプトや構成情報を提供するためのテキストデータ。
特定のディレクトリに配置してある最新のアプリケーションをデプロイするなどの用途で使用する。

メタデータ

インスタンスが実行されている環境に関する情報や、Auto Scalingの構成に関する情報を含んでいるデータ。 パブリックIPアドレスインスタンスIDなど、EC2インスタンスが起動していないと生成されない情報を取得できるため、ユーザーデータのスクリプト内からも呼び出せる。

AWS CodeCommit

AWSに統合されたプライベートなGitリポジトリ


AWS Lambda

スケーリング

リクエストに応じて水平スケーリングをしてくれる。
Auto Scalingする必要は無い

課金形態

以下の要素に課金される。

  • 実行時間(ミリ秒単位
  • メモリサイズ
  • 実行回数
  • データ転送

その他のコンピューティングサービス

ECS

コンテナ管理。

Lightsail

簡易クラウドサービスプラットフォーム。
WordPressなどのプリセットも用意されており、小規模なプロジェクトに向いている。

Batch

バッチ処理実行環境。