サーバーレスアーキテクチャ
従来型データベース vs サーバーレスデータベース
はじめに
多くの組織におけるデータベースの役割は、時間の経過とともに進化してきました。アプリケーションを構築し、ビジネス上の意思決定を行い、より大きなエコシステムで価値を提供するためにデータへの依存度が高まる一方で、データベースソフトウェアとインフラストラクチャ自体の管理は、多くの場合、変化してきました。
これらの資産は従来、組織自身によって運用されてきましたが、その管理は外部プロバイダーにアウトソーシングされることが増えています。このアイデアの最初の反復は、マネージドデータベースに移行することでした。ここでは、プロバイダーがインフラストラクチャとソフトウェアを管理し、ユーザーが設定を調整したり、スケーリングポリシーを設定したりできるようにします。
最近では、このアイデアはサーバーレスデータベースへと進化しました。ここでは、インフラストラクチャ、データストレージ、および基盤となるアーキテクチャ全体がプロバイダーによって完全に管理され、ユーザーはAPIのようなインタラクションを通じて管理するデータにのみアクセスします。
このガイドでは、従来型データベースとサーバーレスデータベースの違いについて説明します。プロバイダーが提供するさまざまなオプションを区別するために、必要に応じてマネージドデータベースのオファリングについても説明します。これらのさまざまな概念について学ぶことで、さまざまなオファリング間のトレードオフを理解し、自身のプロジェクトに最適なデータベース管理の種類について情報に基づいた意思決定を行うことができます。
アプリケーションのすべてのデータを一元管理できるPrisma Data Platformをご確認ください。
従来型データベース vs マネージドデータベース vs サーバーレスデータベース
さまざまな戦略の長所と短所を掘り下げる前に、各システムの背後にある一般的なアイデアがどのように機能するかを簡単に確認しましょう。
従来型データベース
従来型データベースは、数十年間利用可能であったデータベースとデータベース管理のスタイルです。適切なハードウェアリソースを備えた物理または仮想サーバーをプロビジョニングし、データベースサーバーとしてセットアップすることが含まれます。初期インストールと構成に加えて、このタイプのセットアップには以下が必要です。
- ハードウェアの健全性、リソース管理、ネットワークアクセスなど、基盤となるインフラストラクチャの継続的な管理
- 最新で安定した安全なオペレーティングシステムの維持、および
- データベース管理システムの構成、最適化、および管理
一般的に、このオプションは非常に多くの制御と柔軟性を提供します。システムのすべての部分を、ユーザーとアプリケーションのニーズに合わせて、検査、最適化、および変更できます。
これには、管理負担の増大というコストが伴います。システムとデータの可用性とセキュリティを維持しながら、理想的なアプリケーションパフォーマンスを提供するために、システムのすべてのレベルを維持および最適化する必要があります。
マネージドデータベース
マネージドデータベースは、ほとんどのクラウドプロバイダーが独自のインフラストラクチャを管理する代替手段として提供する製品です。代わりに、プロバイダーがサーバー構成とデータベースソフトウェアを管理し、ユーザーが動作を構成および調整できるようにオプションを公開します。
マネージドデータベースでは、プロバイダーは以下の責任を負います。
- ハードウェアの健全性、リソース管理、ネットワークアクセスなど、基盤となるインフラストラクチャの継続的な管理
- 最新で安定した安全なオペレーティングシステムの維持、および
- データベース管理システムの健全性と機能など、データベースシステムの一部を管理すること
ユーザーは引き続き以下の責任を負います。
- データベースの最適な設定に関する意思決定を行うこと
- スケーリング、バックアップ、およびその他のソフトウェアレベルの構成のポリシーを設定すること
一般的に、この構成により、プロバイダーは、組織が特に気にしないプロセスの部分を、高い水準で維持されている限り管理できます。主要な構成可能領域は引き続きユーザーに公開されるため、リソースの重要性、運用要件、およびSLAに応じて動作を調整できます。
多くの組織は、この管理スタイルを採用しています。これにより、開発者は、社内のシステム管理の専門知識を維持することなく、関心のあるデータベースの部分をカスタマイズできます。ニーズがプロバイダーが製品に対して考えていたものとよく一致する場合はうまく機能しますが、与えられた制御の量に苦労したり、自動化のレベルが期待どおりでない場合は困難になる可能性があります。
サーバーレスデータベース
サーバーレスデータベースは、クラウドプロバイダーが提供する比較的新しいアプローチであり、ユーザーからの管理責任をさらに大きく引き受けます。サーバーレスデータベースは、ストレージを扱うデータベース管理システムの部分と、クエリを実行する部分を分離します。これは、両方を独立してスケーリングできることを意味します。サーバーレスデータベースでは、これらのコンポーネントは両方ともプロバイダーによって排他的に管理されます。
実際には、これにより、サーバーレスデータベースを、データを保存、操作、および取得できる無限に大きなリポジトリとして扱うことができます。バックエンドストレージは必要に応じてスケールアウトされ、クエリ実行者の数も需要に応じて調整されます。ユーザーは、コマンドを適切なコンポーネントに自動的にルーティングするAPIのようなインターフェースを介してデータベースにアクセスするだけで済みます。
サーバーレスデータベースは、これまで説明したオプションの中で、運用管理の量が最も少なくて済みます。これにより、データベースを、運用を維持する必要があるインフラストラクチャのコンポーネントとしてではなく、外部サービスのように使用できます。
従来型データベースとサーバーレスデータベースの使い分け
さまざまなデータベース管理戦略によって採用されたアプローチを確認したので、それらがどのようなシナリオに最適かについて説明できます。これらの決定は主に、アプリケーションの要件、社内の専門知識、および最適化と管理への意欲にかかっていますが、正しい方向を示すのに役立つ可能性のある一般的な指標がいくつかあります。
なぜ従来型データベースを使用したいのか?
ハードウェアからデータベースソフトウェアまで、データベースサーバーのスタック全体を管理する従来のアプローチは、制御、プライバシー、およびパフォーマンスが必要な場合に最適です。
高いレベルの制御
従来のデータベースサーバーは、可用性を維持するために継続的な監視、メンテナンス、および緊急時対応計画を必要としますが、比類のないレベルの制御を提供します。
単一のサーバーから複雑なクラスターまで、特定のニーズに合ったインフラストラクチャアーキテクチャを選択できます。オンプレミス、独自のハードウェアまたはレンタルハードウェアを備えたデータセンター、クラウドプロバイダーの標準コンピュートアセットの使用など、これらの資産を好きな場所にデプロイできます。必要に応じてコンポーネントをアップグレードおよび交換したり、ソフトウェアレベルの構成を境界なしに調整したりできます。
デプロイメントのあらゆるレベルであらゆるものを変更できる権限を持つことが重要な場合は、従来型データベースのデプロイメントが最適な選択肢となる可能性があります。このレベルの制御には、デプロイメントのすべての部分を管理する責任を負うことで対価を支払う必要があります。
データプライバシー重視
アプリケーションデータが、機能として、または標準または規制に準拠するための要件として、非常に高いレベルのプライバシーを必要とする場合、従来型データベースは最大限の制御を提供します。デプロイされている物理ハードウェアへのアクセス権を持つ人物と、ソフトウェアレベルのアクセス権を正確に指示できます。
独自のデータベースサーバーを実行することで、ユーザーとデータに必要なレベルの保護を確実に適用できます。異なるクライアントのデータは、厳密な分離を維持するために、異なるデータベース、異なるサーバー、または異なる物理的な場所に配置できます。物理的なアクセスが制限されていることを保証するために、特定の業界標準を満たすデータセンターへのデプロイを決定できます。
ソフトウェアレベルでは、外部アクセスがない場所から開始することもできます。デフォルトでは、他の当事者はサービスに対する管理監督権を持っていません。アクセスを提供しないこと、および必要なレベルの保護を提供するために暗号化やその他の保護手段を設定することにより、データを保護できます。
高いパフォーマンス
アプリケーションが一貫した高いパフォーマンスを必要とする場合、従来型データベースのデプロイメントが最適な戦略となる可能性があります。
データベースサーバーを自分で実行する場合、競合するプロセスとクライアントを完全に把握できるため、リソースの競合をより簡単に見つけて軽減できます。隣接する顧客が共有リソースを過剰に消費することを心配する必要はなく、必要に応じて追加の資産をプロビジョニングできます。システムのピークパフォーマンスは、割り当てる時間と費用、およびシステム管理の専門知識によってのみ制限されます。
サーバーレスデータベースと比較する場合に特に重要なのは、サーバーデータベースリソースの継続的な可用性です。ピーク需要を下回るたびにインフラストラクチャのレイヤーをスケールダウンしないため、コールドスタートの問題はありません。これは、以前のアクティビティレベルに関係なく、一貫したパフォーマンスが必要な場合に重要になる可能性があります。
なぜサーバーレスデータベースを使用したいのか?
サーバーレスデータベースは、ユースケースにうまく適合する場合、多くの利点もあります。管理負担が重くならずに自動スケーリングする手頃な価格のデータベースアクセスが必要な場合に最適です。
低コスト運用
サーバーレスデータベースが提供できる主な利点の1つは、低コスト運用です。サーバーレスデータベースのストレージ層と計算層の両方が独立してスケーリングするため、実際に使用しているものに対してのみ料金を支払います。
ストレージ層は、管理しているデータ量に応じてスケーリングします。これは通常、ボリュームに応じて価格設定されるため、アプリケーションに一貫したパターンがある場合、価格設定は比較的予測可能です。このストレージバックエンドは動的に割り当てられるため、容量不足やストレージの過剰プロビジョニングに関連するコストを心配する必要はありません。価格はストレージのみを反映しています。
計算層は完全に分離されており、独自の基準を使用してスケーリングします。プロビジョニングされるクエリ実行インスタンスの数は、アプリケーションがデータベースに渡している現在のトラフィックによって決定されます。これは、トラフィックがピーク時に、サービスがリクエストを処理するために追加のクエリプロセッサを起動することを意味します。一方、クエリが実行されていない場合、サービスはこのレイヤーをゼロにスケールダウンし、その期間中の処理コストを完全に取り除くことができます。
コストに非常に敏感な場合は、サーバーレスデータベースが適切なオプションとなる可能性があります。使用量を正確に予測する必要がないためです。プラットフォームのリソースとコストは、使用量に正確に比例してスケーリングします。
高いスケーラビリティ
前のセクションでコストの関数として言及しましたが、サーバーレスデータベース戦略の最も重要な利点の1つは、簡単にスケールアウトできることです。これは費用に影響を与えるだけでなく、使用量が予測可能なサイクルで変動したり、関心の急増によって変化したりするにつれて、さまざまなレベルの需要に対応できる能力にも影響を与えます。
データストレージとクエリ実行のための個別のスケーリングメカニズムにより、同じサービスと構成を使用して、非常に異なる使用シナリオを処理できます。サービスは、ほとんどの使用レベルに対応するように自動的に調整でき、データベースサービスを変更することなく、アプリケーションとともに成長できます。
高いスケーラビリティは、アプリケーションを簡単に試して、データベースサービスを変更することなく、テストから本番環境に移行できることも意味します。使用していないときにゼロにスケールダウンするテストデータベースとステージングデータベースを設定できます。これは、継続的インテグレーションと継続的デリバリーを実践する場合に特に役立ちます。パイプラインは、本番環境を完全に反映するデータベースサービスを使用でき、テストに必要な少量の使用量に対してのみ料金を支払うためです。
管理責任の軽減
おそらく、サーバーレスデータベースの最大のハイライトは、チームからの管理責任を軽減するのに役立つ方法です。多くの組織がマネージドデータベースに必要な管理オーバーヘッドのレベルに慣れてきましたが、サーバーレスデータベースは、ワークロードをさらに削減するために、追加レベルのサポートと管理を引き受けます。
サーバーレスデータベースサービスは、インフラストラクチャとデータベース管理システムソフトウェアを管理するだけでなく、リソース割り当てとデータベースの多くのポリシーも管理します。データベースに必要なストレージ容量や、平均トラフィックレベルに対応するために必要なデータベースインスタンスの数を正確に把握する必要はありません。システムは、検出された条件に対応するだけです。スケーリングルールを管理する代わりに、目的のスケーリングレベルの境界を設定するだけで、プラットフォームはそれらの制約内でインテリジェントにスケーリングします。
これは、マネージドデータベースがしばしばどのように説明されるかと似ていますが、実際には大幅に異なります。サーバーレスデータベースでは、事前に多くの決定を下す必要はありません。主に、維持したいコストのしきい値と、スケーリングに対して行いたい特定の微調整(たとえば、常に少なくとも1つのクエリ実行者を常に使用可能にするなど)を構成します。システムは、アプリケーションのデータベースの使用が常に利用可能であり、標準どおりに実行され、現在のリクエスト環境に対応していることを保証するために、ほぼすべてを処理します。
結論
機能 | 従来型データベース | サーバーレスデータベース |
---|---|---|
制御レベル | 高 | 最小限 |
データプライバシー | デフォルトでプライベート、管理者による構成が可能 | データをプロバイダーに委ねる必要がある |
パフォーマンス | ハードウェアと構成に応じて、非常に高いパフォーマンスが可能 | 需要が急増するとパフォーマンスが低下する可能性がある(スタンバイ状態のクエリプロセッサで軽減可能) |
コスト | 静的、データベースのコストは、需要が高いか低いかにかかわらず同じ | 可変、使用量に応じて支払い |
スケーラビリティ | 構成に依存、複雑になる可能性あり | 需要とサービス設定に基づく自動スケーリング |
管理責任 | すべてに責任を負う | 最小限の責任 |
この記事では、従来型の自己管理型データベースとサーバーレスデータベースサービスの主な違いについて見てきました。ユーザーの視点からどのように異なるか、組織の優先順位に応じてデータベース戦略を決定する際に考慮する必要があるトレードオフについて説明しました。
サーバーレスデータベースはすべてのタイプのアプリケーションに適しているわけではありませんが、多くの組織にとってデータベースの管理と運用を大幅に容易にすることができます。いつサーバーレスデータベースが適切なソリューションになり得るのか、またどのような欠点があるのかを理解することで、データベースソリューションを評価する際にサーバーレスデータベースを検討すべきかどうかを判断するのに役立ちます。
Prisma Accelerateは、サーバーレスアプリケーションとバックエンドデータベース間の接続問題を処理する1つの方法を提供します。サーバーレス関数からのエフェメラル接続を管理し、データベース接続プールを枯渇させるのを防ぐのに役立ちます。今すぐチェックしてください!