昨今、クラウドコンピューティングが普及し、サーバー運用の手間を大幅に省けるようになりました。なかでも注目されているのが、サーバーレスと呼ばれる新しいクラウドサービスです。
サーバーレスは、専用サーバーを用意する必要がないため、コストを大幅に削減できるメリットがあります。本記事では、サーバーレスの概念、種類、メリット・デメリットを解説します。
目次

サーバーレスとは、アプリケーションやサービスを実行する際に、物理的なサーバーリソースを準備したり管理したりする必要がないクラウドサービスのことです。
従来は、サーバー機器を用意し、運用・保守を行う必要がありました。しかしサーバーレスでは、クラウドベンダーが提供するコンピューティングリソースを必要な分だけ利用することができます。
サーバーの管理作業に費やすリソースを削減できるため、開発者はアプリケーション開発に集中できます。
サーバーレスとクラウドサーバー(仮想)の大きな違いは、サーバーのプロビジョニングの有無にあります。クラウドサーバー(仮想)では、サーバー自体を自分で管理する必要があります。一方、サーバーレスではサーバー自体を意識する必要はありません。
両者の違いをまとめると、下記の通りです。
| サーバーレス | クラウドサーバー(仮想) |
| サーバー管理が不要 | サーバー管理が必要 |
| 関数単位の課金 | インスタンス単位の課金 |
| 自動スケーリング | 手動スケーリングが基本 |
サーバーレスでは、実行する関数のコードを書くだけで済みます。そのため、サーバーの準備やメンテナンスの手間がかからないことが最大のメリットです。一方、クラウドサーバー(仮想)ではサーバー自体を管理する必要があり、手動でのスケーリングを行う必要があります。
サーバーレスは「サーバーが存在しない」わけではなく、クラウド事業者側で大量の物理サーバーや仮想サーバーを管理し、それを利用者に意識させない仕組みになっています。
コンテナ技術や仮想化技術によって、処理ごとに独立した実行環境を瞬時に作成し、必要なタイミングだけプログラムを動かします。アクセス増加時には自動でリソースを割り当て、不要になれば停止するため、利用者はサーバーの台数や性能を管理する必要がありません。
この自動制御により、高い拡張性と効率的なリソース利用を実現しています。
サーバーレス開発では、アプリケーションの実行に必要なリソース(CPU、メモリ、ストレージなど)をクラウドベンダーが自動的に割り当てます。そのため、サーバーのプロビジョニングやスケーリングなどのインフラ管理は不要になり、開発者は、コードの書き換えやデプロイに集中できます。
具体的なサーバーレス開発の流れは、以下の通りです。
開発者がアプリケーションコードを書く
そのコードをクラウドベンダーの環境にデプロイする
イベント(HTTPリクエスト、データベースの更新、クラウドストレージへのファイルアップロードなど)が発生すると、コードが実行される
コードの実行に必要なリソースをクラウドプロバイダーが自動的に割り当てる
コードが実行され、必要な処理が行われる
処理が終了するとリソースが自動的に解放される
サーバーレス開発については、下記の記事で詳しく解説しています。
ここからは、サーバーレスの種類についてご紹介します。
サーバーレスの種類は、下記の通りです。
FaaS
BaaS
FaaSとは、Function as a Serviceの略で、クラウド上でサーバーレスでアプリケーション開発ができるサービスのことです。
FaaSには主に下記2つの特徴があります。
| 機能 | 説明 |
| イベントドリブン方式 |
イベント(HTTPリクエスト、データベース更新、 クラウドストレージの更新など)と連携させることで イベントをトリガーに処理が実行される イベントが発生しないと処理は実行されないため、 サーバーを常に起動しておく必要がない |
| オートスケーリング |
サービスの負荷に応じて、自動的にサーバーリソースを 拡張・縮小する ユーザーは手動でスケーリングする必要がなく、 常に適切なリソースを確保できる |
FaaSは、イベントドリブンでサーバーレスに処理を実行でき、オートスケーリング機能によりリソース管理の手間も省けるため、開発者はアプリケーションのロジックに集中できるメリットがあります。
FaaSに類似するサービスとして、以下が挙げられます。
IaaS… 仮想サーバー提供
CaaS… コンテナ管理
PaaS… アプリ実行環境提供
FaaSは、上記サービスよりさらに運用負荷を減らした形態として一般的に利用されています。
BaaSとは、Backend as a Serviceの略で、アプリケーション開発者がフロントエンド側の開発に専念できるよう、バックエンド機能をクラウドサービスとして提供するモデルのことです。
BaaSではユーザー認証、プッシュ通知、クラウドストレージ、データベース管理などの一般的なバックエンド機能が用意されています。開発者は、APIを呼び出すことで、バックエンド側の実装を気にすることなく、フロントエンド開発に集中できます。
つまり、BaaSを利用することで、バックエンド基盤の構築やサーバー運用の手間を大幅に省くことができ、スピーディな開発が可能になります。

