クラウドネイティブ時代、データベースに求められる要件を整理する:クラウドネイティブ時代のデータベース(1)
クラウドネイティブは、その要素技術としてコンテナやマイクロサービスなどを含んでおり、近年の開発において一般的となりつつある。では、データベースにもそうした技術要素は取り込まれていくのだろうか。本連載では、クラウドネイティブ時代のデータベース設計で考慮すべきポイントを検討する。
クラウドネイティブとは、「スケーラブルなアプリケーションを構築および実行する能力を組織にもたらす」考え方として定義される(参考記事:「クラウドネイティブ」はどう誤解されているか)。そして、そこに含まれる技術要素として、コンテナ、サービスメッシュ、イミュータブルインフラストラクチャ、宣言型API、マイクロサービスアーキテクチャ(以後、MSA)があり、その採用はシステム構成に大きな変化をもたらす。
MSAでは分割されたサービスがメッセージをやりとりしながら協調的に動作する。開発はサービス単位で進み、継続的インテグレーション/継続的デリバリー(CI/CD)と組み合わせることでアプリケーションを高頻度でリリースすることが可能になる。こうしたサービス単位の管理性とアジリティの向上がMSAの目的だ。また、障害発生時はサービス内に影響を閉じ込め、ボトルネックを個別に拡張できるなど、理想的に設計されたMSAは可用性と拡張性を備えている。
では、本連載のテーマであるデータベース(DB)の観点で見ると、MSA採用で検討すべきポイントは何だろうか。
それは「Database per Service」といわれる原則である。マイクロサービス1つに1つのDBを備える構成を指し、複数のサービスが単一DBを共用する形はアンチパターンになる。企業システムで使われてきたリレーショナルデータベース(RDB)はクラスタ機能により高い可用性や拡張性を実現してきたが、単一の巨大なDBのみで構成すると、アプリケーションの依存関係がDBに波及し、マイクロサービスの管理性、アジリティを損なってしまう。
一方で、分割されたDBをサービスのリリース頻度にあわせて構築、改修して障害時に復旧できるように運用、管理することや、負荷に応じて拡張させるのは簡単なことではない。こうした問題認識を踏まえて、クラウドネイティブな時代に求められるDBの要件整理を試みる。
クラウドネイティブ時代に求められるDBの要件
アジリティ
アプリケーションはクラウドネイティブへの対応を進め、開発のアジリティを向上できるサービス単位に分割できたと仮定しよう。さらにアプリケーションはコンテナ化され、CI/CDでさまざまな環境に安全にデプロイされる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Microsoftが「.NETマイクロサービス」についてのよくある質問に回答
マイクロサービスに関するオンラインイベントで特に多くの視聴者から寄せられた質問と回答を、Microsoftが公式ブログで抜粋して紹介した。 - 青山氏が語った、「クラウドネイティブ」がやがて「Kubernetesネイティブ」へ進む理由
青山真也氏は2020年5月20日、Forkwell主催のオンラインミートアップで、仮想マシン時代の開発とKubernetesによるクラウドネイティブな開発のこれからについて話した。この講演を要約してお届けする。 - 1000倍返しの勢いで混沌化するKubernetes/クラウドネイティブ周辺ツールは何から学べばよいのか
Kubernetesやクラウドネイティブをより便利に利用する技術やツールについて概要や使い方を凝縮して紹介していく連載。初回は、Kubernetesの現状や、多種多様なKubernetes/クラウドネイティブ周辺ツールについて。