Serverless Frameworkの活用メリット
概要
この記事では、サーバーレスアーキテクチャを構築するためのフレームワークであるServerless Frameworkの活用メリットについて記述しています。
Serverless Framework を使うことで、サーバーレスアプリケーションの開発、デプロイ、運用を効率的に行うことができます。
対象読者:
- サーバーレスアーキテクチャに興味のある方
- Serverless Frameworkを使ってみたい方
- サーバーレスアプリケーションの開発効率を上げたい方
Serverless Frameworkとは
Serverless Frameworkは、サーバーレスアプリケーションの開発、デプロイ、運用を支援するオープンソースのフレームワークです。
一番のコアバリューは、クラウドリソースを構成込みでコード管理を可能にします。すなわち、Infrastructure as Code (IaC) を実装できます。
なお、以前は、AzureやGCPなどマルチクラウドサポートもしていましたが、現在はAWSに特化したサーバーレスアプリケーション構築向けになっているようです。
AWS CloudFormationとの比較
AWS CloudFormationもIaCによるインフラストラクチャ管理を可能にするサービスです。
違いは、Serverless Frameworkはサーバーレスアプリケーションの構築に特化した記述が用意されている点です。
例えば、Lambda関数に対して、実行するコードの指定や、API Gatewayの設定を簡潔に記述することができます。
CloudFormationは汎用性が高い分、(少しばかり)冗長的に記述する必要があります。
以下は、Serverless Frameworkを使ってAWS Lambda関数を定義するYAMLファイルのサンプルコードです。
service: my-serverless-app
provider:
name: aws
runtime: nodejs20.x
functions:
hello:
handler: handler.hello
events:
- http:
path: /hello
method: get
この YAML ファイルでは、my-serverless-app
というサービス名で、Node.js 20.x ランタイムを使用するLambda関数を定義しています。
hello関数は、HTTP GETリクエスト/hello
に対して、handler.hello
を実行します。
Serverless Frameworkの特徴
Serverless Frameworkを活用することで、以下のメリットがあります。
アプリケーション指向のシンプルな設定ファイル
YAMLファイルでアプリケーションの実行するコードを定義し、必要なリソースを設定するだけで、簡単にサーバーレスアプリケーションを構築できます。
AWSへの簡素なデプロイ
下記のコマンドを実行するだけで、アプリケーションをデプロイできます。
serverless deploy //省略記法のsls deployも同じ
実サービスで必要となるデプロイステージも、--stage
オプションで簡単に指定できます。
その他のオプションはこちら
プラグインによる拡張
豊富なプラグインが提供されており、Serverlessに組み込みたい機能を簡単に拡張することができます。
基本的には、serverless.ymlに使用したいプラグイン名と、必要に応じて設定情報を記述するだけでプラグインの機能が使えます。
使用頻度が高そうなプラグインとしては、例えば、以下があります。
- Serverless Offline:ローカル環境でサーバーレスをエミューレートするプラグイン
- Serverless Esbuild:Serverlessプロジェクトでバンドラーにesbuildを使うためのプラグイン
まとめ
Serverless Framework は、サーバーレスアプリケーションの開発、デプロイ、運用を効率化する強力なツールです。シンプルな設定、容易なデプロイ、豊富なプラグインなどのメリットがあります。
サーバーレスアーキテクチャを採用する際は、ぜひServerless Frameworkを検討してみてください。
Discussion