共有する

はじめに

多くの組織におけるデータベースの役割は、時間の経過とともに進化してきました。アプリケーションの構築、ビジネス上の意思決定、より大きなエコシステムでの価値提供におけるデータへの依存度が高まる一方で、データベースソフトウェアとインフラストラクチャ自体の管理は、多くの場合、変化してきました。

これらの資産は従来、組織自体によって運用されていましたが、その管理は外部プロバイダーに委託されることが増えています。このアイデアの最初の反復は、プロバイダーがインフラストラクチャとソフトウェアを管理し、ユーザーが設定を調整したりスケーリングポリシーを設定したりできるマネージドデータベースへの移行でした。

最近では、このアイデアはサーバーレスデータベースへと進化しており、インフラストラクチャ全体、データストレージ、および基盤となるアーキテクチャはすべてプロバイダーによって管理され、ユーザーはAPIライクなやり取りを通じて管理するデータにのみアクセスします。

このガイドでは、従来デプロイされたデータベースと、そのサーバーレス版との違いについて説明します。プロバイダーが提供するさまざまなオプションを区別するために、必要に応じてマネージドデータベースサービスについても触れます。これらの異なる概念について学ぶことで、さまざまなサービス間のトレードオフを理解し、自身のプロジェクトにどのような種類のデータベース管理が適切であるかについて、情報に基づいた意思決定を下すのに役立ちます。

従来のデータベース vs マネージドデータベース vs サーバーレスデータベース

さまざまな戦略の利点と欠点について掘り下げる前に、各システムの基本的な仕組みについて概説しておきましょう。

従来のデータベース

従来のデータベースとは、数十年前から利用されているデータベースおよびデータベース管理のスタイルです。適切なハードウェアリソースを備えた物理サーバーまたは仮想サーバーをプロビジョニングし、それをデータベースサーバーとして設定することを伴います。初期インストールと設定に加えて、このタイプのセットアップでは、以下のものが必要です。

  • ハードウェアの健全性、リソース管理、ネットワークアクセスを含む、基盤となるインフラストラクチャの継続的な管理
  • 最新で安定した安全なオペレーティングシステムの維持、および
  • データベース管理システムの構成、最適化、および管理

Traditional databases

一般に、このオプションは膨大な量の制御と柔軟性を提供します。システムのあらゆる部分を検査、最適化、変更して、ユーザーとアプリケーションのニーズに合わせることができます。

これは、管理負担の増大という代償を伴います。理想的なアプリケーションパフォーマンスを提供しつつ、システムとデータの可用性とセキュリティを維持するために、システムのすべてのレベルを維持および最適化する必要があります。

マネージドデータベース

マネージドデータベースは、ほとんどのクラウドプロバイダーが、独自のインフラストラクチャを管理する代替案として提供している製品です。代わりに、プロバイダーがサーバー構成とデータベースソフトウェアを管理し、ユーザーが動作を設定および調整できるようにオプションを公開します。

マネージドデータベースでは、プロバイダーが以下の責任を負います。

  • ハードウェアの健全性、リソース管理、ネットワークアクセスを含む、基盤となるインフラストラクチャの継続的な管理
  • 最新で安定した安全なオペレーティングシステムの維持、および
  • データベース管理システムの健全性と機能など、データベースシステムの一部の管理

ユーザーは依然として以下の責任を負います。

  • データベースの最適な設定に関する意思決定
  • スケーリング、バックアップ、その他のソフトウェアレベルの構成に関するポリシーの設定

一般的に、この構成により、組織が特に気にしない部分のプロセスをプロバイダーが管理できます。ただし、その管理は高い水準で維持されます。主要な設定可能領域はユーザーに公開されているため、リソースの重要性、運用要件、SLAに応じて動作を調整できます。

多くの組織がこの管理スタイルを採用しているのは、開発者がデータベースの重要な部分をカスタマイズできる一方で、社内のシステム管理の専門知識を維持する必要がないためです。これは、プロバイダーが製品で意図していたものとニーズがうまく合致する場合にうまく機能しますが、与えられた制御の量に苦労したり、自動化のレベルが期待どおりでなかったりする場合には困難になる可能性があります。

サーバーレスデータベース

サーバーレスデータベースは、ユーザーからの管理責任をさらに大きく引き受けるクラウドプロバイダーが提供する比較的新しいアプローチです。サーバーレスデータベースは、データベース管理システムのうち、ストレージを扱う部分とクエリを実行する部分を分離します。これにより、両者を独立してスケーリングできます。サーバーレスデータベースでは、これらのコンポーネントは両方ともプロバイダーによって排他的に管理されます。

Serverless databases

