サーバーレスコンピューティングを使用する理由とは?|サーバーレスの長所と短所

サーバーレスコンピューティングは、スケーラビリティ、市場投入までの時間の短縮、費用の削減など、Web開発者に多くの利点を提供します。ただし、場合によっては、これらの利点よりも他の懸念事項が上回ることがあります。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • サーバーレスアーキテクチャの長所と短所を理解
  • 誰がサーバーレスアーキテクチャを使用すべきかを理解

関連コンテンツ


さらに詳しく知りたいとお考えですか?

是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!

当社がお客様の個人データをどのように収集し処理するかについては、Cloudflareのプライバシーポリシーをご確認ください。

記事のリンクをコピーする

サーバーレスコンピューティングを使用する理由とは?

サーバーレスコンピューティングには、従来のクラウドベースまたはサーバー中心のインフラストラクチャに比べて多くの利点があります。多くの開発者にとって、サーバーレスアーキテクチャは、スケーラビリティを高め、柔軟性を高め、リリースまでの時間を短縮し、すべてコストを削減します。サーバーレスアーキテクチャにより、開発者はバックエンドサーバーの購入、プロビジョニング、管理について心配する必要がありません。ただし、サーバーレスコンピューティングは、すべてのWebアプリケーション開発者にとっての特効薬ではありません。

サーバーレスコンピューティングの仕組みとは?

サーバーレスコンピューティングは、ベンダーが必要に応じてバックエンドサービスを提供するアーキテクチャです。サーバーレスコンピューティングの詳細については、サーバーレスコンピューティングとは?をご覧ください。

サーバーレスコンピューティングの利点とは?

サーバー管理不要

「サーバーレス」コンピューティングは実際にはサーバー上で行われますが、開発者はサーバーに対処する必要はありません。それらはベンダーによって管理されます。これにより、DevOpsに必要な投資が削減され、費用が削減されます。また、サーバー容量に制約されることなく、開発者がアプリケーションを作成および拡張できるようになります。

開発者は使用したサーバースペースに対してのみ課金され、コストが削減されます

「利用時払い」の電話プランのように、開発者は使用した分のみ課金されます。コードは、サーバーレスアプリケーションでバックエンド関数が必要な場合にのみ実行され、コードは必要に応じて自動的にスケールアップされます。プロビジョニングは動的で、正確で、リアルタイムです。一部のサービスは非常に正確であるため、料金は100ミリ秒単位に分割されます。対照的に、従来の「サーバーフル」アーキテクチャでは、開発者は、使用するサーバー容量にかかわらず、必要なサーバー容量を事前に予測し、購入する必要があります。

サーバーレスアーキテクチャは本質的にスケーラブル

郵便局がなんとか魔法のように配達用トラックを自由自在に追加および廃止でき、郵便物の量が急増すると郵便配達車のサイズが大きくなり(母の日の直前など)、必要な配達が少なくなると郵便配達車が小さくなる場合を想像してください。それは基本的にサーバーレスアプリケーションができることです。

サーバーレスインフラストラクチャで構築されたアプリケーションは、ユーザーベースの拡大または使用量の増加に応じて自動的にスケーリングされます。機能を複数のインスタンスで実行する必要がある場合、ベンダーのサーバーは、しばしばコンテナを使用して、必要に応じて起動、実行、終了します(最近実行された機能はより速く起動します。以下の「パフォーマンスに影響する可能性があります」を参照)。その結果、サーバーレスアプリケーションは、1人のユーザーからの1つのリクエストを処理できるだけでなく、非常に多くのリクエストを処理できます。サーバースペースの量が固定された従来の構造のアプリケーションは、使用量が急激に増加すると圧倒されます。

迅速なリリースと更新が可能

サーバーレスインフラストラクチャを使用すると、アプリケーションの作業バージョンをリリースするためにサーバーにコードをアップロードしたり、バックエンド構成を行う必要はありません。開発者は、ほんの少しのコードを非常に迅速にアップロードし、新製品をリリースできます。アプリケーションは単一のモノリシックスタックではなく、ベンダーによってプロビジョニングされた機能のコレクションであるため、コードを一度にすべてまたは一度に1つの機能をアップロードできます。

これにより、アプリケーションに新しい機能をすばやく更新、パッチ、修正、または追加することもできます。アプリケーション全体を変更する必要はありません。代わりに、開発者は一度に1つの関数だけアプリケーションを更新できます。

コードはエンドユーザーの近くで実行できるため、レイテンシーが減少します

アプリケーションはオリジンサーバーでホストされていないため、そのコードはどこからでも実行できます。したがって、使用するベンダーによっては、エンドユーザーに近いサーバーでアプリケーション機能を実行することが可能です。これにより、ユーザーからのリクエストがオリジンサーバーに到達する必要がなくなるため、待ち時間が短縮されます。Cloudflare Workersは、この種のサーバーレスのレイテンシー削減を可能にします。

サーバーレスコンピューティングの欠点とは?

テストとデバッグはより困難になります

リリースされたコードが実際にどのように実行されるかを確認するために、サーバーレス環境を複製することは困難です。開発者はバックエンドプロセスの可視性がないため、アプリケーションは個別の小さな機能に分割されるため、デバッグはより複雑になります。Cloudflare Workers Playgroundは、テストとデバッグの摩擦を軽減するサンドボックスです

