Help us understand the problem. What is going on with this article?

ICSアプローチに基づくドメイン駆動設計の戦略的設計

ドメイン駆動設計の戦略的設計では、主にマイクロサービス形式によるサービス指向アーキテクチャ(SOA)を使用したクラウドを使用した分散型システムを使用する。
海外ではマイクロサービスの設計の失敗事例が数多くあり、設計思想に何らかの欠陥があるのではないかと考えた。
事例を研究した結果、アメリカ式のドメイン駆動設計の戦略的設計に問題があるという結論に達した。
アメリカ式のドメイン駆動設計の戦略的設計は、テクノジーに偏重した高スペック重視の設計方法。
スペックを高めるために、クラウド上の外部サービスを使用した結果、設計が複雑化し、サービスが追加されるほど複雑化が加速し、分散システムが破綻する。
マイクロサービス形式による分散型システムにはシンプルで簡易な設計思想が必要である。
そこで、ロシア式のドメイン駆動設計の戦略的設計であるICSアプローチを使用する方法を紹介したいと思う。

ICSアプローチ

ICSアプローチとは

ICSアプローチとはInformation(情報)、Cyber(サイバー)、Synergy(相乗)の3つの概念を統括したロシア式ドメイン駆動設計による戦略的設計
ICSアプローチでは以下の3つの機能に焦点を当てている。
・目標に基づくシステムの監視によるエラー検知
・検知したエラーの報告
・メディアへ情報を投射する反射環境の構築

なぜICSアプローチを推奨するのか

ICSアプローチをお勧めしている理由は、「よい商品を売る」よりも「良い商品を売っているという情報」のほうが強力だから。
「世論」の著書であるウォルターリップマンは以下のように論じている。
「人々は、主観的で偏見があり、必然的に世界の精神的イメージが省略された疑似環境を構築します。
ある程度、誰の疑似環境もフィクションです。人々は同じ世界に住んでいるが、彼らは異なる世界で考え、感じている」。

新聞、TVなどのメディアを通してステレオタイプと呼ばれる疑似環境が構築される。
商品などは物質的な限界が存在する。
しかし、情報は物質的な限界はPCのデータ量に左右され、情報を投射することにって人々にステレオタイプを作成し、行動パターンを操作することができる。
そして、SNS、動画サイトの増加によって、情報を投射できる環境は増加している。

ドメイン駆動設計戦略的設計に求められているのはシステムの安定稼働と、システム連結による相乗効果である。
ロシア式のICSアプローチは設計思想がシンプルかつ高スペックなクラウドシステムを使用しなくも実現することができる。

ICSアプローチのビジネスロジックについて

ICSアプローチのビジネスロジックは、戦略レベルの指令から作戦レベルでのメソッドの実行が主な流れとなっている。

戦略とは

戦略とはソ連赤軍の大将軍であるアレクサンドル・スヴェチンが提唱した概念である。
スヴェチンの著書、「戦略」では戦略とは以下の行動と定義されている。
戦争の準備と作戦のグループ化を組み合わせて、軍が戦争によって提唱した目標を達成する技術。
スヴェチンが定義した戦略をドメイン駆動設計が定義している戦略的設計に適用すると以下のようになる。
戦略的設計とは、異なるアプリ間のドメイン層を戦略的目標ごとにグルーピング、連携を行い戦略的目標を達成するための技術。

ビジネスロジックの概要

戦略的目標を達成するためのビジネスロジックでは、サブゴールと呼ばれる中間目標の設定が重要である。
サブゴール内作戦レベルのアプリのメソッドを実行し、実行結果が正常であるならば処理を継続し、それ以外の場合、処理を終了する。
サブゴールを全て達成した場合、処理を終了する。

戦略的目標の定義

戦略的目標を以下のように定義する。
・作戦レベルのアプリを円滑に運用するための環境を用意する。

戦略的目標を達成する手段

ドメイン駆動設計戦略的設計で説明された以下の手段を実行
・共有カーネル
・腐敗防止層
・公開ホストサービス

ビジネスロジック設計の流れ

1.戦略的目標を定義
2.戦略的目標を達成する具体的手段の設定
3.戦略的目標と中間地点となるサブゴールを設定
4.サブゴール内で実行する作戦レベルメソッドを設定

戦略的設計を効率よく行うポイント

戦略的目標を決定した後にサブゴールを考える。作戦レベルのドメイン層のメソッドの内容については後で考える。

