目次
サーバーレスアーキテクチャとは?
サーバーレスとは何ですか?
サーバーレスとは、開発者がサーバーのプロビジョニング、マネジメント、拡張を意識することなくアプリケーションを構築し、コードを実行できるようにする次世代のクラウドネイティブな開発モデルです。「サーバーレス」という用語はサーバーの不在を意味するのではなく、サーバーのプロビジョニングとマネジメントがエンドユーザーから抽象化(または隠蔽)されているという事実を反映しています。
サーバレスモデルにより、開発チームはコードの作成とリリースに集中でき、根底にあるインフラストラクチャは必要に応じてシンプルに拡張されるため、開発者は運用のオーバーヘッドを削減し、市場投入までの時間を短縮できます。
サーバーレスアーキテクチャの仕組み
サーバレスアーキテクチャとは、アプリケーションが完全管理のコレクションであるホストクラウドサービスを利用してビルドされていることを意味します。サーバーレスアーキテクチャでは、サードパーティベンダー(多くの場合、クラウドプロバイダー)が、アプリケーションの需要に応じてサーバーのプロビジョニングと拡張を行い、使用量に基づいてのみ料金を請求します。通常、何も実行されていない間は、料金は発生しません。
従来のアーキテクチャでは、開発チームは仮想マシンの立ち上げや、アプリケーションを実行するために必要なサーバーの先行投資に頭を悩ませる必要があり、これにはいくつかの直接的な欠点があります。
インスタンスが稼働している間は処理の有無にかかわらず料金が発生する
サーバーの拡張は通常手動で行われ、使用状況を監視し、必要に応じてインスタンスを増やす(または減らす)必要がある
増やす必要がある場合は次の階層に段階的に移行し、短期間で 1% 多く必要なだけでも 30% 大きくなり(コストも 30% 高くなる)可能性がある
サーバーレスモデルは、開発者がアプリケーションをビルド・実行するためのよりコスト効率の高い方法を提供し、同時にビジネスロジックに集中できるようにします。サーバーの管理やインスタンス階層のアップグレードを事前に計画することに時間を費やす代わりに、コードを記述するだけで、必要な規模で実行させることができます。
サーバーレスアーキテクチャの最も一般的な形式の1つに、ファンクション・アズ・ア・サービス(FaaS)があります。ファンクション・アズ・ア・サービスはサーバーレスクラウドコンピューティングの一形態であり、開発者がアプリケーションのビジネスロジックを構築、実行、管理できるようにします。各論理関数は、一時的な個別のユニットとなります。関数はイベント駆動型です。つまり、サーバーレス関数が呼び出されると、サービスはそれをコンテナ内でインスタンス化し、必要に応じて実行して適切な出力を生成します。需要がなくなると、コンテナは破棄されます。
インスタンスは常に実行されているわけではないため、FaaS には「コールドスタート」問題と呼ばれる現象が発生する可能性があります。関数がしばらく呼び出されていない場合、インスタンスが設定されるまでの間、応答に追加の待機時間が発生することがあります。継続的に使用されている限り、インフラストラクチャは稼働し続け、レイテンシは短縮されます。ただし、関数が使用されないまま長時間経過すると、インスタンスは削除され、次の呼び出しでコールドスタートが発生します。
サーバーレスは単なる FaaS ではありません
FaaS はサーバーレスコンピューティングと呼ばれることが多いですが、この用語はより広義にも使用されています。AWS Lambda は2014年にサーバーレスコンピューティングを一般に普及させた最初のサービスであると評価されることが多く、その結果、多くの開発者がサーバーレスコンピューティングをファンクション・アズ・ア・サービス(FaaS)と同義であると考えるようになっています。しかし現在では、BaaS(バックエンド・アズ・ア・サービス)ソリューション、アプリケーション開発プラットフォーム、さらにはデータベースなど、サーバーレスモデルに適合するさまざまなテクノロジーやサービスが存在します。
バックエンド・アズ・ア・サービス(BaaS)
FaaS がサーバーレス形式でコードを実行できるようにするのに対し、バックエンド・アズ・ア・サービス(BaaS)はサーバーレス実行モデルを使用してアプリケーションのバックエンド全体を実行します。バックエンド・アズ・ア・サービスプラットフォームはサーバー側の自己管理型コンポーネントをサーバーレスのマネージドバックエンドサービスに置き換えるもので、通常、データベース管理、クラウドストレージ、認証、プッシュ通知、API などの機能で構成されています。BaaS アーキテクチャでは、クライアントが BaaS に接続し、BaaS がデータベースに接続します。データベースが組み込まれている場合もあります。BaaS では、サーバーレス関数は通常、API または API ゲートウェイを介して呼び出されます。
Google Firebase や AWS Amplify のようなサーバーレス BaaS プラットフォームを使用することで、開発者は舞台裏の側面を気にすることなく Web およびモバイルアプリケーションを構築でき、フロントエンドの作業のみに集中できるようになります。
一部のバックエンド・アズ・ア・サービス(BaaS)プラットフォームは完全にサーバーレスであり、需要に応じてインフラストラクチャとコストを正確に拡張しますが、その一方で、使用量がない場合でもインスタンスサイズや時間単位の料金という概念を依然として使用しているプラットフォームもあります。
サーバーレスアプリケーション開発プラットフォーム
BaaS と同様に、Vercel や Netlify のように、サーバーレスアーキテクチャで実行されるフロントエンドアプリケーション開発プラットフォームもあります。これらのプラットフォームは、開発者にフロントエンドアプリケーションのビルドに必要なすべてを提供し、サーバーレス関数を使用して、サーバー側コードを実行するためのバックエンドを提供します。これらのプラットフォームは、理解が難しい関数を特定の REST または GraphQL API エンドポイントに変換することで使いやすさを重視し、ユーザーが FaaS をデプロイして管理する必要をなくします。多くの場合、オーケストレーションは不要で、アプリケーションの需要に応じて自動的にスケールします。ただし、アプリケーションデータを保存するために、これらのプラットフォームをデータベースと統合するのは依然として開発者の役割です。
サーバーレスデータベース
サーバーレスコンピューティングとサーバーレスアーキテクチャの利点は現在データベースにも拡張されており、サーバーレスデータベースという概念はまだ比較的新しいものです。従来のクラウドデータベース・アズ・ア・サービス(DBaaS)では、データベースは完全に管理およびホストされ、特定の価格で特定の事前プロビジョニングされたインスタンスサイズとしてデプロイされます。クラウドデータベースのサーバーレスアーキテクチャでは、インスタンスサイズを選択する必要はまったくありません。代わりに、データベースを単純に設定するだけで、データサイズとスループットに応じて必要に応じて拡張され、それに応じてコストも増減します。
FaaS のような従来のサーバーレス コンピューティング製品とは対照的に、サーバーレスデータベースはアプリケーションのデータを安全に保存するために状態を維持する必要があり、アプリへのトラフィックがない場合でも、データストレージに対して少額の料金が発生する可能性があります。
サーバーレスアーキテクチャとコンテナアーキテクチャの比較
サーバーレスアーキテクチャとコンテナアーキテクチャはどちらも、開発者がアプリケーションコードをより小さなコンポーネント(マイクロサービス)に分割できるようにすることでインフラストラクチャのオーバーヘッドを削減できますが、両者には大きな違いがあります。コンテナは、アプリケーションコードとその依存関係の両方をパッケージ化した一時的なもので、分離された環境で実行され、必要に応じてサイズを拡大または縮小できます。
一般に、コンテナを管理する開発者は、各配置の構成と依存関係をアップデートし、コンテナのシステムを維持する必要があります。サーバーレスサービスのメンテナンスは、ベンダー(クラウドプロバイダーまたはサービスプロバイダー)によって全面的に管理されます。コンテナアーキテクチャは、Kubernetes のようなコンテナオーケストレーションプラットフォームを使用して自動化できます。Kubernetes は、コンテナ化されたアプリケーションの配置、拡張、管理を自動化するためのオープンソースシステムです。
より詳細な制御を可能にするため、コンテナにデプロイされたサーバーレス関数を使用したハイブリッドアーキテクチャの採用を選択する開発者もいます。実際、Google Cloud Run や AWS Fargate のように、このモデルに基づいて構築されたソリューションも存在します。これらのプラットフォームを使用すると、サーバーレスインフラストラクチャ上でコンテナを実行でき、コンテナ化されたアプリケーションの構築やホスティングに通常伴う、基礎のインフラストラクチャ管理を抽象化できます。
サーバーレスコンピューティングの利点
サーバーレスコンピューティングは、従来のアプローチによる開発と比較して、多くの利点を提供します。
市場投入までの時間を短縮:サーバーレスアーキテクチャを利用すれば、独自のインフラストラクチャのプロビジョニングや管理に伴う運用上のオーバーヘッドを排除し、アプリケーションをより迅速に構築できます。インフラストラクチャのセットアップが不要で、他のチームへの依存関係もないため、ほとんどのサーバーレスサービスでは即座に構築を開始できます。
柔軟なスケーラビリティ:サーバーレスソリューションでは、ユーザーが何もしなくても、ベンダーが拡張を処理します。予期しない使用量の急増が発生した場合、サービスは需要に合わせて自動的にスケールアップし、トラフィックが減少すると自動的にスケールダウンするため、ユーザーへの影響はありません。
開発者の生産性の向上:サーバーレスアーキテクチャでアプリを構築する場合、開発者はサーバーの拡張といった運用タスクに時間を費やすのではなく、アプリケーションコードや、アプリケーションを差別化するビジネスロジックの記述に集中できます。
コスト効率:サーバーレスプラットフォームは、一般的に、CPU や RAM などの未使用のリソースに対しても料金が発生する可能性がある従来のクラウドプラットフォームと比較して、非常にコスト効率に優れています。サーバーレスプラットフォームは従量課金モデルを採用しており、使用した分のみを支払い、アイドル状態のインフラストラクチャに対して料金が請求されることはありません。具体的な価格はサービスによって異なるため、コストが急速に増大するのを避けるために、価格モデルを必ず理解しておくことが重要です。
サーバーレスコンピューティングはどのような場合に使用すべきでしょうか?
多くの開発アプローチと同様に、サーバーレスアプローチがアプリケーションやビジネスに適しているかどうかを検討することが重要です。一般的に、次のようなシナリオではサーバーレスアーキテクチャの採用を検討すべきです。
どの程度のワークロードが想定されるかわからない
使われていないリソースに費用を支払いたくない
インフラ管理はできるだけ避けたいと考えている
アプリケーションロジックは個別の関数に分割できる
インフラを管理することなく、アプリケーションのバックエンド全体をホストしたい場合
他のサービスのワークフローにおいて小規模なカスタム機能が必要になる
多数のエッジデバイスをバックエンド(例:モバイルまたは IoT)に接続する場合
実際、これらのシナリオはほとんどの最新のアプリケーションに当てはまります。では、サーバーレスのオプションの検討を始めた場合、それが適さないのはどのような時でしょうか。まだクラウドを利用していない場合や、規制上の理由で独自のインフラストラクチャをホストする必要がある場合、サーバーレスアーキテクチャは明らかに適切な選択肢ではありません。継続的に安定したトラフィックが発生するアプリケーション、ミッションクリティカルで低レイテンシが求められるアプリケーション、あるいは厳格なセキュリティやコンプライアンス要件があるアプリケーションも、サーバーレスには適していない可能性があります。このような場合は、開発者がよりきめ細かな制御を行える専用のクラウド環境で実行する方が適しているでしょう。
いつものように、サーバーレス製品は慎重に調査し、レイテンシの要件(例えばコールドスタートの問題が最小限など)、セキュリティなどを満たしているか確認してください。一般的に、ほとんどのサーバーレス技術には特定の開発パターンが組み込まれているため、コミットする前にこの作業方法が自分に合っているかを確認してください。
サーバーレスアプリケーションのユースケース
サーバーレスアーキテクチャやサーバーレスコンピューティングはさまざまなユースケースで利用できますが、多くの場合、需要が不定期または予測不能に急増するアプリケーションや、イベント駆動型のアプリケーションに使用されます。サーバーレスアプリケーションの一般的なユースケースには、次のようなものがあります。
迅速なアプリケーション開発
サーバーレス技術の最も一般的なユースケースの 1 つは、アプリケーション開発とテストです。アプリケーションの構築やテストを行う際には、未知の要因やアイドル期間が発生することが多く、事前にプロビジョニングされたインフラストラクチャにコストを支払うことが合理的ではない場合があります。サーバーレスソリューションを活用することは、コスト効率が良いだけでなく、参入障壁を取り除き、運用上のオーバーヘッドなしで簡単に開始して迅速に反復作業を行うことを可能にします。
サーバーレスソリューションの人気が高まるにつれ、より多くの開発者がそれらを活用して、より迅速に新しいアプリケーションを開発しようとするのは自然な流れです。
イベントベースまたはイベント駆動型のタスク/アプリケーション
サーバーレス技術が非常に価値を発揮するもう一つの一般的なユースケースは、イベント駆動型アプリケーションやマイクロサービスの構築です。イベント駆動型マイクロサービスは、ユーザーのアクションやシステム変更などのイベントにリアルタイムで応答するように設計されており、トリガーを使用してサーバーレス関数を自動的に実行することでこれを実現します。その性質上、マイクロサービスはサーバーレスのみが提供できる即時かつ柔軟なスケーラビリティと、アクティビティがある場合に使用したリソース分のみを支払うというコスト効率のメリットを享受できます。
継続的インテグレーションと継続的デリバリー(CI/CD)
CI/CD は、統合やテストのフェーズから配信や展開に至るまで、アプリ開発ライフサイクルにオートメーションを導入することで、アプリケーションや新しいコードを配信するための手法です。
サーバーレスアーキテクチャを使用して、CI/CD パイプラインの多くのステージを自動化することもできます。例えば、コードのコミットによってビルドを作成する関数をトリガーしたり、プルリクエストによって自動テストをトリガーしたりできます。
エッジコンピューティング
エッジコンピューティングとは、アプリケーションの計算とデータストレージをデータソース(つまり、IoT デバイス)の近くに配置することで、応答時間のレイテンシを改善し、より迅速な洞察を提供する分散されたコンピューティングパラダイムです。
サーバーレスソリューションは、高い拡張性を持ち、軽量でエンドユーザーの近くに配置または分散できるため、エッジコンピューティングに適しています。IoT の例では、エッジのユースケースにおいて使用量が断続的に急増することが多く、サーバーレスが提供するオンデマンドの拡張性が役立ちます。
上記のユースケースではサーバーレスアプリの構築方法を紹介しましたが、サーバーレスソリューションは、RESTful APIの構築(APIゲートウェイとサーバーレス関数を併用)や、バックエンド・アズ・ア・サービスの場合におけるミドルウェアおよびバックエンドレイヤー全体の構築など、アプリケーションコードやアーキテクチャの特定のコンポーネントを構築するためにも使用できます。
MongoDB Atlas でサーバーレスアプリケーションを構築する方法
MongoDB Atlas は、開発者が最新のサーバーレスアプリケーションを構築できるように設計された、完全管理型の開発者向けデータプラットフォームです。ドキュメントモデルに基づいて構築された Atlas は、開発者に対して、さまざまなデータやワークロードのタイプを単一の統合ソリューション内で扱う柔軟性を提供し、インフラストラクチャの複雑さを軽減します。Flex 階層および専有階層のクラスターと、安全で信頼性が高く、スケーラブルな基盤により、あらゆる規模のアプリケーションを自信を持って構築できます。

