プログラミング

バックエンド

サーバーレス関数とは

メロンパン@プログラマー

メロンパン@プログラマー

#Oookey_blog_022

サーバーレス関数とは

こんにちは!
プログラマーのメロンパンです。
みなさんはサーバーレス関数というサービスをご存知でしょうか?
近年注目を集めているサービスで、自分も先日利用してとても便利だと感じました。
今回はそんなサーバーレス関数について紹介していきます。

目次

サーバーレス関数とは
メリット・デメリット
Google Cloud Functionsを使用した紹介
・設定項目
・実装方法
・環境変数
まとめ
参考

サーバーレス関数とは

サーバーレス関数とはサーバー管理を意識せず隠れた環境にてコードを実行することができるクラウドサービスのことです。
静的なWebサイトやSPAのバックエンドとして利用されることもあるようです。

サーバーレス関数を提供している主なサービス
・Google Cloud Functions
・AWS Lambda
・Microsoft Azure Functions

従来の開発ではサーバー管理やスケーリングなどのインフラ作業が必要でしたが、サーバーレス関数ではクラウドプロバイダーがインフラを管理してくれます。
サーバー知識があまりない方でも使いやすかったりロジック開発に集中できるといった良さがあります。
そんなサーバーレス関数のメリットやデメリットを確認していきましょう。

メリット・デメリット

メリット

- コスト効率の向上:
利用した量だけ料金が発生するため、無駄なコストが発生しません。

- 開発効率の向上:
サーバーの管理をサービスに任せるため、開発者はロジック作成に集中することができます。

- 自動スケーリング:
負荷に応じて自動でスケーリングするため、急激なトラフィック増加にも対応することができます。

デメリット

- べンダーロックイン
特定のクラウドベンダーに依存するため、ベンダーロックインが発生しやすくなります。
※特定のベンダーの製品やサービスに深く依存し、他社への乗り換えが困難になる状態

- コールドスタート:
サーバーレス関数は一定時間未使用状態が続くとシャットダウンし、次回起動時に時間がかかる可能性がございます。

- デバッグの難しさ:
デバッグやロギングが従来のサーバ環境より複雑化する場合があります。


便利なサービスである反面、いくつかのデメリットや注意点も存在するため、自分のプロジェクトに適しているか考えることが大切です。

次に自分が使用したGoogle Cloud Functionsを例として機能や実装方法を紹介していきます。

Google Cloud Functionsを使用した紹介

設定項目

Google Cloud Functionsでは関数の作成を行う際に下記のような画面でそれぞれ項目を設定して作成していきます。

サーバーレス関数:設定

こちらで設定する主な項目については以下の通りです。

項目名

設定内容

サービス名

作成するプロジェクト名

リージョン

選択された地域のサーバーにアクセスする

ランタイム

記述する言語

トリガー

イベントを非同期的に配信することができる

認証

認証チェックの実行を必要とするか

スケーリング

自動管理か手動で管理を選択できる

Ingress

アクセス手段の制限を設定できる

特にリージョンは自分の地域やtierによって使用時にかかるコストが変わるのできちんと設定しましょう。
スケーリングや使用言語については作成後でも編集可能です。

実装方法

関数作成後にソース欄にて実行するコードを記載します。
この際にこの関数のエントリポイントを記載しておくのを忘れないようにしましょう

サーバーレス関数:コード

画面中央にあるURLを使用して関数を実行します。

Copied!

copyBtn
//上記のテスト処理をJSで実行した際の例です。

async function testMessage() {
    try {
        const response = await fetch("URL", {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
            },
                body: JSON.stringify({ name: "Oookey" }),
        });
        const result = await response.json();
            console.log("Result:", result);
    } catch (error) {
        console.error("Error:", error);
    }
}

testMessage();

                

環境変数

Google Cloud Functionsには「環境変数」と呼ばれるものを設定することができます。
こちらはAPIキーなどの直接コード上に記載しないものをシークレット変数として設定する際に使用します。

サーバーレス関数:環境変数

呼び出す際は下記のように参照します。

Copied!

copyBtn
 //コード上での参照方法
const API_KEY = process.env.API_KEY;
                

まとめ

今回はGoogle Cloud Functionsを例にサーバーレス関数の概要と設定、実装例について紹介いたしました。
サーバーレス関数は他にも多数のサービスがあるため、使用用途に応じて最適なものを選んで使用してみてください。
今回はLaravelでCIを実行しましたが、Viteビルドや静的解析もCIで自動化すると快適な開発環境が整ってくるのではと思います。
最後まで閲覧いただきありがとうございました!