ポイント: AWS サーバーレスアプリケーションモデル (AWS SAM) は、サーバーレスアプリケーションの作成、デプロイ、および管理を簡素化し、開発者がサーバーに関する懸念なしにコーディングに集中できるようにします。このガイドでは、AWS SAM の基本機能、利点、およびリソースについて説明します。AWS Lambda や Amazon API Gateway との統合も含まれています。
- サーバーレスアプリケーションの開発を合理化します。
- 低コストで効率的な従量課金制モデルを提供します。
サーバーレスアプリケーションは、企業がビジネスを行う方法を変え、より迅速かつ頻繁にデプロイすることを可能にすることで競争優位をもたらしています。
Amazon のAWS サーバーレスアプリケーションモデル(AWS SAM)は、この分野でのゲームチェンジャーであり、簡素化されたテンプレートとコードサンプルのおかげで、開発者がアプリケーションを作成、アクセス、デプロイすることを容易にしています。
このガイドで学ぶこと
このガイドは、AWS SAM でプログラミングを学ぼうとしている開発者のための入門書です。以下の主要な AWS SAM トピックと機能について説明します:
- 主要用語
- AWS SAM を使用するのは誰か?
- AWS サーバーレスアプリケーションモデル
- AWS SAM で使用される AWS リソース
- AWS サーバーレスアプリケーションリポジトリ
- AWS SAM でプログラミングする利点
- サーバーレスアプリケーションのための AWS SAM
- サーバーレスアプリケーションモデルの例
主要用語
AWS SAM でプログラミングを開始するために理解する必要がある主要な用語は次のとおりです:
- Function-as-a-Service (FaaS)。FaaS を企業ビジネスのニーズに合わせて簡単に調整できる実装が簡単なフレームワークと考えてください。FaaS により、顧客はインフラストラクチャをプロビジョニングおよび管理することなくコードを開発および実行できます。
- コンピュートサービス。 サーバーレスコンピューティングを専門とするオンデマンド FaaS。
- サーバーレスアプリケーション。 サーバーのメンテナンスを必要としない、クラウドでプログラムされたアプリケーション。
(サーバーレスアーキテクチャについてもっと学ぶ。)
AWS SAM を使用するのは誰か?
AWS SAM は、次の条件を満たす開発者にとって重要なリソースです:
- サーバーレスコンピューティングを使用する準備ができている
- サーバーレスアーキテクチャについてもっと学びたい
AWS SAM 内で利用可能なリソースにより、プログラマーは Amazon が提供する低コストで効率的なサーバーレスコンピューティングサービスで足を踏み入れるのが容易になります。
AWS SAM(サーバーレスアプリケーションモデル)とは?
AWS サーバーレスアプリケーションモデル(SAM)は、サーバーレスアプリケーションの作成、デプロイ、および実行をできるだけ簡単にするために設計されています。これを、選択したコードスニペットを使用した AWS SAM テンプレートを利用することで実現できます。この方法で、実質的に誰でもサーバーレスアプリを作成できます。
AWS SAM に使用される AWS リソースは?
AWS サーバーレスアプリケーションモデルで使用されるリソースを見てみましょう。
AWS SAM CLI、YAML & CloudFormation
AWS SAM アプリケーションは、AWS SAM CLI コマンドラインツールを使用して作成できます。SAM CLI を使用すると、アプリケーションを構築、テスト、デプロイできます:
- SAM CLI テンプレート
- AWS Cloud Development Kit (CDK)
SAM CLI はアプリケーションのデプロイにも使用できます。
AWS SAM アプリケーションテンプレートをYAMLを使用して定義およびモデル化できます。
AWS SAM テンプレートはAWS CloudFormation テンプレートの拡張です。デプロイ時に、SAM は SAM 構文を CloudFormation 構文に変換します。CloudFormation は、サーバーレスアプリケーションが実行されるサーバーインフラストラクチャを設定および構成し、開発者がインフラストラクチャではなくアプリケーションに集中できるようにします。
AWS Lambda
AWS Lambda FaaS プラットフォームは、開発者がサーバーを管理することなくコードを実行できるようにするために存在します。Lambda コンピュートサービスを使用すると、開発者はデプロイ可能なコードをアップロードできます。その後、Amazon が管理を行い、使用された累積ランタイムに対してのみ料金が発生します。
Lambda コンソールを使用すると、数回のクリックでアプリケーションを作成できます。Lambda は多くの言語をサポートしており、C#、Go、Java、.Net、Node.js、Python などの Lambda ランタイム環境を通じて利用できます。
開発者は、さまざまな方法で呼び出すことができる単一のシンプルでスケーラブルな Lambda 関数を作成できます:
- Lambda または他の AWS サービスのトリガーを使用した自動呼び出し。 トリガーを使用すると、ライフサイクルイベント、外部イベント、またはスケジュールに応じて Lambda 関数を呼び出すことができます。
- 他の AWS リソースからのイベントソースマッピング。 イベントソースマッピングは、Amazon Kinesis またはAmazon DynamoDB ストリーム、Amazon SQS キュー、または他の AWS リソースからアイテムを読み取り、それらを Lambda 関数に送信します。
- Lambda 関数を直接呼び出すことができる他の AWS サービス。
注意すべきは、Lambda のアーキテクチャで作成された関数は最適なパフォーマンスのためにスケーラブルであることです。
Amazon API Gateway
Amazon API Gateway サービスを使用すると、開発者はサーバーレスアプリケーションのフロントエンドを作成、デプロイ、保護、監視できます。API Gateway 拡張機能は、AWS SAM テンプレートで使用できます。
AWS Lambda でアプリケーションのバックエンドを作成するために設計されているのと同様に、Amazon API Gateway は、アプリケーションへのエントリポイントを実行するコードの作成とデプロイの複雑さを軽減します。これは、認証を含みます。Gateway API は、AWS Lambda バックエンドだけでなく、Amazon EC2 や他のウェブアプリケーションサービスとも連携します。
Amazon は、API Gateway サービスを低コストで開発者に提供し、以下の料金を請求することで手頃な価格を実現しています:
- API への呼び出し
- それらからのデータ転送
AWS サーバーレスアプリケーションリポジトリ
AWS サーバーレスアプリケーションリポジトリは、開発者がデプロイのためのサーバーレスアプリケーションとそのコンポーネントを見つけることができる検索可能なエコシステムです。これは、すぐに使用できるアプリを提供することで、サーバーレスアプリケーション開発を簡素化します。
AWS SAM でプログラミングする利点
サーバーレスアプリケーションのための AWS SAM
サーバーレスアプリケーションモデルの例
基本的なステップは次のとおりです:
- 検索と発見。 開発者はリポジトリ内でコードスニペット、関数、サーバーレスアプリケーション、およびそのコンポーネントを検索できます。
- AWS Lambda コンソールとの統合。 リポジトリのコンポーネントはすでに開発者に利用可能です。
- 構成。 デプロイする前に、開発者は環境変数、パラメータ値などを設定できます。たとえば、リポジトリのコンポーネントを大規模なアプリケーションフレームワークに追加するプラグアンドプレイのルートを選択するか、コードを分解してカスタマイズを行うことができます。必要に応じて、プルリクエストをリポジトリの著者に送信することもできます。
- デプロイ。 デプロイされたアプリケーションは、AWS Management Console から管理できます。開発者は、プロンプトに従ってサーバーレスアプリケーションとコンポーネントに名前を付け、説明し、アップロードすることができます。これにより、サーバーレスアプリケーションを内部で共有し、エコシステム内の他の開発者と共有することができます。この機能により、AWS SAM は真のオープンソース環境になります。
スケーラビリティやサーバー管理を気にせず、ほぼすべてのタイプのバックエンドサービスのためにサーバーレスアプリケーションを構築できます。AWS SAM でサーバーレスアプリケーションを構築することの多くの利点のいくつかを以下に示します。
低コストで効率的
AWS SAM は、従量課金制の構造のため、開発者にとって低コストで効率的です。プラットフォームは使用に基づいて開発者にのみ料金を請求するため、使用するサービス以上の料金を支払うことはありません。
簡素化されたプロセス
AWS SAM の全体的な目標は使いやすさです。設計上、アプリケーション開発を簡素化することに重点を置いているため、プログラマーはオープンソースエコシステムでより自由に創造することができます。
迅速でスケーラブルなデプロイ
AWS SAM は、開発者がコードを AWS にアップロードし、Amazon が残りを処理することで、迅速かつ簡単にデプロイを行えます。開発者は強力なテスト環境を提供されているため、開発者は一息つくことができません。すべてがスケーラブルで、アプリが成長し、ビジネスの目標を満たすために変化できるプラットフォーム上で行われます。
便利でアクセス可能
間違いなく、AWS SAM はクラウドでの開発に便利なソリューションを提供します。そのサーバーレスの性質は、普遍的にアクセス可能なプラットフォームであることも意味します。インターネットの広範なリーチにより、どこからでもオンデマンドでコードを実行することが容易になります。
市場投入までの時間の短縮
全体として、サーバーレスアプリケーションプラットフォームを選択することで、オンプレミスまたはクラウドにおいてサーバーやランタイムを管理および運用するために費やされる時間とお金を節約できます。開発者は数時間(数週間または数ヶ月ではなく)でアプリを作成できるため、今日の競争の激しいデジタル経済での革新を加速することにより多くの注意を向けることができます。
AWS SAM は、クラウドプログラミングにおいて非常に効率的で、スケーラブルで、低コストで便利なソリューションであることは明らかです。
ただし、まだ切り替えを行っていない方には、AWS SAM を使用して開発する際に発生するいくつかの懸念事項があります。
- 開発者がコーディングしているエコシステムに対する一般的な管理不足。
- ベンダーロックインが、FaaS にサインアップすると発生する可能性があります。
- 開発者がコードを書き直す必要があるセッションタイムアウトにより、プロセスが簡素化される代わりに複雑になります。
- AWS Lambda タイムアウト:Lambda 関数は、3 秒から 900 秒(15 分)まで設定できるタイムアウト値によって制限されます。Lambda は、タイムアウト値を超えて実行される関数を自動的に終了します。
最初の 2 点は、あらゆるアウトソーシング戦略の一般的な欠点です。ただし、後の 2 点は、新しい回避策を実装する必要があることを意味するかもしれません。それでも、AWS SAM でプログラミングすることの多くの利点は見逃せません。
AWS サーバーレスアプリケーションモデル(SAM)をよりよく理解するためには、実際にどのように使用されているかの例を見ることが役立ちます。
1. データ処理パイプライン
AWS SAM を使用して、データの取り込み、自動変換、保存を自動化します。典型的なパイプラインは、AmazonS3、AWS Lambda、AWS Glue、Amazon Kinesis、Amazon DynamoDB、または Amazon Redshift を使用します。S3 のバケットにファイルをアップロードすると、データの前処理のために Lambda 関数がトリガーされます。その後、リアルタイム分析のために Kinesis に送信されるか、Amazon DynamoDB のようなデータベースに保存されます。AWS Glue は、データを抽出、変換、およびロードしてアプリケーションに組み込みます。この種のパイプラインは、スケーラブルでフォールトトレラントであり、高データボリューム処理におけるコスト効率を提供します。
2. サーバーレス Web アプリケーション
サーバー管理の負担を取り除くサーバーレス Web アプリケーション。このアプローチは、Amazon API Gateway、AWS Lambda、Amazon S3、Amazon DynamoDB、Amazon Cognito による安全な認証などのサービスパッケージを使用することがあります。低遅延のグローバルアクセスのために、これらのサービスを Amazon CloudFront を通じてデプロイします。サーバーレス Web アプリケーションは、トラフィックに対応して自動的にスケールし、運用コストを削減するため、現代の Web アプリに最適です。
3. イベント駆動型マイクロサービス
イベントを通じて通信し、リアルタイムでアクションを起こすサービスを設計および統合するアプローチは、eコマースプラットフォーム、金融取引を管理するエンティティ、およびリアルタイム分析が必要な組織で使用されます。これには、Amazon EventBridge、AWS Lambda、Amazon SQS、DynamoDB などのサービスが利用されます。顧客が注文を行うといったイベントが発生し、それが Lambda にルーティングされるために EventBridge に公開されます。そのサービスは、注文を検証し、支払い処理を行い、在庫を更新することがあります。Amazon SQS のようなサービスは非同期処理を提供します。DynamoDB は、取引からのすべてのデータを保存します。このアプローチは、スケーラビリティを提供し、故障を隔離し、サービスを独立して開発できるようにします。
マイクロサービスアーキテクチャを構築するための 15 のベストプラクティスについてもっと学ぶ。
関連する読み物
AWS ガイド
- AWS サーバーレスアプリケーションをマスターするための初心者ガイド
- AWS ウェルアーキテクテッドフレームワーク:6つの柱とベストプラクティス
- AWS グローバルクラウドインフラストラクチャ:リージョン、ゾーン、その他
- Amazon VPC とは? Amazon Virtual Private Cloud の説明
- EFS とは? Amazon Elastic File System の説明
- AWS 管理ツール:利用可能なものと選び方
- AWS Organizations とは? 主な機能、利点、ベストプラクティス
- AWS スポットインスタンスの紹介
- AWS リザーブドインスタンスの紹介
- AWS Route 53 の紹介
- AWS Elastic Load Balancing とは?
- AWS ECS と AWS Lambda:違いと選び方
- AWS ECS と EKS:違いと選び方
- AWS EBS(Elastic Block Store)とは?
- AWS Snowball Edge:エッジコンピューティングによるデータ転送
- AWS クラウド設計パターン
- AWS クラウドデータベース:マルチクラウドにおける革新
- AWS Braket 量子コンピューティング:始め方
- AWS vs Azure vs GCP:ビッグ3クラウドプラットフォームの比較
これらの投稿は私自身の意見であり、必ずしも BMC の立場、戦略、または意見を代表するものではありません。