実際には、これによりサーバーレスデータベースは、データが保存、操作、取得される無限に大きなリポジトリとして扱われることができます。バックエンドストレージは必要に応じてスケールアウトされ、クエリ実行者の数も需要に応じて調整されます。ユーザーは、コマンドを適切なコンポーネントに自動的にルーティングするAPIライクなインターフェースを介してデータベースにアクセスするだけで済みます。

サーバーレスデータベースは、これまで議論してきたどのオプションよりも運用管理の量が最も少なくて済みます。これにより、データベースをインフラストラクチャの構成要素としてではなく、外部サービスとして使用できます。

従来のデータベースとサーバーレスデータベースの使い分け

さまざまなデータベース管理戦略がとるアプローチを検討したところで、どのようなシナリオに最適かについて話しましょう。これらの決定は主に、アプリケーションの要件、社内の専門知識、最適化と管理への意欲に左右されますが、適切な方向性を示すのに役立つ一般的な指標がいくつかあります。

なぜ従来のデータベースを使いたいのか?

ハードウェアからデータベースソフトウェアまで、データベースサーバーのスタック全体を管理する従来のアプローチは、制御、プライバシー、パフォーマンスが必要な場合に最も適しています。

高レベルの制御

従来のデータベースサーバーは、可用性を維持するために継続的な監視、メンテナンス、および緊急時計画を必要としますが、比類のないレベルの制御を提供します。

単一のサーバーから複雑なクラスターまで、特定のニーズに合ったインフラストラクチャアーキテクチャを選択できます。これらの資産は、オンプレミス、自社またはレンタルハードウェアのデータセンター、またはクラウドプロバイダーの標準コンピューティング資産を使用するなど、どこにでもデプロイできます。必要に応じてコンポーネントをアップグレードおよび交換したり、ソフトウェアレベルの構成を自由に調整したりできます。

デプロイのあらゆるレベルで何でも変更できる権限を持つことが重要である場合、従来のデータベースデプロイメントが最善の選択肢となるでしょう。このレベルの制御の代償として、デプロイのあらゆる部分を管理する責任を負う必要があります。

データプライバシーに重点を置く

アプリケーションデータが、機能として、または何らかの標準や規制に準拠するための要件として、非常に高いレベルのプライバシーを必要とする場合、従来のデータベースが最も高いレベルの制御を提供します。デプロイされている物理ハードウェアへのアクセス、およびソフトウェアレベルでのアクセスを誰が持つかを正確に指示できます。

独自のデータベースサーバーを運用することで、ユーザーとデータに必要なレベルの保護を確実に実施できます。異なるクライアントのデータは、厳格な分離を維持するために、異なるデータベース、異なるサーバー、または異なる物理的な場所に配置できます。物理的なアクセスが制限されるように、特定の業界標準を満たすデータセンターへのデプロイを決定できます。

ソフトウェアレベルでも、デフォルトでは外部からのアクセスがない状態から始められます。他の当事者がサービスに対して管理上の監視を行うことはありません。アクセスを提供しないことでデータを保護し、必要なレベルの保護を提供するために暗号化やその他の保護手段を設定できます。

高パフォーマンス

アプリケーションが常に高いパフォーマンスを必要とする場合、従来のデータベースデプロイメントが最善の戦略かもしれません。

データベースサーバーを自分で運用する場合、プロセスや競合するクライアントを完全に把握しているため、リソースの競合をより簡単に特定し、軽減することができます。共有リソースを隣接する顧客が占有しすぎることを心配する必要がなく、必要に応じて追加の資産をプロビジョニングできます。システムのピークパフォーマンスは、割り当てる時間とお金、およびシステム管理の専門知識によってのみ制限されます。

特にサーバーレスデータベースと比較する場合に重要となるのは、サーバーデータベースリソースの継続的な可用性です。ピーク需要を下回ってもインフラストラクチャのレイヤーをスケールダウンすることはないため、コールドスタート問題が発生しません。これは、以前のアクティビティレベルに関係なく一貫したパフォーマンスが必要な場合に重要になることがあります。

サーバーレスデータベースを使いたい理由

サーバーレスデータベースも、ユースケースにうまく適合すれば、かなりの数の利点があります。管理負担が重くなく、自己スケーリングする手頃なデータベースアクセスを望むなら、素晴らしい選択肢です。

低コスト運用

サーバーレスデータベースが提供できる主な利点の1つは、運用コストが低いことです。サーバーレスデータベースのストレージ層とコンピューティング層は独立してスケールするため、使用した分だけ正確に料金を支払うことになります。

ストレージ層は、管理しているデータ量に応じてスケールします。これは通常、ボリュームに応じて価格が設定されるため、アプリケーションが一定のパターンを持つ場合、料金は比較的予測可能です。このストレージバックエンドは動的に割り当てられるため、容量不足やストレージの過剰プロビジョニングに伴うコストを心配する必要はありません。料金はストレージのみを反映します。