サーバーレスコンピューティングは新しいセキュリティ上の懸念をもたらします

ベンダーがバックエンド全体を実行する場合、セキュリティを完全に検査することができない場合があります。これは、個人データまたは機密データを処理するアプリケーションで特に問題になる可能性があります。

企業には独自の個別の物理的なサーバーが割り当てられていないため、サーバーレスプロバイダーは、多くの場合、常に1つのサーバーで複数の顧客コードを実行します。機械を他の関係者と共有するというこの問題は「マルチテナンシー」として知られています。複数の企業が同時に一つのオフィスを賃貸して仕事をしようとしていると考えてください。マルチテナンシーはアプリケーションのパフォーマンスに影響を与える可能性があり、マルチテナントサーバーが適切に構成されていないと、データが漏えいする可能性があります。マルチテナンシーは、サンドボックスが正しく機能し、十分に強力なインフラストラクチャを備えたネットワークにはほとんど影響を与えません。たとえば、Cloudflareはサービスの低下を軽減するのに十分な余剰容量で15 Tbpsネットワークを実行し、Cloudflareによってホストされるすべてのサーバーレス機能は独自のサンドボックスで実行されます(Chrome V8エンジンを介して)。

サーバーレスアーキテクチャは、長時間実行される処理用に構築されていません

これにより、サーバーレスアーキテクチャでコスト効率よく実行できるアプリケーションの種類が制限されます。サーバーレスプロバイダーはコードの実行時間に課金するため、従来のサーバーレスインフラストラクチャと比較して、サーバーレスインフラストラクチャで長時間実行されるプロセスでアプリケーションを実行すると、コストがかかる場合があります。

パフォーマンスに影響する可能性があります

常に実行されているわけではないため、サーバーレスコードは使用時に「起動」する必要があります。この起動時間はパフォーマンスを低下させる可能性があります。ただし、コードの一部が定期的に使用される場合、サーバーレスプロバイダーはそれをアクティブ化する準備を整えます。この準備ができたコードのリクエストは「ウォームスタート」と呼ばれます。しばらく使用されていないコードのリクエストは、「コールドスタート」と呼ばれます。

Cloudflare Workersは、ほとんどの場合5ミリ秒未満でJavaScriptコードを起動して実行できるChrome V8エンジンを使用することで、コールドスタートの問題を大幅に回避します。コードが既に実行されている場合、応答時間は1ミリ秒未満です。さまざまなサーバーレスプラットフォームのパフォーマンスの詳細についてはこちらをご覧ください

ベンダーロックインはリスクです

ベンダーがアプリケーションのすべてのバックエンドサービスを提供できるようにすると、必然的にそのベンダーへの依存度が高まります。1つのベンダーでサーバーレスアーキテクチャを設定すると、特にそれぞれのベンダーがわずかに異なる機能とワークフローを提供するため、必要に応じてベンダーを切り替えることが難しくなる可能性があります。(Cloudflare WorkersはJavaScriptで記述され、広く使用されているService Workers APIに対して記述されているため、移行が容易です。)

誰がサーバーレスアーキテクチャを使用するべきですか?

市場投入までの時間を短縮し、迅速に拡張または更新できる軽量で柔軟なアプリケーションを構築したい開発者は、サーバーレスコンピューティングから多大な利益を得ることができます。

サーバーレスアーキテクチャは、一貫性のない使用が見られるアプリケーションのコストを削減します。ピーク期間は、トラフィックがほとんどまたはまったくない時間と交互になります。そのようなアプリケーションの場合、常に実行されており、常に使用可能なサーバーまたはサーバーのブロックを購入すると、使用されていない場合でもリソースの無駄になります。サーバーレスセットアップは、必要なときに即座に応答し、休憩中にコストを負担しません。

また、レイテンシーを減らすためにアプリケーション機能の一部またはすべてをエンドユーザーの近くにプッシュしたい開発者は、少なくとも部分的にサーバーレスのアーキテクチャを必要とします。そのため、一部のプロセスを配信元サーバーから移動する必要があります。

開発者はいつサーバーレスアーキテクチャの使用を避けるべきですか?

自己管理型またはサービスとして提供される専用サーバーを使用する方が、コストの観点とシステムアーキテクチャの観点の両方でより理にかなっている場合があります。たとえば、かなり一定で予測可能なワークロードを持つ大規模なアプリケーションでは、従来のセットアップが必要になる場合があり、そのような場合、従来のセットアップはおそらくより安価です。

さらに、従来のアプリケーションをまったく異なるアーキテクチャの新しいインフラストラクチャに移行することは非常に困難です。

開発者がサーバーレスアーキテクチャを構築するのにCloudflareはどのように役立ちますか?

Cloudflare Workersは、開発者がJavaScript関数を記述し、Cloudflareネットワークのエッジでそれらをリリースできるようにする製品です。これにより、可能な限りエンドユーザーに近いサーバーレスアーキテクチャでアプリケーションコードを実行し、レイテンシーを最小限に抑えることができます。