💭

Serverless Frameworkの活用メリット

2024/12/16に公開

概要

この記事では、サーバーレスアーキテクチャを構築するためのフレームワークであるServerless Frameworkの活用メリットについて記述しています。

Serverless Framework を使うことで、サーバーレスアプリケーションの開発、デプロイ、運用を効率的に行うことができます。


https://www.serverless.com/

対象読者:

  • サーバーレスアーキテクチャに興味のある方
  • 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