特定の顧客用に特別なビジネスロジックを用意している場合、以下のようにソースコード中に顧客情報を記述することで実装することはできます。
(顧客番号が'1111111'である場合に特別なビジネスロジックを実行するとします)
:
:
:
if (処理中の顧客番号が'1111111'の場合) {
特別なビジネスロジック
}
:
:
:
----
しかし、この実装方法には以下の問題があり、望ましくありません。
特別なビジネスロジックを適用する対象の顧客の情報は、(データの管理にDBを使用しているシステムであれば)DBに持たせるべきです。
・対象となる顧客が追加されたり削除されたりする度にソースコード修正が必要になる
コンパイルやデプロイが必要となり、対応工数や対応のリスクが増加する。
→DBで管理すればDB内の情報の補正だけで済む。
・データを一元管理できなくなる
対象となる顧客を調べるためにはソースコードを見なくてはならなくなる。
→DBで一元管理すれば情報の検索が容易になる。
・セキュリティを確保するのが難しくなる
ソースコードが流出した場合に顧客情報も同時に流出してしまう。
(参考:フリマアプリ「メルカリ」で2021/05/21に発表された情報流出事故)
→DBで一元管理すれば、顧客情報の流出のリスクを減らすことができる。
----
対象となる顧客の情報をDBに持たせる場合、以下のような実装になります。
1.対象となる顧客の情報を管理するテーブルを別途持たせる場合
:
:
:
if (特定処理対象顧客テーブルに処理中の顧客番号が存在する場合) {
特別なビジネスロジック
}
:
:
:
2.既存のテーブルにフラグを持たせる場合
:
:
:
if (処理中の顧客番号について顧客テーブル.特定処理対象フラグが'1'の場合) {
特別なビジネスロジック
}
:
:
: