skillup

技術ブログ

アーキテクト設計全般

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

投稿日:2020年10月18日 更新日:

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

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

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

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

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

ファイルを直接渡す

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

メリット

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

デメリット

  • 受け取る側が基本的に加工することが前提
  • 単純なデータの型(CSV)タイプでないと送りにくい
  • ファイル形式の変更などの場合、影響が大きい
  • CSVデータと実データで差分ができるケースがあり(リアルタイム性が弱い)

データベースを共有

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

メリット

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

デメリット

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

API

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

メリット

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

デメリット

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

メッセージング

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

メリット

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

デメリット

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

-アーキテクト設計全般
-

執筆者:


comment

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

関連記事

no image

マイクロサービスについて

マイクロサービスについて勉強したので少しメモを。 参考文献 Software Design 「2020年1月」 Contents1 マイクロサービスとは?1.1 具体例1.1.1 フロントエンドとバッ …

no image

オブジェクト指向 値オブジェクトの活用と場合分けに関して

オブジェクト指向 その1 オブジェクト指向 その2 オブジェクト指向 その3 でオブジェクト指向に触れたんですが、基本から勉強しなおす必要があると思い、まとめ&追記 参考文献 現場で役に立つシステム設 …

no image

スクラム開発をやってみて

アジャイルの定義に関してはエンジニアによって色々なものがあると思われますが、自分の場合一番綺麗に説明されているな・・・と感じたのは以下の記事でも紹介した書籍でした。 アジャイル開発について 現場ではた …

no image

自動テストをやる上で今まで障害だったこと

自動テストについて、考え方自体は5年以上前から知っていましたが、プロジェクトで実際に使われているのを見たのは今年4月になってからでした・・・ 自動テスト完備なんて昔は夢物語だと思ってたんですけどね・・ …

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

アーカイブ