0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データ連携の勘所

Posted at

過去に別チームがオフショア開発で作らせたシステム間のデータ連携機能が、全く使い物にならなかったことがありました。
最終的には私が作り直すことになったのですが、その原因を振り返ると、発注側・受注側の双方がデータ連携の勘所を理解していなかった点に尽きます。


データ連携の四大要件

私が考える重要な点が4つあります。これを今日から勝手に四大要件と呼ぶことにします。

データ量

最重要項目です。これが変わるとその他の項目も大きく影響します。
データ出力側・受信側が最終的にどれくらいのデータ量(件数/容量)を扱うかを見積もることが重要です。
たとえば1日あたり1000件と100万件では、設計の前提がまったく異なります。
量が少ない分には大した問題は起こりません。量が多いと難度は大きく上がります。
出力形式や通信方法など、設計のあらゆる部分がデータ量に依存します。ゆえに最重要項目です。

連携頻度

1回/日で済むなら夜間バッチで十分です。
しかし「ほぼリアルタイム」のような要件になると、非同期処理、キューイング、再送設計などが必要になってきます。

全件か差分か

全件連携はシンプルですが、データ量が多いと処理負荷やネットワーク負荷が問題になります。
そのため、更新があったデータのみを差分で連携する設計が現実的です。

削除データの反映方法

出力元で削除されたデータは、通常そのままでは受信側に反映されません。
これを補うには、次のような手段が考えられます:

  • 削除フラグを用意し、それを出力する
  • 削除専用のデータを別ファイル・別イベントで送信する
  • 丸ごと再構築(ただしデータ量が少ない場合に限る)

削除の反映方法は、設計の初期段階で決めておくべき重要な論点です。


まとめ

データ連携の設計には、単なる仕様書やAPI定義では見落とされがちな論点が多くあります。
特に今回紹介した「データ量・頻度・差分・削除対応」の四点は、実装の成否を左右する重要ポイントです。

自分が発注側・受注側のどちらであっても、これらを意識することでトラブルを未然に防ぎ、より堅牢なデータ連携を実現できるでしょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?