新サービスと既存システムの間で、データの参照や登録を行う。データの参照では、DB連携やビュー、レプリケーションなどの手法をうまく使い分ける。データの登録はキューを活用し、非同期に実行する手法が向く。

 前回は、ストラングラーパターンを用いて、モノリシックなシステムをサービスに分割していく方法を紹介しました。今回はデータの観点からサービスをいかに連携させていくかを整理します。以下、大きく3つのシナリオに分けて説明します。

  • モノリシックなシステムのデータを参照する
  • モノリシックなシステムにデータを登録する
  • モノリシックなシステムのデータの変更を共有する

モノリシックなシステムのデータを参照

 ユーザーに対するデータの見せ方を変えるために、モノリシックなシステムをマイクロサービス化することがあります。例えば、履歴情報を利用したレコメンドやデータ集計による意思決定といった用途は、ユーザーの利用状況に応じた改善が望まれます。こうした仕組みを実現するには、モノリシックなシステムを拡張するのではなく、新たなサービスを構築し、モノリシックなシステムが管理するデータを参照するという構成を取ります。

(1)データベースの共有

 マイクロサービス化の第1歩は「データベース(DB)の共有」が現実的です(図1)。ただし、以下のようにいくつかの課題があります。

図1●モノリシックなシステムのデータを参照する手法
[画像のクリックで拡大表示]

保守性:あるサービスの要件によってテーブル構造を変更した場合、そのテーブルを利用している他サービスが影響を受ける

性能:あるサービスからのアクセスが増えてDBの負荷が上がった場合、そのDBを利用する他のサービスの処理性能が落ちる

可用性:共有されているDBがダウンすると、そのDBにアクセスしている全てのサービスが停止する可能性がある

 これらに対応する手法として、「ビューの利用」「レプリケーションの利用」の2つが考えられます。

(2)ビューの利用

 新サービスで利用するデータが読み取り専用である場合は、ビューの活用が候補になります。

 DB内に新サービスが参照するために専用のビューを作成します。ビューは新サービスの要件によって設計します。こうすれば元のテーブルにカラム追加があった場合でも、ビューにはその変更が伝播しないため、新サービスでは対応が不要になります。

 ビューを応用すると、モノリシックなシステムの複雑なテーブル構造を隠蔽化することも可能です。ビューでは複数のテーブルを結合したり、抽出条件を指定したりできるので、新サービスに必要なデータだけを参照できます。

(3)レプリケーションの利用

 レプリケーションを利用すれば性能や可用性の問題に対応できます。レプリケーション機能はメインとなるモノリシックなシステムが管理するDBをマスターとし、その内容をコピーしたスレーブに当たるDBを作成します。新サービスはスレーブにアクセスするので、マスターとスレーブを異なるリソース上に配置すれば、性能の問題が発生しにくくなります。また、レプリケーションでは、マスターノードに障害が発生した場合でも、スレーブノード側は影響を受けずに処理を継続できます。

 ビューやレプリケーションの利用は、共有DBパターンを前提とし、DBの機能を使うことで課題を解決するアプローチです。簡単に実装できる半面、DBを共有するために根本的にはサービス間を密結合にしてしまうため、長期的な利用には問題が生じることを理解しておく必要があります。

この先は有料会員の登録が必要です。「日経SYSTEMS」定期購読者もログインしてお読みいただけます。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら