キャラクター紹介: Jack Chen は、「Pet Store」の主任アーキテクチャ アーキテクトであり、ソフトウェア設計とモデリングの豊富な経験を持っていますが、新しいものに対しては懐疑的です。 「ペットストア」の総支配人である王さんは、米国留学後中国に帰国し、「ペットストア」のウェブサイトを設立した。途中で簡単に成功したことで、彼は頑固で横暴なやり方を身につけた。 スパーク - ジャック・チェンの大学の同級生であり、商用ソフトウェア会社のシニアコンサルティングコンサルタント。最近、私は「ドメイン駆動設計」のベストプラクティスを推進することに熱心に取り組んでいます。 導入 私たちが耳にした奇跡の少年の起業物語と同じように、大西洋から泳いで帰ってきた数匹のカメが、インターネット上でペットを販売するオンラインストアを開くという素晴らしいアイデアを思いつきました。幸運にも、彼らは投資家を見つけ、非常に順調にやっています。しかし、時間が経つにつれて、バスケットに寄せられる要求の増大によって、「完璧な」技術アーキテクチャは圧倒されるようになりました。同社の主任建築家ジャック・チェン氏は、ここ数ヶ月の「些細な」要求のせいで数日間不眠症に悩まされている。 ジャック・チェンは月曜日の早朝、興奮した王総裁にオフィスに呼び出され、王総裁が提案したアイデアにすぐに驚愕した。 「いいアイデアがあるんです。ペット病院のオンライン予約サービスを提供できるんです。ただ売るのではなく、これが何を意味するかわかりますか?これは年間生産高が数百億の市場です!!!」 「しかし、王さん、私たちのシステムは、このような非物理的なサービスの予約と販売をサポートできません。元のウェブサイトに大きな影響を与える可能性があります。このビジネスを総合的に評価するには、3か月かかります...」 ジャック・チェンは、すぐに攻撃的な CEO のワン氏に遮られた。「3 か月の評価期間ですか? この新規事業を 2 か月以内に立ち上げる必要があります。投資家は私のアイデアを高く評価しており、このプロジェクトをすぐに立ち上げるよう要求しています。来年の IPO 価格の引き上げに役立つ可能性があります。わかりましたか? すぐに実行してください!」 評価する 「ああ、あのクソファッティ・ワンが正しいのかもしれない。テクノロジーとビジネスが混在するこの混乱を整理する時が来た。」 30 分間独り言を言った後、ジャック・チェンはようやく平常心に戻った。私は、私たちが今どのような状況にあるか、そして「ペット病院にオンライン予約サービスを提供する」というこのクソ需要に対応するためにどのような変化が必要なのかを考えてみるべきだと思う。そこで、ジャック・チェンはすぐにホワイトボードに次のユースケース図を描きました。 図1 オリジナルのペットショップユースケースの概要 特別製品「オンライン予約」をサポートするために、次のとおりほとんどのユースケースに影響します。 製品情報には、「予約時間」の属性を追加する必要があります。これは、顧客が注文時に予約を識別するための重要な要素として使用されます。 「オンライン予約」は仮想商品です。実際に検査、梱包、発送する必要はありません。本当にそんなことをしたら私は愚か者です。 各ペット病院は1日に一定数の予約しか受け付けられません。その意味では、物理的な商品と似た在庫概念を持っています。でも、どうやって表現したらいいのでしょうか? 最も恐ろしいのは、仮想商品ビジネスをサポートするために、影響を受けるすべてのユースケースを本当にリファクタリングする必要があるのかということです。どうすれば、これらの再構築を 2 か月以内に完了できるのでしょうか。 銀の弾丸 退屈したジャック・チェンは何度も王氏のオフィスのドアの周りをうろついたが、中国語と英語で浴びせられる屈辱と罵倒の激しい嵐に立ち向かう勇気はなかった。 「もしかしたら希望はあるかもしれない。このシステム再構築の問題を解決できる特効薬があるとどこかで聞いたような気がする。」 「くそっ、Spark がくれたドメイン駆動設計の本をモニターの下に置いたのは誰だ? 彼はこの本が彼のプロジェクトにもたらした魔法のような変化についてずっと説教してきたんだ。その力を試してみようかな。」 「わかりました、Spark さん、あなたが勧めてくれた本は素晴らしいし、あなたの言うことも理にかなっていると思います。私はそれを読んで、ドメイン セグメンテーション、エンティティ、サービス、値オブジェクトなどの概念を理解しましたが、まだやり方がよくわかりません。リファクタリング プロジェクトから得たベスト プラクティスを直接教えてもらえませんか。そうしないと、答えられないと Fatty Wang Zhou Yi が私を放っておいてくれません!」この本を読んで、ジャック・チェンは多くのことを学んだと感じましたが、どこから始めればよいのか分かりませんでした。ドメインモデリングの先駆者である Spark に電話をかけるのが、問題を解決する最も早い方法かもしれません。 「何だ、この質問は時間がかかるのか?大丈夫、もう君のところに来たんだから、ゆっくり話してくれ」とジャック・チェンがスターバックスのコーヒー+KFCのファミリーバケット+九九のアヒルの首+お世辞の笑顔を持ってスパークのドアの前に現れた。 説教 ジャック・チェン氏の現状とニーズの説明を聞いた後、スパーク氏は冷静にこう言った。「これは非常に簡単です。今必要なのは次のことだけです。」 大規模な構造を使用してシステムをドメイン化する この要件によって影響を受ける領域と外部インターフェースを確認する 貴社に適したドメイン駆動設計テクノロジーフレームワークを構築 要件の緊急性に応じて各領域の設計とコーディングをリファクタリングする 次の順番で練習してみましょう: 1. 分野別概要 Jack Chen はすぐに以前描いたユースケースを描き直し、Spark を期待に満ちた目で見つめ、承認を待ちました。 「あなたの間違いは、ケースやオペレータのアイデンティティを重視しすぎていることです。ドメインの分割は、機能や役割に基づいていません。一般的に言えば、凝集度の高いユースケースを 1 つのコンテキストにグループ化します。ドメインをより閉じ、同じビジネス言語環境を持つようにしてください。たとえば、あなたのユースケース図に基づいて、次のドメインを描きます。」 図2 ペットショップのチャネルマップ チャネル図は、ビジネスドメインモデリングに非常に役立つツールであり、実行シーケンスとシャーディングの役割を同時に表現できます。 2. 影響を受ける領域とインターフェースを見つける ドメインの観点から見ると、製品が公開するインターフェースのみがさまざまなドメインに影響を与えます。再構築には、製品ドメイン(ProductDomain)と製品情報を読み取るサービスインターフェース(GetProductService)の構築を優先する必要があります。 また、[図2]の緑色でマークされたユースケースは、「オンライン予約」などの仮想商品へのサポートを追加するためにコードのリファクタリングが必要な部分です。この部分の作業の期限が厳しい場合は、パターンを使用してコードをリファクタリングすることを優先できます。これにより、後でドメイン駆動設計方法を使用して再度リファクタリングすることが容易になります。 3. 技術的枠組みの構築 これは、「ドメイン駆動設計」という本ではあまり触れられていないことです。これには、会社の元の技術フレームワークを組み合わせて、変革コストを最小限に抑え、メリットを最大化する方法でドメイン駆動型の技術フレームワークを確立する必要があります。以下は、広く使用されているドメイン駆動型テクノロジ フレームワークです。この上にさらにパーソナライズされた要素を追加して、企業独自のフレームワークを形成することができます。 図3 ドメイン駆動設計リファレンス技術フレームワーク 基本的に、このフレームワークのさまざまな要素は「ドメイン駆動設計」という本に記載されていますが、ここでは、このフレームワークを確立することについての私の個人的な理解を説明する必要があります。 ドメインは、ドメイン サービス (ページ、AJAX、ESB 呼び出し) のみを外部に公開します。その他のすべてのドメイン クラスはパッケージ内で閉じられており、外部からは見えません。 基本ウェアハウスの紹介。基本ウェアハウスは、多数のよく使用されるツール メソッド、ビジネス オブジェクトのライフ サイクル メンテナンス (エンティティ OR マッピング、DAO 呼び出し)、および外部インターフェイス呼び出しをカプセル化する抽象ウェアハウスです。ビジネス ウェアハウスにおけるコーディングの不必要な重複と複雑さを軽減できます。ビジネス ウェアハウスは、基本ウェアハウスを継承するサブクラスです。 インフラストラクチャの参照。インフラストラクチャは、非ドメイン呼び出しの参照スタブを運ぶために使用されます。ドメイン駆動設計を使用する場合、多くの場合、古いシステムの再構築から始めます。現時点では、すべてのビジネス サブシステムがドメイン サービス呼び出しを通じて相互に呼び出すことを要求することはできません。この場合、インフラストラクチャを使用して、ビジネス ウェアハウスのビジネス メソッド内の呼び出しを美しくカプセル化できます。 4. 影響を受ける領域の設計とコーディングをリファクタリングする 図4 再構築された商品詳細ページのクラス図 Spark は、製品詳細ページを例として、ドメイン駆動設計に基づいてリファクタリングされたクラス図を示します。 予約時間帯や予約病院などの製品の拡張情報を格納するための動作テーブル ProductExt を追加します。そして、テーブルに 1 対 1 で対応するエンティティ Entity を作成します。 基本リポジトリリポジトリは、インフラストラクチャ内のDAOを介してエンティティに対する操作(create()、update()、delete()、findById()、findList()など)をカプセル化します。 製品ビジネス ウェアハウス ProductRepository は、基本ウェアハウスを拡張します。クライアント プログラムは、productId をパラメーターとして使用し、ProductVo.getProduct() メソッドを通じて製品の詳細のビジネス実装を取得できます。ビジネス ウェアハウスのパブリック メソッドは外部に値オブジェクトを返すため、エンティティ タイプはクライアント プログラムに直接公開されません。 GetProductService サービス クラスは、invoke() サービス メソッドを通じて外部 (製品詳細ページ) にサービスを提供します。ビジネス ウェアハウス内のビジネス メソッドを呼び出し、インターフェイスを標準化します。 トランザクションは DomainService のinvoke() メソッドで構成され、つまり、ユースケースの粒度でトランザクション制御が実行されます。 終わり スパークの助けにより、ジャック・チェンは窮地から無事脱出した。彼は現在、社内で独自のドメイン駆動設計フレームワークを積極的に推進しており、同社の Web サイトは 3 週間に 1 回のペースで再構築され、急速に反復され進化しています。 Spark と同様に、彼もドメイン駆動の伝道者になりました。 出典: InfoQ 原題: 大規模ウェブサイトの複雑な業務を継続的に再構築する方法: 全プロセスドメインモデリングの実践 キーワード: 大規模、ウェブサイト、複雑、ビジネス、継続的、再構築、プロセス全体、分野、モデリング、実践、ウェブマスター、ウェブサイトのプロモーション、収益化 |
<<: ウェブマスター3年間の経験から、ウェブサイト構築のポイントを「スパイ」
南方都市報によると、昨日、「長城ブロードバンドエンジニア」という認証情報を持つ「スーパー新人」という...
ウェブマスターの意見では、dogyun は中国の商人の間で非常に信頼性の高い技術と非常に完全な機能を...
今日、著者は偶然ウェブマスターの統計にログインし、トラフィックが5,000以上のIPアドレスで急増し...
colocrossing がブラックフライデーに素晴らしい VPS のヒントを提供してくれました。お...
今年も夏休みがやってきました。今年の夏休みは特に「暑い」です。『王者栄耀』の人気は上昇中です。『王者...
2012年に1年間放浪しましたが、何も得られませんでした。 2 日前に、2013 年に行うことの 1...
ウェブサイトの外部リンクを構築する場合、多くの場合、外部リンク チャネルの拡張にほとんどの時間を費や...
テキスト挿入は、重要な単語を長くしたり、その意味を強調したりするために、テキストに重要でない要素を挿...
【CCIDnetニュース】6月30日、中国当局からの苦情を受けて、グーグルは中国政府発行のライセンス...
アマゾン ウェブ サービスは2022年12月15日、上海市徐匯区政府と協力し設立した上海アマゾン ウ...
Baidu は長い間、新しいサイトを組み込んでいません。この間、私たちは Baidu に新しいサイト...
vpspride ドメイン名は に登録され、管理されていない VPS と管理された VPS およびサ...
昨年、業界アナリストは「クラウド コンピューティングの減速」が懸念されると警告しました。これは、予算...
マーケティングの本当の意味は私たちの日常生活の中にあり、国内のマーケティングトレーニングマスターのト...
ハリウッドのヌード写真スキャンダルに関与した有名人数名の代理人を務める弁護士マーティ・シンガー氏は、...