サーバーレスの代表的なサービスは以下の通りです。
| サービス名 | 提供企業 | 課金体系 | 特徴 |
| AWS Lambda | Amazon Web Services | 実行回数+実行時間に応じた従量課金 | AWSサービスとの連携が豊富で、導入事例が多い |
| Azure Functions | Microsoft Azure | 実行回数・実行時間ベースの従量課金 | Microsoft製品との親和性が高い |
| Google Cloud Functions | Google Cloud | 呼び出し回数・実行時間・リソース使用量に応じた課金 | FirebaseやBigQueryとの連携に強み |
| Alibaba Cloud Function Compute | Alibaba Cloud | 実行回数・実行時間・メモリ使用量による従量課金 | 中国・アジア市場向けサービスとの相性が高い |
それぞれのサービスについて、詳しく紹介します。
AWS Lambdaは、AWS(Amazon Web Services)が提供するサーバーレスコンピューティングプラットフォームです。
ユーザーがアップロードしたコードを実行するためのサービスで、さまざまなイベントトリガー(HTTPリクエスト、データベースの変更、ファイルのアップロードなど)に応答して、コードを実行します。
コードは、イベントドリブン方式で実行されるため、リクエストがない時は実行されず、課金もされません。リクエストに応じて自動的にスケーリングするため、大量のリクエストにも対応できます。
AWS Lambdaについては、下記の記事で詳しく解説しています。
Azure Functionsは、Microsoft Azureのサーバーレスコンピューティングサービスです。
イベントベースのコード実行を可能にしており、HTTPトリガーやタイマーによるトリガー、AzureStorageやCosmos DBの変更など、さまざまなトリガーに対応しています。
Azure Functionsは、小さな関数としてコードを実行するため、サーバーのプロビジョニングや維持管理が不要です。イベントドリブンの実行モデルにより、必要なリソースのみが消費され、使用した分のコストのみが課金されます。自動的にスケーリングされるため、トラフィックの増減に合わせて柔軟にリソースを調整できます。
Azure Functionsについては、下記の記事で詳しく解説しています。
Google Cloud Functionsは、Google Cloud Platform(GCP)のサーバーレスコンピューティングサービスで、イベント駆動型のコード実行環境を提供しています。
HTTPリクエスト、Cloud Pub/Subメッセージ、Cloud Storageのオブジェクトの変更などのイベントをトリガーとして関数を実行できます。
サーバーの構築や管理が不要で、コードを書くだけで必要な時だけリソースを使えるため、コスト削減やスケーラビリティの向上が期待できるサービスです。
Google Cloud Functionsについては、下記の記事で詳しく解説しています。
Alibaba Cloud Function Computeは、Alibaba Cloudが提供するサーバーレスサービスです。コードをアップロードするだけで実行環境を利用でき、自動スケーリングやリソース管理もクラウド側で行われます。
中国市場向けサービスとの親和性が高く、ECサイトや大規模アクセスを伴うシステムで利用されるケースが多い点が特徴です。
グローバル展開にも対応しており、アジア圏を中心に導入が進んでいます。
ここからは、サーバーレスのメリットをご紹介します。
サーバーレスのメリットは、下記の通りです。
サーバー運用をしなくていい
コストを削減できる
スケーラビリティが高い
サーバーレスのメリット・デメリットについては、下記の記事で詳しく解説しています。
サーバーレスでは、従来のオンプレミスやクラウドの仮想サーバーと異なり、サーバー自体の運用や保守作業が不要になります。
具体的には、サーバーの稼働状況の監視、障害発生時の対応、OSやミドルウェアのアップデート、セキュリティパッチの適用などの作業が必要ありません。
運用業務は、クラウドベンダー(AWS、Microsoft Azure、Google Cloud Platformなど)が一括して担当してくれます。サーバーレスサービスを利用すれば、開発者はアプリケーションロジックの実装に専念でき、サーバーの運用に関するさまざまな手間を削減できます。
サーバーレスは、実際に利用したリソースに応じた課金体系になっています。
具体的には、関数の実行時間や実行回数、利用したメモリ量などに基づいて料金が発生します。つまり、アプリケーションが利用されていない時にはコストがかからず、利用が増えれば課金額も増えるという従量課金制です。
このように、サーバーレスは必要なリソースを必要な分だけ動的に確保できるため、無駄なリソースを常時確保しておく必要がありません。特に、バースト的なトラフィックの増加時にもスケーリングが自動で行われるため、過剰なリソース確保を抑えられます。
サーバーレスのメリットの1つが、高いスケーラビリティです。
従来のサーバーを利用する場合、需要の変動に合わせてリソースを手動で調整する必要がありました。しかし、サーバーレス環境では、下記のようにリソースが自動的に調整されます。
| 需要の変化 | サーバーレス環境での対応 |
| 需要の増加 | リソースが自動的に拡張される |
| 需要の減少 | リソースが自動的に縮小される |
つまり、手動での調整作業が不要になり、常に需要に見合ったリソースが確保されます。 自動スケーリング機能によって、短期的な需要の変動にも適切に対応できます。
ここからは、サーバーレスのデメリットをご紹介します。
サーバーレスのデメリットは、下記の通りです。
ベンダーロックインのリスクがある
初回の起動に時間がかかる
使える言語に制限がある
サーバーレスでは、特定のクラウドプロバイダーが提供するサービスやプラットフォームに依存する、ベンダーロックインのリスクが生じる可能性があります。
ベンダーロックインとは、特定のクラウドベンダー製品やサービスに依存し、他のベンダーに移行することが困難になる状態を指します。
サーバーレス環境では、各クラウドプロバイダーが独自の仕様やAPI、サービスを提供しているため、プロバイダー間での互換性が低くなりがちです。一度特定のプロバイダーのサービスを利用し始めると、そのプロバイダーに依存する度合いが高くなり、他のプロバイダーに移行するコストが高くなってしまいます。
リスクを回避するには、できるだけベンダー非依存の設計にすることが重要です。
サーバーレス環境では、関数が初めて呼び出される際に、実行環境を新たに起動する必要があります。初回の起動にかかる時間をコールドスタートと呼び、関数の初回実行が遅延する可能性があります。
サーバーレス環境では、リソース(メモリやCPUなど)が割り当てられていないため、関数を実行するための環境を新たに作らなければいけません。
コールドスタートの実行時間は、使用するサーバーレスサービスや関数の実装、割り当てられるリソースサイズなどによって変わりますが、数百ミリ秒から数秒程度かかる場合があります。リアルタイム性が求められるWebアプリケーションでは、数秒の遅延でユーザーエクスペリエンスが損なわれる恐れがあるでしょう。代表的な対策としては、関数の起動を頻繁にトリガーしてウォームスタートの状態を維持する方法などがあります。
サーバーレス環境では、使用できるプログラミング言語に制限があります。サービスごとに対応言語が異なるため、導入時に確認する必要があります。
| サービス | 対応言語 |
| AWS Lambda | Node.js、Python、Ruby、Java、Go、C#、PowerShell、Node.js、Ruby |
| Azure Functions | C#、F#、Node.js、Java、JavaScript、Python、PowerShell、TypeScript |
| Google Cloud Functions | Node.js、Python、Go、Java、Ruby、PHP、.NET |
| Alibaba Cloud Function Compute | Python、Node.js、Java、PHP、Go、Custom Runtime など |
サービスごとにサポートされている言語が異なるため、開発する際は事前に対応言語の確認が必要です。
サーバーレスは運用負荷を軽減できる便利な仕組みですが、すべてのシステムに適しているわけではありません。処理内容やアクセス特性によっては、従来型のサーバー構成の方が適している場合もあります。
ここでは、サーバーレスの向き・不向きについて具体的なケースで紹介します。
サーバーレスが向いているケースは、以下の3つです。
新規サービス
サーバー構築が不要なため、短期間で開発を始められることから新規サービスの立ち上げや小規模開発に適しています。
単純な処理を行うシステム
画像変換や通知送信など単純な処理を行うシステムとも相性が良く、必要な時だけ実行できるため効率的に運用できます。
コストの抑制が求められるシステム
アクセス量に応じた従量課金制が多いため、利用が少ない期間のコストを抑えやすく、運用費削減を重視するシステムにも向いています。
一方で、以下のようなケースではサーバーレスは不向きと言えます。
処理に長時間を要するシステム
動画解析や大規模データ処理など長時間の実行を必要とするシステムには不向きです。サービスによっては実行時間に制限があるため、処理が途中で停止する可能性があります。
常に高速な応答が求められるシステム
初回実行時に発生する「コールドスタート」により遅延が生じる場合があるため、リアルタイム性が重視される金融システムや高頻度アクセス環境では慎重な検討が必要です。
サーバーレスの向き不向きについては、下記の記事で詳しく解説しています。
サーバーレスを導入するうえで押さえておきたいポイントは、下記の通りです。
サービスごとの制約を確認する
セキュリティ対策を徹底する
サーバーレスサービスを利用する際は、各サービスの制約を事前に確認する必要があります。
代表的な制約事項は、下記の通りです。
| 制約事項 | 内容 |
| 実行時間 | 1リクエストあたりの最大実行時間が決められている |
| メモリ | 割り当てられるメモリの最大値が決められている |
| 言語 | サポートされる言語が限定されている |
| 外部リソース | 外部リソースへのアクセス制限がある場合がある |
導入する際は、システム要件に合わせて適切なサービスを選定することが重要です。サービスの利用に先立ち、公式ドキュメントで制約を必ず確認しましょう。
サーバーレスでは、サーバーの管理が不要になる代わりに、インターネット経由でクラウドサービスに接続するため、新たなセキュリティリスクが考えられます。
主なリスクとしては、以下が挙げられます。
マルウェア感染
脆弱性を狙ったサイバー攻撃のリスク
このようなリスクに対処するため、以下の対策を徹底することが重要です。
| 対策 | 内容 |
| 安全なネットワーク環境の整備 | VPNやプライベートネットワークなどを活用し、安全性の高いネットワーク接続を確保する |
| セキュリティソフトの導入 | ウイルス対策ソフトやファイアウォールなどのセキュリティソフトを導入し、マルウェアの侵入や不正アクセスを防ぐ |
| 脆弱性情報の確認とパッチ適用 | クラウドベンダーや関連ソフトウェアの脆弱性情報を定期的にチェックし、セキュリティパッチを適用して最新の状態を維持する |
サーバーレスでは、従来のサーバー管理とは異なるセキュリティ対策が必要となります。上記の対策を徹底することで、クラウド環境におけるセキュリティリスクを最小限に抑えられます。