コンピューティング層は完全に分離されており、独自の基準でスケーリングされます。プロビジョニングされるクエリ実行インスタンスの数は、アプリケーションがデータベースに渡している現在のトラフィックによって決定されます。これは、トラフィックがピーク時には、サービスが追加のクエリプロセッサを起動してリクエストを処理することを意味します。一方、クエリが実行されていない場合は、サービスはこの層をゼロにまでスケールダウンでき、その間の処理コストを完全に削除できます。

コストに非常に敏感な場合、サーバーレスデータベースは良い選択肢となるかもしれません。なぜなら、使用量を正確に予測する必要がないからです。プラットフォームのリソースとコストは、使用量に完全に連動して変動します。

高いスケーラビリティ

これは前のセクションでコストの機能として述べましたが、サーバーレスデータベース戦略の最も重要な利点の1つは、簡単にスケールアウトできることです。これは費用だけでなく、予測可能なサイクルでの使用量の変動や、関心の急増による変化に応じて、さまざまな需要レベルに対応する能力にも影響します。

データストレージとクエリ実行のための分離されたスケーリングメカニズムにより、同じサービスと構成を使用して、非常に異なる使用シナリオを処理できます。サービスは、ほとんどの使用レベルに自動的に調整でき、データベースサービスを変更することなくアプリケーションとともに成長できます。

高いスケーラビリティは、アプリケーションの実験が容易で、データベースサービスに変更を加えることなくテストから本番環境へ移行できることも意味します。使用されていないときにゼロにスケールダウンするテストデータベースやステージングデータベースを設定できます。これは、継続的インテグレーションと継続的デリバリーを実践する際に特に役立ちます。なぜなら、パイプラインが本番環境と完全にミラーリングされたデータベースサービスを使用でき、テストに必要な少量の使用量しか支払う必要がないからです。

管理責任の軽減

サーバーレスデータベースの最大の利点は、チームの管理責任を軽減できることです。多くの組織は、マネージドデータベースに必要な管理のオーバーヘッドに慣れてきましたが、サーバーレスデータベースは、ワークロードをさらに軽減するために、追加のレベルのサポートと管理を引き受けます。

サーバーレスデータベースサービスは、インフラストラクチャとデータベース管理システムソフトウェアを管理するだけでなく、リソース割り当てとデータベースの多くのポリシーも管理します。データベースに必要なストレージの正確な量や、平均トラフィックレベルを処理するために必要なデータベースインスタンスの数を把握する必要がある代わりに、システムは検出された条件に反応するだけです。スケーリングルールを管理する代わりに、必要なスケーリングレベルの境界を設定するだけで、プラットフォームはそれらの制約内でインテリジェントにスケーリングします。たとえば、常に少なくとも1つのクエリ実行エンジンが利用可能であるようにするなどです。

これはマネージドデータベースがどのように説明されるかに似ていますが、実際には大きく異なります。サーバーレスデータベースでは、事前に多くの決定を下す必要がありません。主に、維持したいコストのしきい値と、例えば常に少なくとも1つのクエリ実行者が利用可能であるようにするなど、スケーリングに特定の微調整を設定します。システムは、アプリケーションのデータベース使用が常に利用可能で、標準どおりに機能し、現在のリクエスト環境に応答するように、他のほとんどすべてを処理します。

まとめ

特徴従来のデータベースサーバーレスデータベース
制御レベル最小限
データプライバシーデフォルトでプライベート、管理者が設定可能プロバイダーのデータ信頼が必要
パフォーマンスハードウェアと構成次第で非常に高いパフォーマンスが可能需要の急増時にパフォーマンスが低下する可能性あり(スタンバイのクエリプロセッサで緩和可能)
コスト静的、需要の有無にかかわらずデータベースのコストは同じ変動、使用した分だけ支払う
スケーラビリティ構成による、複雑になる場合がある需要とサービス設定に基づく自動スケーリング
管理責任すべてに責任を負う最小限の責任

この記事では、従来の自己管理型データベースとサーバーレスデータベースサービス間の主要な違いについて考察しました。ユーザーの視点からどのように異なるのか、また組織の優先順位に応じてデータベース戦略を決定する際に考慮すべきトレードオフについて説明しました。

サーバーレスデータベースは、あらゆるタイプのアプリケーションに適しているわけではありませんが、多くの組織にとってデータベースの管理と運用を大幅に簡素化できます。どのような場合に優れたソリューションとなるか、どのような欠点があるかを理解することで、データベースソリューションを評価する際に考慮すべきかどうかを判断するのに役立ちます。

著者について
Justin Ellingwood

ジャスティン・エリングウッド

ジャスティンは2013年からデータベース、Linux、インフラストラクチャ、開発者ツールについて執筆しています。現在、妻と2匹のウサギとともにベルリンに住んでいます。通常、三人称で書く必要がないため、関係者全員にとって安心です。
© . All rights reserved.