分散システムに必要な情報保護

分散システムは情報化によって業務の縦割りを一つのシステムに統合する。
情報が人間の体内の血液のように循環することによって、全てのシステムが正常に稼働する。
そのため、分散システムにおいて情報の保護が最優先に置かれる。
情報の保護を優先するために以下のような設計手法に焦点になる。
・情報の暗号化通信
・情報の共通データ構造の設定
・設定されたデータの書式チェック
分散システムはRestApiによるメッセージ駆動による通信方式になるため、暗号通信によってメッセージ駆動が実現される。

ICSアプローチの機能

ICSアプローチの以下の機能が必要である
・通信に使用する情報モデルの作成
・情報モデルを合成し、情報モデルを組み合わせた情報構造体モデルの作成
・情報構造体モデルのプロパティに設定された値の意味を解釈する解釈機能
・異なるコンテキスト間で通信を行うために接続先URL、ユーザー、パスワードを設定する通信先設定インターフェース機能
・SNS、動画サイトなどへイベント情報を投射するための通知機能

間接アプローチに基づく情報投射

間接アプローチとは

間接アプローチ戦略とは正面衝突を避け、間接的に相手を無力化・減衰させる戦略。
第一次世界大戦後、リデル・ハートによって提唱された。
現代では間接アプローチが重要。
なぜならSNS、動画サイトの登場でユーザー間の反射的反応によってシナジー(相乗)が発生するため。

ハードパワー + ソフトパワーを融合させた心理的威嚇

手段には2つの方法が存在する。
・ハードパワーとは組織の資源 and 人材 and 経済活動を組み合わせて実行される長期持続の力。
・ソフトパワーは商品開発 or イベント企画によって発生する短期の力。ソフトパワーは認知 + 解釈 + 影響の3つの過程を得て共感が広がる。
間接アプローチ戦略ハードパワー + ソフトパワーを組み合わせた心理的威嚇である。
動画、SNSへソフトパワーを投射し、ハードパワーと結びつけることが重要である。

間接アプローチの原則

積極的側面
・目的を手段に適合させよ
・目的を常に念頭に置け
・最小予期線を選択せよ
・最小抵抗線を利用せよ
・代替目標のある作戦線を選択せよ
・状況に対する柔軟性のある、計画および配置を心がけよ

消極的側面
・敵が防御態勢を整えている間は攻撃するな
・一度失敗した作戦線で再攻撃をするな

顧客のターゲッティング方法と投射するイベントの内容について

顧客の要求は、顧客を取り巻いている外部環境によって発生する。
顧客の外部環境を分析、特定し、顧客の行動パターンの該当するイベントを情報媒体に投射することが重要である。
顧客の外部環境は以下の階層で分析することができる。

・顧客を取りまく外部環境の階層
地理・・・住んでいる場所
文化・・・所属している文化、カレンダーから文化の種類を特定
職業・・・職業の違いによって発生する価値観に焦点をあてる
コミュニティ・・・ユーザーが所属しているコミニュティによって生じる行動パターン
経済・・・経済活動によって生じる行動パターン

情報媒体へ投射するイベントは以下の2種類を用意する
・ネガティブフィードバック・・・顧客が損だと感じるイベント。
・ポジティブフィードバック・・・顧客が得だと感じるイベント。

重要なのは顧客の意識決定のOODAループに入ることである。
OODAループは、観察(Observe)- 情勢への適応(Orient)- 意思決定(Decide)- 行動(Act)のループである。
観察(Observe)- 情勢への適応(Orient)の意識決定へ侵入することで、ソフトパワーを認知 + 解釈 + 影響の過程を得て拡大し、シナジー(相乗)が発生する

結論

最終的に目指すべきドメイン駆動設計の方法とはロシア式 +アメリカ式 のハイブリッドアプローチ。
ロシア式で戦略的設計を行い、アメリカ式でアプリ内開発を行う。
アプリ内開発をアメリカの設計方式で行えば、複雑な設計もアプリ内で完結するためシステム全体には広がらない。
ICSアプローチに基づくとドメイン駆動設計のコアドメインとサブドメインの境界線も明確になる。
・コアドメイン・・・資材発注、販売、在庫管理など組織の経済活動を担当する業務
・サブドメイン・・・システム間のエラー検出、エラー通知、別メディアへの情報投射
ロシア式 +アメリカ式のドメイン駆動設計の設計方式はお互いを補完しあう関係にある設計方式である。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away