ソリューションアーキテクチャーデザイン連載(8/13):サーバレスアーキテクチャーとは何ですか?
本記事は2023.06.09に投稿したクリエーションライン Tech blogからの転載です。
サーバレスアーキテクチャーは、サーバーを管理する必要がないアーキテクチャーです。このアーキテクチャーでは、アプリケーションの実行に必要なサーバーのインスタンスを開始、停止する必要がなく、インフラストラクチャーの管理が簡単になります。
具体的には、サーバレスアーキテクチャーでは、クラウドプロバイダーが提供する関数やコンテナを利用して、アプリケーションの処理を実行します。この場合、アプリケーションの処理は、必要なタイミングで実行されます。つまり、リクエストが発生した場合や、イベントが発生した場合にのみ、関数やコンテナが起動されます。そのため、アプリケーションの処理が必要ない場合は、関数やコンテナが実行されず、コストを抑えることができます。
サーバレスアーキテクチャーのメリットは、次の通りです。
〇コスト削減
サーバーリソースの課金が実際に利用された分だけになるため、アイドル状態のリソースに対するコストが削減されます。また、サーバーやインフラストラクチャの管理やメンテナンスに関するコストも低減されます。
〇自動スケーリング
サーバレスプロバイダーがリソースのスケーリングを自動で行ってくれるため、開発者はアプリケーションのスケーリングに対する手間をかける必要がありません。
〇高い柔軟性
サーバレスアーキテクチャーでは、機能を小さな単位で独立してデプロイできるため、新しい機能の追加や既存機能の修正が容易になります。
〇短いリードタイム
サーバー管理やインフラ構築の手間が削減されるため、開発者はアプリケーションの開発に集中できます。これにより、プロジェクトのリードタイムが短縮されることが期待されます。
〇イベントドリブンな設計
サーバレスアーキテクチャーでは、イベントに基づいて関数が実行されるため、リアルタイムの処理や非同期処理が容易に実現できます。
〇セキュリティ
サーバレスプロバイダーがインフラストラクチャのセキュリティを管理してくれるため、開発者はアプリケーションレベルのセキュリティに集中できます
サーバレスアーキテクチャーは、クラウドコンピューティングの進化により、注目を集めています。AWS Lambda、Azure Functions、Google Cloud Functionsなどのクラウドプロバイダーが提供するサーバレスサービスを利用することで、アプリケーションの開発や運用がより簡単になります。
サーバレスアーキテクチャーのデメリットは、次の通りです。
〇コールドスタート
サーバレス環境で初回起動時やアイドル状態からの関数呼び出しには、通常よりも遅延が発生することがあります。これは、リソースが割り当てられるまでの待機時間が発生するためです。
〇パフォーマンス
サーバレスアーキテクチャーは、従来のサーバーベースのアーキテクチャーに比べて、パフォーマンスが劣る場合があります。特に、高いI/O要求があるアプリケーションでは、パフォーマンスへの影響が大きいことがあります。
〇ベンダーロックイン
サーバレスプロバイダーが提供する独自のAPIやサービスを利用することで、特定のプロバイダーへの依存が高まり、移行が困難になることがあります。
〇デバッグとモニタリング
サーバレス環境では、デバッグやモニタリングが従来のサーバーベースの環境に比べて複雑になることがあります。これは、分散されたコンポーネントや短い実行期間が関与するためです。
〇タイムアウト制限
サーバレスプロバイダーは、関数の実行時間に制限を設けていることが一般的です。この制限を超えると、関数が強制終了されるため、長時間実行が必要な処理には適していません。
〇コスト予測の難しさ
サーバレス環境では、実際に利用されたリソースに応じて課金されるため、コスト予測が困難になることがあります。
これらのデメリットを考慮しながら、システムの要件や目的に応じて適切なアーキテクチャースタイルを選択することが重要です。 類似した概念でフルマネージドサービスがあります。フルマネージドサービスとサーバーレスアーキテクチャーは、クラウドプロバイダーによって提供され、ユーザーがインフラストラクチャーをプロビジョニングする必要がない点で共通しています。
しかし、フルマネージドサービスは主にミドルウェアの提供に焦点を当てており、アプリケーションの実行に必要なインフラストラクチャーは、ユーザーが別途用意する必要があります。一方、サーバーレスアーキテクチャーは、アプリケーションの実行に必要なサーバーの管理、起動、停止などが不要です。
AUTHOR
モダンアーキテクチャー基盤のソリューションアーキテクトとして活動しています。
[著書]
・Amazon Cloudテクニカルガイド―EC2/S3からVPCまで徹底解析
・Amazon Elastic MapReduceテクニカルガイド ―クラウド型Hadoopで実現する大規模分散処理
・Cypherクエリー言語の事例で学ぶグラフデータベースNeo4j
・Neo4jを使うグラフ型データベース入門(共著)
・RDB技術者のためのNoSQLガイド(共著)
この記事が気に入ったらサポートをしてみませんか?