止まらないシステムを構築する際、マイクロサービスアーキテクチャーを採用するのも有効だ。小さなサービスとして機能分割するので、一部に不具合が発生しても影響がシステムの全機能に及ぶことを防げるからだ。

 ただしマイクロサービス化された分散システム環境では、データの整合性を保つ仕組みが欠かせない。機能分割するので、アプリケーション全体から見た整合を取ることが困難だからだ。整合を取れなければ2重に処理してしまい計算結果に不整合が生じることもある。特に異常処理やトランザクション処理の設計は難しい。

 この問題を解決するのに利用できるのが、サービス間でやり取りするデータに一意なキーを付与してトランザクションを保証する方法や、処理後すぐではなく時間がたってから整合性を確保する方法だ。

 2つの事例からデータの整合性を確保する方法を押さえよう。

キーを付与してデータを管理

 NTTデータがマイクロサービス化に取り組んでいるのがキャッシュレス決済総合プラットフォームである「CAFIS(キャフィス)」だ。同プラットフォームはコンビニエンスストアなどの小売業者の端末から送られてくる決済情報を決済事業者に受け渡す機能を備えている。例えば店頭で読み取ったQRコード決済の情報を受け取り、CAFIS内で整形してPayPayやLINE Payといった各事業者向けのフォーマットに変換して送信する。

 クラウドネイティブな開発や環境構築を支援するNTTデータの石垣一システム技術本部デジタル技術部Agile Professional Center課長は分散システムとして構築した理由を「開発するAPIごとにチームを作れるため独立して開発・リリースを進められる。保守・運用の面からも有効」と説明する。石垣課長は「いったんシステムを構築してもビジネスの変化により、すぐに使われなくなる可能性がある。マイクロサービスアーキテクチャーなら部分的に改善して価値を高めていける」と言う。

 ただしマイクロサービスは各サービスが非同期に分散処理するため、データの整合を取ることが難しい。しかし、決済管理など金銭がからむシステムでは1円の誤差も許されない。データの引き渡しには細心の注意が必要だった。そこでCAFISではデータに一意なキーを付与し、トランザクションの一貫性を担保している。

一意なキーを持ち回る
[画像のクリックで拡大表示]

この先は有料会員の登録が必要です。今なら有料会員(月額プラン)が12月末まで無料!

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