サーバーレスアーキテクチャとは?
サーバーレスアーキテクチャは、基盤となるインフラストラクチャを管理せずに開発者がアプリケーションを実行できるソフトウェア開発手法です。サーバーレスコンピューティングモデルでは、すべてのインフラストラクチャのセットアップ、メンテナンス、スケーリングをクラウドプロバイダーが扱います。これにより、OSと言語ランタイム、データベース、キューサービスをインストールする必要がなく、開発者が時間を有効活用できます。したがって、開発者はビジネスロジックの記述と展開に専念できるので、高品質なアプリケーションを短期間で構築できます。
サーバーレスはイベントに基づいて動作するので、HTTPリクエスト、データベースの変更、ファイルのアップロードといったソースからのイベントによって各種の関数がトリガーされます。この手法は、拡張が容易なことから俊敏性と柔軟性を必要とするアプリケーションに最適です。システムに追加した新しいサービスは、すでにシステムに流れているイベントをリッスンして応答します。
AWS Lambdaのようなプラットフォームは、サーバー管理を抽象化し、実行ごとの支払いモデルを実現しています。アイドル状態にあると考えられるサーバーについては課金されず、使用した分のみが課金されます。アイドル状態のインフラストラクチャは価値を生み出さず、運用上のオーバーヘッドになりますが、サーバーレスでは、クラウドプロバイダー側の責任になります。サーバーレスコンピューティングでは、関数の開始と停止に要する時間はほんの一瞬です。これにより、予測不可能なワークロードに対して、仮想マシン (VM) やコンテナの場合よりも関数が適切に機能できます。VMやコンテナではスケーリングに数分を要することがあり、長時間のオーバープロビジョニングまたはアンダープロビジョニングにつながります。
CNAPPの完全ガイド
クラウドストライクの『CNAPPの完全ガイド』をダウンロードして、クラウドネイティブアプリケーション保護プラットフォームが最新のクラウドセキュリティ戦略の重要な要素である理由、そしてそれらを開発ライフサイクルに統合する最適な方法をご確認ください。
今すぐダウンロード長年にわたり、クラウドアーキテクチャはVMからサーバーレステクノロジーへと大きく進化してきました。当初、VMは、1つの物理マシン上で複数のオペレーティングシステム (OS) の実行を実現していたことから、標準的な手法でした。VMはハードウェアを抽象化するための第一歩であり、クラウドへの移行に各企業が着手した主な理由の1つでした。
しかし、VMが装備満載であり続けたことから、この手法は最適ではありませんでした。VMはそれぞれ独自のOS、ライブラリー、ツールで構成した万全のソフトウェアスタックを必要として、スケーリングに長時間を要しました。このような短所がコンテナ化の開発につながりました。コンテナでは、単一のOSインストールで複数のアプリケーションを開発者が実行できます。しかし、それでもこの作業は労働集約的なプロセスであり、コンテナクラスターとその基盤となるインフラストラクチャの管理はアプリケーション開発者の担当でした。
サーバーレステクノロジーは、クラウドに残された短所に対する最新の解決策です。アプリケーション開発者はインフラストラクチャのメンテナンス作業から解放され、新しい機能の構築に専念できます。また、サーバーレスアーキテクチャは、最新のマイクロサービスアーキテクチャとの相性が良く、正しく使用すれば、人件費とインフラストラクチャ経費を節減できます。
サーバーレスはマイクロサービスと同じ?
サーバーレスとマイクロサービスは、クラウドコンピューティングとソフトウェアアーキテクチャに向けた2種類のアプローチです。
これらの相違点の概要を次の表に示します。
| サーバーレス | マイクロサービス | |
|---|---|---|
| 目標 | インフラストラクチャ管理の必要を最小限に抑える | 大規模なコードベースの管理を簡単にする |
| コンピューティングモデル | ステートレス、エフェメラル関数 | VM、コンテナ、または関数に基づく自己完結型のサービス |
サーバーレスアーキテクチャは、サーバー管理とスケーラビリティの抽象化を目的としています。一方、マイクロサービスアーキテクチャは、大規模なコードベースをより小さく、より管理しやすい部分に分割することに重点を置いています。サーバーレスでは、イベントに応答して実行するステートレスなエフェメラル関数を記述して展開します。これに対し、マイクロサービスでは、自身の状態とストレージを管理する、すべてを備えた自己完結型サービスを展開して管理できます。
サーバーレスとマイクロサービスにはそれぞれ独自の利点があり、並行して使用できます。例えば、マイクロサービスアーキテクチャを使用してシステムを構築する場合、一般的には、そのアーキテクチャに後でサーバーレスサービスを追加するほうが簡単です。それをモノリシックなアーキテクチャに追加する作業は難度が高くなります。
サーバーレステクノロジーを展開してマイクロサービスを構築することは開発段階で可能なので、サーバーレスインフラストラクチャプロバイダーはこの方法を推奨しています。開発者は、サーバーレステクノロジーを使用して、さまざまなパターンに従う、モノリスのようなソフトウェアを作成することもできます。同様に、コンテナやVMなどの非サーバーレステクノロジーを使用してマイクロサービスを構築できます。実際、最初のサーバーレスプラットフォームが公開された時点よりもはるか以前からマイクロサービスが存在しています。
FaaSとPaaSの違いとは?
サービスとしての関数 (FaaS) が登場する前は、PaaS(サービスとしてのプラットフォーム)がクラウドコンピューティングに向けた一般的なアプローチでしたが、今後もそうあり続けると考えられます。PaaSプロバイダーは、開発者がVMやコンテナ上でアプリケーションを構築、展開、管理できる包括的なサービスを提供しながら、普通はこれらのテクノロジーに伴う作業の多くを不要にしてきました。
では、FaaSはPaaSとどう違うのでしょうか?
その相違点の概要を次の表に示します。
| PaaS | FaaS | |
|---|---|---|
| 目標 | クラウド環境におけるアプリケーション開発のあらゆる面で開発者を支援する | クラウドにおけるコンピューティングインフラストラクチャを効率化する |
| コンピューティングモデル | VM、コンテナ、関数 | ステートレス、エフェメラル関数 |
| 抽象化レベル | 高:完全なソリューション | 低:基本的な構成要素 |
PaaSはアプリケーションの開発と管理のためのすべてを備えたソリューションであり、開発者はPaaSを使用して展開を最初から最後まで管理できます。PaaSの機能として、クラウドベースのアプリケーションのセットアップと管理に使用するデータベース、ミドルウェア、ツールなどがあります。
FaaSは、VMやコンテナに代わるコンピューティングです。FaaSを使用することで、開発者はビジネスロジックを1つの関数として記述することに専念でき、一方でインフラストラクチャはプラットフォームによって扱われます。各関数は、特定の問題の解決と、その問題の1事例ごとに対する実行に重点を置いています。これに対し、コンテナは、タスクとタスクの間で開始も停止もしないステートフルなシステムです。FaaSでも、他のアプローチには付きもののメンテナンスやセットアップのオーバーヘッドが発生しません。しかし、一般的には、FaaSはクラウドネイティブアプリケーションを作成するための低レベル構成要素と見なすことができます。
FaaSは、サーバーレス環境で機能を実行するために設計された、PaaSのサブセットです。コンテナ、VM、関数を使用できるPaaSでは、開発者がアプリケーション全体を展開して管理することが普通です。FaaSでは、関数を定義し、その実行をトリガーするイベントを指定します。
FaaSは低レベルのアプローチを採用していますが、スケーラビリティ、リソースのプロビジョニング、フォールトトレランスをはじめとする多くの利点を提供します。以前は専用サーバーを使用するには小さすぎると考えられていたワークロードを、今ではFaaSで扱うことができます。
サーバーレスの利点とは?
アプリケーション開発者は、運用上の負担の低減とコストの大幅な削減を実現しながら、ソリューションを短期間で公開できます。
サーバーレステクノロジーは、その多くの利点を通じて、独自のソリューションを構築するにはリソースが不足していた組織にクラウド空間を開放してきました。その利点の例として次が挙げられます。
- 合理化した運用
- 自動的なスケーラビリティ
- 費用効率
- 迅速な配布
- レジリエンスの向上
1. 合理化した運用
サーバーレスコンピューティングでは、サーバーのプロビジョニング、設定、管理が不要なので運用を合理化できます。salaryexpert.comによると、Kubernetesベースのコンテナクラスターを管理できるエンジニアの経費は、1人あたり年間約135,000ドルに上るので、クラウドでアプリケーション開発に着手するだけでも高額な経費が発生します。FaaSプラットフォーム上でタスクを実行する場合、実行あたりのコストは高くなることも考えられますが、少ない要員でこなせることからサーバレスが有利な選択肢となることもあります。
サーバーレスを使用することで、インフラストラクチャ関連のタスクに貴重な時間を浪費することなく、顧客満足度の向上に専念できます。核心的なアクティビティにより多くのリソースを振り向け、これまでよりも短い時間でこれまで以上の価値を実現できます。また、クラウドインフラストラクチャでの社内ソリューション構築を検討していなかった組織にとっては、運用の合理化によってそのハードルが低くなります。
2. 自動的なスケーラビリティ
これまでの自動的なスケーリングソリューションは、必ずしも実際のタスクに適しているとは限りませんでした。基礎となるインフラストラクチャがVMやコンテナを基本としていたからです。新しいRed Hat Enterprise Linux 8をインストールした環境では、アプリケーションソフトウェアをインストールしていない基本的な状態でも、VMの起動に1分ほどを要することが報告されています。
また、トラフィックの増加がスケーリングサービスで検出されると、そのサービスが開始するインスタンスを、このトラフィックを扱ううえで十分な速度で実行できないことがあります。このような状況があると、容量計画やオーバープロビジョニング回避の再検討が必要になります。
FaaSでは起動時間を1秒未満にすることができるので、リアクティブなスケーリングソリューションでも受信トラフィックに十分迅速に適応でき、自動的なスケーリングがより現実的なアプローチになります。
3. 費用対効果
アイドル状態のサーバーリソースにも課金が発生するVMシステムやコンテナシステムとは異なり、サーバーレスは実行時間でのみ課金されます。関数を実行しなければ費用は発生しません。これにより、サーバーレスでは高い費用対効果が得られます。
サーバーレスアーキテクチャによっていくつかの企業がAWSの請求額を大幅に削減していることが報告されています。例えば、スタック全体をサーバーレスアーキテクチャに移行したことで、経費を月額10,000ドルからわずか370ドルに削減した組織があります。
また、起動時間が短いFaaSでは、数千回の呼び出しに対応できるようにシステム全体を数秒でスケールアップできるため、柔軟性やパフォーマンスを犠牲にすることなくコストを節減できます。
4. 短期間での製品化
サーバーレスでは、開発と展開に要する時間も短縮できます。インフラストラクチャのプロビジョニングと管理に煩わされずに、新機能や更新を迅速に反復して展開できます。これにより、市場からの変化し続ける需要に迅速に対応し、常に競争の先頭に立つことができます。
5. レジリエンスの向上
最後に、クラスターオペレーターによる管理を必要とするコンテナに比べ、サーバーレスでは優れたレジリエンスが得られます。これは、組み込まれたフォールトトレランスと高可用性による効果です。基盤となるインフラストラクチャの冗長性と自動スケーリングはクラウドプロバイダーが担当するので、手作業による容量計画は不要です。ただし、データとワークロードのセキュリティ保護はクラウドプロバイダーの担当外です。レジリエンスを実現し、アプリケーションをセキュリティで保護するには、インフラストラクチャ全体にわたって一貫性のあるセキュリティを実現する統合クラウドセキュリティソリューションを検討します。CrowdStrike Falcon® Cloud Securityは、その一例です。
VMとコンテナを凌ぐサーバーレス
サーバーレステクノロジーにより、開発者はサーバー管理の負担から解放されます。その結果、スケーラビリティ、信頼性、費用対効果に優れ、顧客に高い価値を提供するアプリケーションを作成できます。インフラストラクチャ、スケーリング、可用性の管理をクラウドプロバイダーに委ねることで、機能の構築、バグの修正、各種の調査などの価値の高いタスクに開発者がより多くの時間を割くことができます。
クラウドアーキテクトは、サーバーレスを使用する場合、マイクロサービスやモノリシックアーキテクチャに妥協する必要がありません。アーキテクチャ設計の柔軟性を損なうことなく、効率的な運用、費用対効果、本質的なレジリエンスのメリットを享受できます。
セキュリティエンジニアもサーバーレステクノロジーから多くのメリットを得られます。インフラストラクチャのメンテナンス、例えばセキュリティ修正プログラムを適用してソフトウェアを最新の状態に保つなどの作業は、クラウドプロバイダーが担当します。VMイメージやコンテナオーケストレーターへのパッチの適用にも煩わされる必要がなくなります。
クラウドは、企業が顧客に提供する価値に直接関係のない作業を排除することで、アプリケーション開発を簡素化し、オンプレミスソリューションよりも費用対効果を高めることを目指してきました。サーバーレスは、この目標の達成に役立ちます。また、サーバーレスは多くのインフラストラクチャタスクの責任やアイドルリソースのコストに関する懸念をクラウドプロバイダーに委ねます。このようなことは、VMではできません。
クラウドストライクは、DevSecOpsの導入を簡素化しながら、コンテナ、ワークロード、サーバーレスアプリケーションの保護コストを削減します。詳細については、CrowdStrike Falcon® Cloud Securityをご覧ください。このセキュリティソリューションは、包括的なCDR(クラウド検知・対応)を提供するとともに、さまざまな業界や規制に特化したセキュリティポスチャとゴールドスタンダードのコンプライアンスを強化します。Falcon Cloud Securityは、コンテナやサーバーレス環境を含むクラウドワークロードに対して、99%のMITRE ATT&CK®検知カバレッジを誇ります。
Expert Tip
Falcon Cloud Securityのハンズオンラボに参加して、アプリケーションのライフサイクル全体を保護する方法を体験してください。