AWS 上でサーバーレス構成を実現するためのサービスを、3つピックアップしました。
ここでのサーバーレスは、「OS の管理・運用が不要」の意味で述べています。
マネージドサービスを活用することで、サーバーレスアーキテクチャが実現可能です。
今回ピックアップするのは、以下の3サービスです。
- AWS Lambda
- Amazon API Gateway
- Amazon DynamoDB
AWS Lambda でイベントごとにプログラムを実行
AWS Lambda (ラムダ) では、小規模なプログラムを実行できます。
用意したソースコードをデプロイするだけで利用できます。
常に待ち受けるサーバーではなく、イベント処理に使うことがメインとなります。
「リクエストされた ID の情報を取り出して JSON で返す」「ログを受け取って加工後に S3 へ登録」など、何らかのイベントを契機とした処理に最適です。
現時点での対応言語は以下の5つです。
- Node.js
- Python
- Java
- C#
- Go
Lambda を起動させるトリガーは複数設定可能です。
CloudWatch のアラームやイベント、S3 のファイル操作、SQS などもトリガーにできます。
後述の API Gateway でインターネット側から呼び出すことも可能です。
Amazon API Gateway でエンドポイントを作成
API Gateway では、エンドポイントを自由に作成することができます。
作成したエンドポイントは、Lambda と紐付けることが可能です。
Lambda 単体では外部からのアクセスを受け付けられません。
API Gateway と組み合わせることで、インターネット側から Lambda を呼び出せます。
API Gateway には、アクセス制限(ポリシー)を設定できます。
アクセス元の IP アドレスを絞ったり、簡単な認証機構を組み込めるのも便利な点です。
リクエストを別のエンドポイントへ中継したり、
受け取ったデータを加工して次の API へ渡したり、といった動作も可能です。
その名の通り、システムのゲートウェイとして活躍するサービスです。
Amazon DynamoDB で JSON データを管理
DynamoDB (ダイナモ DB) は、NoSQL 型のマネージドデータベースです。
簡単に表現すると、「キー」と「値」のペアでデータを管理するシンプルな DB です。
RDB のような複雑なテーブル構造は実現できませんが、JSON などと組み合わせることで、構造化されたデータも管理できます。以下に一例を示します。
// ユーザ情報を NoSQL で管理する例
// 【キー】ユーザ ID
// 【 値 】ユーザの詳細情報
key: 100
value : '{
"name": "Server Taro",
"email": "hoge@example.com",
"favorites": [ "apple", "banana", "orange" ]
}'
シンプルな構造しか格納できませんが、その代わりに拡張性が非常に高いです。
スケールアウトが容易なため、大量アクセスのあるシステムに向きます。
まとめ
サーバーレスアーキテクチャに役立つ AWS サービスを紹介しました。
Lambda と API Gateway はよく利用されていますが、DynamoDB も組み合わせることで、対応できるパターンがさらに広がります。
それぞれの特性を理解した上で、うまく組み合わせて活用しましょう。
【関連記事】
⇒ AWS サーバー設置場所はどこか
⇒ AWS ALB の使い方と役割を解説
⇒ AWS Lambda・API Gateway の違い
⇒ Fargate・ECS・EKS の違いを解説
⇒ AWS 用語の解説(コンピューティング編)
⇒ AWS Lambda を VPC モードで動かすメリット
⇒ オブジェクトストレージ・ブロックストレージの違い