サーバーレスとは?サーバーを管理せずにコードを実行する
サーバーレスとは、サーバーをプロビジョニングしたり管理したりせずにコードを実行することを意味します。クラウドがオンデマンドでコンピュートをプロビジョニングし、自動的にスケールし、実際に使用した分だけ課金します。
サーバーレスにもサーバーは存在します。ただ、それを決して管理しないだけです。プロバイダーがキャパシティ、スケーリング、パッチ適用、可用性を扱い、あなたは自分のコードやコンテナだけに集中します。その特徴を定義づけるのは、自動スケーリング(多くの場合ゼロまで)と、きめ細かい使用量ベースの課金です。ファンクションとサーバーレスコンテナが一般的な形態です。
何がサーバーレスたらしめるのか
- 手動でプロビジョニング、パッチ適用、スケールするサーバーが不要。
- 需要に応じた自動スケーリング、多くの場合ゼロまで縮小。
- アイドル状態のキャパシティではなく、実行時間やリクエストに対してのみ支払う。
- イベント駆動またはリクエスト駆動の呼び出し。
ファンクション対サーバーレスコンテナ
ファンクションプラットフォーム(Lambda、Cloud Functions、Azure Functions)は小さなハンドラーを実行します。サーバーレスコンテナプラットフォーム(Cloud Run、Fargate、Container Apps)は、任意のコンテナイメージをサーバーレスに実行します。コンテナはより高い柔軟性を提供し、ファンクションは小さなイベントハンドラーに最もシンプルです。
コールドスタート
サーバーレスのワークロードがゼロからスケールするとき、環境が初期化される間、最初のリクエストはコールドスタートのコストを負担します。これがレイテンシに関する主なトレードオフです。最小インスタンス設定や軽量なランタイムは、レイテンシに敏感なパスでこれを軽減します。
サーバーレスが輝くとき
サーバーレスは、アイドル状態のサーバーへの支払いが無駄になる、急激で予測不能、またはイベント駆動のワークロードに適しています。安定した高スループットのトラフィックには、常時稼働のコンピュートの方が安価になることもあるため、このモデルは常により優れているというより、ワークロードへの適合性を判断するものです。
CI/CDでの役割
サーバーレスのデプロイは通常、単なるコードやイメージの更新です。パイプラインはファンクションやイメージをパッケージ化し、それをプッシュし、OIDCやフェデレーションで認証してクラウドのCLI経由でサービスを更新します。管理すべきフリートがないため、デプロイはシンプルで、トラフィックを以前のバージョンに向けることでロールバックします。
重要なポイント
- サーバーレスは、プロバイダーが管理するコンピュート上でコードを実行し、使用量に応じてスケールし課金します。
- ファンクションまたはサーバーレスコンテナの形で提供され、コールドスタートがトレードオフとなります。
- デプロイは単純なコードやイメージの更新であり、管理すべきフリートがありません。