データベースを技術選定する時のポイント

データベースを技術選定する際に最低限押さえておきたい観点は以下の三つ。

  • Reliability - 信頼性、データが毀損することなく、サービスを安定して稼働させられるかどうか
  • Scalability - シーズンや将来の成長を加味して、必要に応じてシステムがスケールするか
  • Maintainability - 保守性や移行難易度、普段のオペレーション業務の負荷はどれくらいか

予算・インフラコストや現場のソフトウェアエンジニアの技術理解度などの制約条件を加味しながら、基本的には上記三つのトレードオフのバランスをどうとっていくかがポイントになる。

大抵のケースで、まずは Maintainability を最優先にすると良い。一番重要なのは「変更できること」「移行できること」「撤退できること」。そして、要件の許す限り最低限のレベルでの Reliability / Scalability を担保するデータベースおよび設計を選定する。

そもそもサービスが成長するかどうかはわからない。来るかどうかわからない将来に備えて必要以上に Reliability や Scalability を加味する必要はない。選定したデータベースが、必要に応じて進化させていくことができれば、将来必要になってもそれら Reliability / Scalability を向上させる手掛かりになる。

具体的には、ツールがある程度枯れており、ソースコードが公開されていれば upstream に貢献したり fork したりすることで改善していけることができる。そこで必要とされるプログラミング言語に現場のソフトウェアエンジニアが習熟していればなおよい。オペレーションコストも低ければ、アーキテクチャ改善やツール改善にエンジニアリングリソースを投下することもできる。その他には、以下の観点を考慮していくと良い。

  • アプリケーションディベロッパーの観点から見た時の使いやすさ
  • クエリ言語の利用しやすさ
  • 分析ツールやパフォーマンス解析などのモニタリングの充実度
  • クライアントライブラリの品質
  • 他データシステムとの連携の可能性
  • 業界におけるベストプラクティスの豊富さ
  • スキーマの管理の容易さと必要性
  • コストモデル

上記三つの観点は、私が好きな DDIA 本にも書いてあること。かなり簡約したが、まず初めの第一歩として押さえておきたい最低限のポイントを紹介した。

2023-06-25