Atlas は、サーバーのプロビジョニングとマネジメントを抽象化してサーバーレスアーキテクチャの利点を提供するいくつかのサービスを提供しており、以下を含むさまざまな一般的なプラットフォームやフレームワークとシームレスに統合します。
AWS Lambda、AWS Fargate、Amazon EventBridge、AWS AppSync
Azure Functions、Azure App Service
Google Cloud Functions、Google Cloud Run
Vercel
Netlify
その他多数
開発者がクラス最高のアプリケーションを構築するための構成要素を提供するだけでなく、使い慣れた愛用するツールやサービスを使用して、好みのスタックで構築できる柔軟性を提供します。
以下に、Atlas を使用して特定のサーバーレスアプリケーションの要件を満たす例をいくつか示しますが、言及されている機能は、ユーザーや組織の特定のニーズに応じて、個別に、または組み合わせて活用できることに注意することが重要です。
サーバーレスマイクロサービスを構築
サーバーレスマイクロサービスは、アプリケーション内で特定の役割を果たすサーバーレス関数で構成されています。MongoDB Atlas は、開発者がサーバーレスマイクロサービスを容易にビルドできるようにする機能を提供します。これには、当社の開発者データプラットフォームで直接利用可能な、クラウド Functions、Triggers、API(REST および GraphQL)といった完全管理型のクラウドサービスが含まれます。
サーバーレスマイクロサービスは一般に管理・管理しやすいため、複雑で進化し続けるアプリケーションや、短いイベント駆動型のタスクに分解できるアプリケーションに適しています。
MongoDB 上に完全にサーバーレスなバックエンドを構築
その一方で、サーバーレスアプリの構築を検討している多くの開発者は、バックエンドを完全に抽象化したいと考え、開発をスピードアップするために BaaS ソリューションを選択する傾向があります。MongoDB Atlas は、クラウド Functions、Triggers、API を組み合わせ、さらに組み込みの認証やロールベースのデータアクセス制御を連携させることで、開発者が Web アプリやモバイルアプリ向けのサーバーレスバックエンドを構築するために必要なすべての構成要素を提供します。
予測不能なワークロードや急激な負荷変動に対応する拡張を最適化
多くのサーバーレスアプリケーションは、予測不能なトラフィックの急増に対応できるように設計されており、データベースも同様に対応できることが重要です。Atlas は、専有クラスターと Flex 階層クラスターの両方で柔軟なオートスケーリングを提供し、開発チームの負担を軽減します。
Atlas Flex 階層クラスターは、事前のプロビジョニングを行わずにアプリケーションの需要に対応するために自動的にスケーリングするオンデマンドのエンドポイントを提供します。これらは、使用されたリソースとストレージに対してのみ課金する、操作ベースの価格設定モデルに基づいています。
Atlas の専有クラスターは、ストレージとコンピューティングリソースのニーズに基づいてさまざまなクラスター階層で提供され、利用状況に応じてスケールアップまたはスケールダウンするオートスケーリングが標準で有効になっています。動的に拡張する Flex 階層クラスターとは異なり、専有クラスターでは、開発者が最小および最大の拡張しきい値を設定したり、スパイクが予想される場合に手動で別のクラスター階層に拡張したりできるため、より詳細な制御が可能です。
トラフィックの少ないアプリケーションや開発環境におけるコストを改善
安定したトラフィックがないアプリケーションや、常に使用されるわけではない開発環境では、事前にプロビジョニングされたデータベースに料金を支払うことは合理的ではない場合があります。このシナリオでは、Atlas Flex 階層クラスターを使用してコストを最適化し、未使用のリソースに対する支払いを回避しながら、トラフィックがある場合にデータベースを即座にスケールアップできるようにします。
既存のサーバーレスアプリのデータプラットフォームとして MongoDB Atlas を使用
すでにサーバーレスアプリケーションの開発を開始している場合、または本番環境で既存のサーバーレスアプリケーションを運用している場合でも、MongoDB Atlas が次のレベルへのステップアップを支援します。当社の開発者データプラットフォームでは、検索、データ可視化、エッジからクラウドへの同期、データアーカイブなど、拡張された一連のデータサービスにアクセスできます。これにより、複雑さを増すことなく進化するアプリケーションの要件を満たせるだけでなく、ニーズに最適なインフラストラクチャ上でアプリケーションを柔軟にデプロイできるようになります。MongoDB Atlas は、幅広い一般的な開発ツールやサービスと統合されており、選択したアーキテクチャとスタックでサーバーレスアプリケーションを構築および実行できます。

