サーバーレスのトレンドはここ数年で人気が高まっている。最近実施されたIBMの調査では、サーバーレスの導入が進んでおり、未導入企業の68%が今後2年以内にサーバーレスのアプローチを採用する可能性が高いと回答している。
開発者にとって、サーバーレスコンピューティングは大きな恩恵だ。基盤となるインフラを気にすることなく、コードを記述してデプロイできる。 さらに、料金が実行量に基づいて決まるため、企業は事前購入したコンピューティング容量やストレージに費用をかける必要がなく、コードを わずかなコストで開発できる。
サーバーレスコンピューティングの仕組み
サーバーの管理は複雑なプロセスであり、多くの手作業を伴うことが多い。 サーバーをセットアップしてアプリケーションにデプロイするのは、最初の一歩にすぎない。監視や定期的なメンテナンス、設定、サーバーとアプリケーションの最新状態の維持、需要に応じたスケーリングなども行う必要がある。
これに対してサーバーレスでは、こうした責任をすべて手放せる。すべてが抽象化されるため、開発者は基盤となるインフラの管理を気にすることなく、ビジネス要件に集中できる。
開発者は、一般的にはPythonやNode.jsなど、選択したプログラミング言語を使い、サードパーティーのリソースでアプリケーションをホスティングする。そのため、アプリのホスティングが迅速かつ効率的になる。
しかし開発者の視点では、サーバーが存在しないかのように見える。これが「サーバーレス」という名称の由来だ。実際にはサーバーがバックエンドサービスを提供しているが、ベンダーがすべてを処理するため、サーバーは背景に隠れている。
関連記事:クラウドオートメーションについて知っておくべきこと:ツール、メリット、ユースケース
サーバーレスコンピューティングの特徴
サーバーレスコンピューティングの主な特徴は次のとおりだ。
- サーバーと、その保守の複雑さを抽象化する。
- 使用したリソースに対してのみ課金する従量課金モデルを提供し、アイドル状態のリソースや未使用領域のコストを排除する。
- 需要の変化に応じて、迅速かつ自動的にスケールアップ・ダウンする。
- サーバーレスはイベント駆動型で、 特定のイベントがトリガーしたときにのみ実行され、 タスクを実行した後、数分で終了する。
- インフラの保守に時間を費やすのではなく、コードの構築に集中できる。
サーバーレスコンピューティングのメリット
サーバーレスコンピューティングには、次のようなメリットがある。
- 市場投入までの時間を短縮:サーバーレスなら、バックエンドインフラのセットアップを気にする必要がない。すべてがパッケージの一部として提供されるため、開発環境を容易に構築でき、市場投入までの時間を短縮できる。
- サーバー管理が不要:サーバーレスコンピューティングはサーバー上で稼働するが、サーバーを管理するのはクラウドサービスプロバイダー(CSP)だ。そのため開発者はサーバー管理を気にする必要がなく、コードを実行するだけでよい。
- 低コスト:従来のシステムでは、通常、ダウンタイムを避けるために余裕を持った容量のサーバーを購入する。しかしサーバーレスでは、使用したリソースと稼働時間に対してのみ料金を支払う。さらに実行量に基づくため、コードが実行されている時間分だけ課金される。その結果、使用していない場合でもアプリケーション料金を支払う他のサービスと比べ、サーバーレスコンピューティングは低コストになる。
- 高いスケーラビリティ:サーバーレスの最大のメリットの1つは、利用者側の介入なしに、需要に合わせて自動かつ容易にスケールできることだ。
サーバーレスコンピューティングのデメリット
サーバーレスコンピューティングは特定のユースケースには適しているが、いくつかのデメリットもある。
- ベンダーロックイン:サーバーレスプラットフォームの大半はクラウドベンダーが提供しているため、企業は必然的に主要CSPのいずれかに囲い込まれる。 ベンダーに依存しない方針であれば、サーバーレスはおそらく適切な選択肢ではない。
- 実行時間が限られる:サーバーレスのデメリットの1つは、実行時間が限られていることだ。そのため、長時間実行するワークロードのデプロイには適していない。例えばAWS Lambdaの関数は1回の実行につき最大15分までで、その後は終了する。ただし、長時間実行する関数がある場合は、 他のデプロイ方法の方が適している可能性がある。
- デバッグが難しい:サーバーレスでは分散ネットワーク上で処理が行われるため、アプリケーションのデバッグは難しい。さらにサーバーは一時的な性質を持つため、問題の根本原因を特定する時間が非常に限られる。ログは役立つものの、正確なデバッグには高度なツール手法が必要になる。
- レイテンシーが高い:通常、サーバーレス関数が長時間アイドル状態になると、ベンダーはその関数を停止する。そのため次に関数を呼び出した際、レイテンシーが増大するコールドスタートが発生する。コールドスタートは、特に時間制約のあるアプリを実行する場合に大きな問題となり得る。
関連記事:クラウドモダナイゼーション戦略の策定:vFunctionのMoti Rafalin氏へのインタビュー
サーバーレスプラットフォーム
代表的なサーバーレスプラットフォームには、AWS Lambda、Azure Functions、Google Cloud Functions、IBM OpenWhiskがある。ここではそれぞれを詳しく見ていく。
AWS Lambda
サーバーレスコンピューティングを代表するサービスの1つであるAWS Lambdaは2014年に開始され、サーバーレスという概念を普及させたサービスとして知られている。他のAWSサービスとシームレスに統合できるため、すでに他のAWS製品を利用しているユーザーにとって第一の選択肢となる。
特徴:
- Node.js、Python、Ruby、Java、Go、.Net Core、PowerShell、C#などの言語をネイティブにサポートする。さらに、独自の言語ランタイムを実装することもできる。
- 無料利用枠には、月間100万回の実行が含まれる。
- 最大実行時間は15分。
- 関数は同期、非同期、またはポーリングベースの呼び出しモデルで呼び出せる。
- Netflix、Asana、ZALORA、Nordstrom、Coca Colaなどが利用している。
Azure Functions
Azure FunctionsはMicrosoft Azure向けのオンデマンド型サーバーレスコンピューティングサービスで、開発者はイベントをトリガーとしてコードを実行できる。
特徴:
- Azure Functionsには、ニーズに合わせて選べる3つのホスティングプランがある。無料利用枠には月間100万回の実行が含まれ、その後は要件に応じた段階的な料金体系が適用される。
- JavaScript、C#、PowerShell、F#、JAVA、Python、TypeScriptをサポートする。
- 最大実行時間は10分。
Google Cloud Functions
Google Cloud FunctionsはGoogle Cloud Platformの一部として2016年にリリースされた。GCFはGoogleの他のサービスとよく統合されるため、すでにGoogle製品を利用しているユーザーに適している。
特徴:
- 最初の200万リクエストは無料で処理できる。
- Azure FunctionsやLambdaと比べて低コストだ。
- GCFは、Cloud Pub/Subトリガー、HTTP、Cloud FireStore、Firebase Realtime Database、Firebase Authenticationなど、複数のイベントベースのトリガーをサポートする。
IBM Cloud Functions
Apache OpenWhiskをベースとするIBM Cloud Functionsは、オンデマンドでコードを実行できるオープンソースのサーバーレスプラットフォームだ。
特徴:
- PHP、Swift、Node.jsランタイム、Java、Pythonをサポートする。ただし、Dockerコンテナを使って他のプログラミング言語を統合することもできる。
- 実行時間の上限は10分。
- リージョンごとに99.95%のSLA(サービスレベル合意)を提供する。
- IBM Cloud FunctionsはIBM Monitoring Serviceと統合されており、より優れた可視性を提供する。
- The Weather Channel、ESPN Fantasy Football、The Mastersなどが利用している。
サーバーレスの未来
世界のサーバーレス市場は年平均成長率30%で成長し、2026年までに160億米ドルに達すると予想されており、サーバーレスは今後も持続的で実用的なコンピューティングの選択肢であり続けるだろう。サーバーレスコンピューティングは コードを実行したい顧客にとってコスト効率の高い選択肢であり、 容量計画やリソースのプロビジョニングという追加負担を伴わない。
さらにイベント駆動型のアプローチは、運用コストを抑えながら市場投入までの時間を短縮したい企業にとって、ゲームチェンジャーとなる可能性がある。ただし、すべてのシナリオに適しているとは限らないため、企業はサーバーレスに飛びつく前に、その落とし穴を慎重に見極める必要がある。