見出し画像

はじめての設計をやり抜くための本【設計編】第3章外部設計の手法⑥外部システムI/F設計

外部システムI/Fはネットワークやファイル交換により外部システムとデータを交換する部分のこと。開発しているシステムから、自社の期間システムに対して、あるいは他社の取引システムや決済システムに対して個別の方法で連携することを想定している。

外部システムI/Fの方式
同期か非同期に分かれる。
同期はリクエストと処理が同時に実行される。例:WebAPI
非同期とはリクエストされたタイミングから遅れて処理が実行される。
例:Pub/Subなどのメッセージングサービスやファイル連携
どのような方式を選ぶかはシステムの非機能要件によって決まる。
リアルタイムに結果を返す必要がある場合や同期を選択する。処理時間がかかるものは非同期のメッセージングサービスを選択する。バッチ処理のようなデータ量が大きく処理時間がかかるのであればファイル連携を選ぶ。

WebAPIとはWebサービスを開発するための、主にHttpを使った外部システムI/Fの方式。WebAPIの形式:REST、SOAPなど。

外部システムI/Fのリスク
相手側のシステムI/Fが明確に定義されていれば問題ないが、独自のプロトコルや開発中である場合、こちらのシステムの開発にも影響がある。できるだけ早く明確な仕様を入手し、早くプロトタイププログラムによる疎通テストを行う。

外部システムI/Fを設計する際に検討する項目
・接続先
・プロトコル/手段
・タイミング
・インターフェイス項目仕様
・認証/セキュリティ
・例外処理

外部システムI/Fは接続先の都合で変更されるおそれがある。そこで外部システムI/Fを設計する際に外部システムI/Fに依存する処理を共通化、局所化する。
[共通化/局所化の例]
・ネットワークに接続するクラス
・シーケンスを制御するクラス
・送受信データを読み書きするクラス
・例外処理を行うクラス など
送受信するデータのパターンに応じてクラスを定義しておけば、ネットワーク接続の方法が変わらない限り、クラスの数もそれほど大きくならない。

障害発生時の例外処理
外部システムI/Fでは障害発生時の例外処理の対応が重要。ネットワークやファイル交換によるI/FではDBのようなトランザクションの仕組みがない。
それにより、ネットワークで通信中に回線がダウンしたり、ファイルの出力中にディスクフルになった場合に処理が中断せざるを得ない。
[対処について検討項目]
・例外処理として単に処理を中断してログを記録する。
・システムが自動的に再送するような機能を盛り込む
・(自動的に再送する方法の1つとして)非同期メッセージングサービス


第3章外部設計の手法⑥外部システムI/F設計についてまとめました。
次回は⑦バッチ設計について記載します。


この記事が気に入ったらサポートをしてみませんか?