注:この図は、MongoDB Atlas と併用可能なすべてのソリューションを網羅するものではありません。これはサーバーレスアーキテクチャに見られる典型的なコンポーネントを強調していますが、MongoDB を使用してアプリケーションを構築する唯一の方法を示すものではありません。
MongoDB Atlas の使用を開始する方法
すでにスタックの一部としてサーバーレス技術を使用している場合でも、使用を開始したばかりの場合でも、MongoDB Atlas はアプリを次のレベルへと引き上げるお手伝いをします。
よくある質問
サーバーレスコンピューティングに関する一般的な誤解として、セキュリティが確保されていない、またはセルフホスト型や従来のクラウドコンピューティングのサービスよりもセキュリティリスクがあるというものがあります。ただし、サーバーレスアーキテクチャでは、クラウドプロバイダーまたはサービスプロバイダーがインフラストラクチャのセキュリティを管理します。そのため、セキュリティの構成ミスや潜在的な脆弱性の問題を心配する必要はありません。ただし、アプリケーションのセキュリティは引き続きお客様の責任となります。MongoDB Atlas では、標準でエンタープライズグレードのセキュリティ制御が適用されるため、データが安全であるという確信を持って、アプリケーションをビルドしてデプロイできます。当社のセキュリティコントロールの詳細についてはこちらを参照してください。
今すぐ Atlas を利用する
- 世界中の 115 以上のリージョンで利用可能
- サンプルデータセット
- 常時認証
- エンドツーエンドの暗号化
- コマンドラインツール