引用元:システム開発のIC
株式会社ICは、40年以上の実績を持つITソリューション企業です。サーバーレスの導入には、クラウドサービスの選定や開発環境の構築、セキュリティ対策など、さまざまな課題があります。
ICは、ITソリューション事業で培ってきた技術力とコンサルティングによる分析・提案をもとに、お客様のニーズに合わせたサーバーレスソリューションをワンストップで提供します。
サーバーレスの導入を検討中の企業様は、ぜひICにご相談ください。
本記事では、サーバーレスの概念、種類、メリット・デメリットを解説しました。
サーバーレスは、アプリケーションやサービスを実行する際に、物理的なサーバーリソースを準備したり管理したりする必要がないクラウドサービスのことです。
サーバーレスのメリットは、サーバー運用が不要なため手間が省け、実行時のみコストがかかるため費用を抑えられ、自動的にスケーリングされるため拡張性が高いことです。一方、デメリットとしては、ベンダーロックインのリスク、初回実行時に立ち上がりに時間がかかる、使用できる言語に制限があることなどが挙げられます。
サーバーレスを導入する際は、各サービスの制約を確認し、セキュリティ対策を徹底する必要があります。
サーバーレスの導入を検討されている場合は、システム開発のICにご相談ください。
Power Platformとは?何ができる?導入のメリットを解説
『音から見える世界。』特許取得の先端技術を初展示 ~ NexTech Week 2024 【春】出展レポート