skillup

技術ブログ

プログラミング全般

アプリケーション間のデータの連携方法に関して

投稿日:

以前やった「現場で役立つシステム設計の原則」を再読してます。

今、読んでいるのはアプリ間のデータ連携に関して。

複数のアプリ間でデータをやり取りする場合、以下のような方法が考えられます。

  • ファイルを直接渡す(CSVなど)
  • データベースを共有する
  • APIでつなぐ
  • メッセージングで渡す

ちょっとそれぞれのメリット、デメリットを見ていこうかと。

ファイルを直接渡す

CSVファイルなどをダウンロードしたりするパターンです。一般的には定期バッチなどで他システムにデータを送ることが多いかと思われます。

メリット

  • 連携に関する工数がかからず簡便

デメリット

  • 受け取る側が基本的に加工することが前提
  • 単純なデータの型(CSV)タイプでないと送りにくい
  • CSVデータと実データで差分ができるケースがあり

データベースを共有

内部システムのデータ連携などによく使われるパターンです。サブシステムなどから連携するときはこのパターンが多いでしょう。

メリット

  • データを受け取る側がある程度自由にデータを取得できる(リレーションなど)
  • 直接データを見るパターンになり、データの差分がない

デメリット

  • 不特定多数のユーザーには使えず、内部システム限定
  • 結合度が強くなりがち(参照するテーブルの変更の影響を受ける)
  • 接続を可能にするための権限の設定など要考慮

API

一般的にはRESTAPIのことをさすことが多く、データ連携で一般的に使われるパターンです。

メリット

  • 受け渡すデータの形を制限することができる
  • 内部設計の影響の依存度の影響を抑えることができる
  • 不特定多数への公開が可能
  • 参照だけでなく、更新作業や削除も可能

デメリット

  • 受け渡す側での設計考慮が必要
  • 同期型になるため、運用面で制約を受けることあり
  • 開発時のコミニケーションや連携などをうまくしないと遅延が発生する

メッセージング

テーブルか他のキューシステムなどを作り、非同期にデータ連携をするパターンです。

メリット

  • 非同期処理に有効
  • 比較的依存度が小さくなることが多い

デメリット

  • 同期型の処理はできない
  • データ差分に注意

-プログラミング全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Eclipseのシンタックスハイライト

先日PCがクラッシュした時にEclipseを入れなおしたんですが、普段あまり意識せずに使っていたのでhtmlのシンタックスハイライトをだすためだけに2時間ぐらい費やしました・・・自戒の意味も込めてメモ …

no image

1度に1つのことを

今回のリーダブルコードの概念はやや抽象的。 要は一度に行うタスクは1つにする、というところがポイントになります。 そのための手法として下記のようなことを上げています。 コードが行っているタスクをすべて …

no image

DIとDIコンテナについて再考

今までも何度かやったDI(Dependency Injection = 依存性の注入)について。 以前のリンク PHPにおけるDI スコープアノテーションとCDIについて Contents1 DIとは …

no image

テスト分類について

一般的なテスト工程での分類や個人的に大事だと思うこと Contents1 全プロセス共通1.1 テストデータ作成バッチ1.2 ローカル、開発、ステージング、本番の分岐2 PT(プログラムテスト)、単体 …

no image

オブジェクト指向 クラスの設計と業務ロジックの整理

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にクラスの作り方について。 Contents1 クラス設計と業務ロジック1.1 要点1.2 感想 クラス設計と業務ロジック …