扱う内容
・Lambda
・API Gateway
・ECS
・Fargate
・EKS
【Lambda】
Lambdaの基礎知識
・サーバーレスである
・マルチAZ構成のため可用性が高い
・リクエスト数に応じて自動スケーリングされる
・不定期なリクエストを処理するのに向いている。常時リクエストをLambdaで処理しようとすると、EC2インスタンスで処理するより無駄に金がかかるので注意
Lambdaのスタート
Lambda関数が初めて実行される場合や、久しぶりに実行される場合は、関数実行環境の準備に時間がかかるため、処理開始までの時間が長くなる。これをコールドスタートという。
逆に、同じLambda関数に対するリクエストが継続的に発生する場合は、実行環境が再利用されるので、処理開始までの時間が短くなる。これをウォームスタートという
リクスト数が多くなると、コールドスタートが頻発しやすい
そのため、この遅延を抑えるために、プロビジョニングされた同時実行の設定を行うとよい
設定で指定された数の実行環境を事前に用意してくれる
VPCアクセスの設定をしたLambda
Lamnda関数は、作成後にLambda専用のセキュアなVPCに配置される
VPC パブリックサブネット内のリソースにはインターネット経由でアクセスできるが、プライベートサブネット内のAWSリソースには直接アクセスできない
プライベートサブネット内のAWSリソースへアクセスするには、VPCアクセスの設定を行う
ただし、この設定を行うと、インターネットへのアクセスはできなくなる
もし、VPCアクセスを設定したLambdaからインターネットへアクセスしたい場合は、NATゲートウェイまたはNATインスタンスを経由する
【API Gateway】
作成できるAPIの種類
REST API
クライアントからのリクエストに対して、レスポンスを返す形式のAPI
HTTP API
ほぼREST APIと同じだが、低遅延かつ低コスト
ただし、APIキャッシュを利用できない
WebSocket API
クライアントとサーバーの間でリアルタイムな双方向通信するためのAPI
継続的にデータ送受信をしたい場合はこれ(チャットとか)
VPCリンク
API Gatewayで作成したAPIは、VPC パブリックサブネット内のリソースにはインターネット経由でアクセスできるが、プライベートサブネット内のAWSリソースには直接アクセスできない
これをアクセスさせたい場合は、VPCリンクを使う
これにより、プライベートサブネット内のAWSリソースとAPIの間で、インターネットを経由しないセキュアな通信が可能になる
APIキャッシュ
API Gatewayには、クライアントへ送信したデータを保存するAPIキャッシュの機能がある
これにより、同一リクエストに対する応答速度が上昇する
【ECS】
ECSの主要要素
クラスター
1つ以上のタスクまたはサービスで構成される論理グループ
コンテナを動かすためのVPCやサブネットを設定する
タスク
ECSの基本的な実行単位
コンテナ実行環境のCPUやスペック、コンテナイメージ、タスクロールなどを定義する
タスクロールとは、コンテナが他AWSサービスを利用する際に設定するアクセス権限(IAMロール)のことである
サービス
タスクをどのように管理し、運用するかを決める仕組み
必要なタスク数を設定する
ECSのコンテナ起動タイプ
ECSで実行・管理するコンテナの起動タイプは、FargateとEC2起動タイプがある
Fargateは、サーバーレスでコンテナを実行できる
タスクを実行していなければ、料金は発生しない
使用したリソース量によって、料金が決まる
EC2起動タイプは、ユーザーが管理するEC2インスタンス上でコンテナを実行する
タスクを実行していなくても、料金は発生する
インスタンスタイプと起動時間によって料金が決まる
OSやミドルウェアなどのセットアップはユーザー自身で行う
【EKS】
EKSとは
Kubernetesを使用して、コンテナを管理、実行するサービス
Kubernetesとは、コンテナの運用管理と自動化を目的に設計されたオープンソースのシステムのこと
使っているのがKubernetesかそうでないかというのがECSとの違いで、コンテナを管理、実行できるという大元の機能は同じ
EKSのリソース
ポッド
EKS内で、アプリケーションを実行するための単位
なお、EKSでは、実行しているアプリケーションの負荷状況に応じて、ポッドの数を自動的にスケーリングする機能であるHorizontal Pod Autoscalerがついている
注意点として、Horizontal Pod Autoscalerを動作させるためには、CPU使用率やメモリ使用率などのメトリクスが必要となる。そのため、これらのメトリクスデータを収集するMetrics Srrverというコンポーネントが必要になる
ノード
EKS内で、アプリを実行するための環境(サーバーのようなもの)
なお、EKSでは、実行しているアプリケーションの負荷状況に応じて、ノードの数を自動的にスケーリングする機能であるCluster Autoscalerがついている
Load Balancer Controller
EKS上で動作する、ロードバランサー用のコントローラー
こいつを使うことで、ALBやNLBを自動的にプロビジョニングできる