Domain-Driven Design with Java - A Practitioner's Guide: Create simple, elegant, and valuable software solutions for complex business problems (Paperback)
暫譯: 以 Java 為基礎的領域驅動設計:實務指南 - 為複雜商業問題創建簡單、優雅且有價值的軟體解決方案 (平裝本)

Chandrasekaran, Premanand, Krishnan, Karthik

買這商品的人也買了...

相關主題

商品描述

Adopt a practical and modern approach to architecting and implementing DDD-inspired solutions to transform abstract business ideas into working software across the entire spectrum of the software development life cycle

Key Features

- Implement DDD principles to build simple, effective, and well-factored solutions
- Use lightweight modeling techniques to arrive at a common collective understanding of the problem domain
- Decompose monolithic applications into loosely coupled, distributed components using modern design patterns

Book Description

Domain-Driven Design (DDD) makes available a set of techniques and patterns that enable domain experts, architects, and developers to work together to decompose complex business problems into a set of well-factored, collaborating, and loosely coupled subsystems.

This practical guide will help you as a developer and architect to put your knowledge to work in order to create elegant software designs that are enjoyable to work with and easy to reason about. You'll begin with an introduction to the concepts of domain-driven design and discover various ways to apply them in real-world scenarios. You'll also appreciate how DDD is extremely relevant when creating cloud native solutions that employ modern techniques such as event-driven microservices and fine-grained architectures. As you advance through the chapters, you'll get acquainted with core DDD's strategic design concepts such as the ubiquitous language, context maps, bounded contexts, and tactical design elements like aggregates and domain models and events. You'll understand how to apply modern, lightweight modeling techniques such as business value canvas, Wardley mapping, domain storytelling, and event storming, while also learning how to test-drive the system to create solutions that exhibit high degrees of internal quality.

By the end of this software design book, you'll be able to architect, design, and implement robust, resilient, and performant distributed software solutions.

What you will learn

- Discover how to develop a shared understanding of the problem domain
- Establish a clear demarcation between core and peripheral systems
- Identify how to evolve and decompose complex systems into well-factored components
- Apply elaboration techniques like domain storytelling and event storming
- Implement EDA, CQRS, event sourcing, and much more
- Design an ecosystem of cohesive, loosely coupled, and distributed microservices
- Test-drive the implementation of an event-driven system in Java
- Grasp how non-functional requirements influence bounded context decompositions

Who this book is for

This book is for intermediate Java programmers looking to upgrade their software engineering skills and adopt a collaborative and structured approach to designing complex software systems. Specifically, the book will assist senior developers and hands-on architects to gain a deeper understanding of domain-driven design and implement it in their organization. Familiarity with DDD techniques is not a prerequisite; however, working knowledge of Java is expected.

商品描述(中文翻譯)

採用實用且現代化的方法來架構和實現受領域驅動設計(DDD)啟發的解決方案,將抽象的商業理念轉化為在整個軟體開發生命週期中可運作的軟體。

主要特點

- 實施DDD原則以構建簡單、有效且良好分層的解決方案
- 使用輕量級建模技術來達成對問題領域的共同理解
- 使用現代設計模式將單體應用程式分解為鬆耦合的分散式元件

書籍描述

領域驅動設計(DDD)提供了一套技術和模式,使領域專家、架構師和開發人員能夠共同合作,將複雜的商業問題分解為一組良好分層、協作且鬆耦合的子系統。

這本實用指南將幫助您作為開發人員和架構師,將您的知識付諸實踐,以創建優雅的軟體設計,讓工作變得愉快且易於理解。您將從領域驅動設計的概念介紹開始,並發現各種在現實世界場景中應用這些概念的方法。您還將了解到DDD在創建雲原生解決方案時的極大相關性,這些解決方案採用了事件驅動微服務和細粒度架構等現代技術。隨著您逐步深入各章,您將熟悉核心DDD的戰略設計概念,如普遍語言、上下文圖、邊界上下文,以及聚合、領域模型和事件等戰術設計元素。您將了解如何應用現代輕量級建模技術,如商業價值畫布、Wardley映射、領域敘事和事件風暴,同時學習如何測試驅動系統,以創建具有高內部質量的解決方案。

在這本軟體設計書的結尾,您將能夠架構、設計和實現穩健、彈性和高效能的分散式軟體解決方案。

您將學到的內容

- 發現如何發展對問題領域的共同理解
- 建立核心系統與周邊系統之間的明確區分
- 確定如何演進和分解複雜系統為良好分層的元件
- 應用如領域敘事和事件風暴等詳細化技術
- 實施事件驅動架構(EDA)、命令查詢責任分離(CQRS)、事件來源等
- 設計一個凝聚、鬆耦合且分散的微服務生態系統
- 在Java中測試驅動事件驅動系統的實現
- 理解非功能性需求如何影響邊界上下文的分解

本書適合對象

本書適合中級Java程式設計師,旨在提升他們的軟體工程技能,並採用協作和結構化的方法來設計複雜的軟體系統。具體而言,本書將幫助資深開發人員和實務架構師深入理解領域驅動設計並在其組織中實施。對DDD技術的熟悉並不是先決條件;然而,預期具備Java的工作知識。

作者簡介

Premanand Chandrasekaran is a technology leader and change agent, with a solid track record of leading large technology teams and helping businesses deliver mission-critical problems while exhibiting high internal and external quality. In the past two decades, he has had the pleasure of helping a variety of clients and domains, including financial services, online retailers, education, and healthcare startups. His specialties include technical innovation, architecture, continuous delivery, agile/iterative transformation, and employee development. When not fiddling with his trusty laptop, he spends time cutting vegetables, cooking, playing video games, and analyzing the nuances of the game of cricket.

Karthik Krishnan is a technology leader with over 25 years of experience in designing and building large-scale enterprise solutions across financial and retail domains. He has played numerous technical roles in leading product development for major financial institutions. He is currently serving the role of Technical Principal at Thoughtworks. He is passionate about platform thinking, solution architecture, application security and strives to be known as a coding architect. His most recent assignment entailed leading a large technology team helping their clients in their legacy modernization journey with Cloud. When not working, he spends time practicing playing tunes on his musical keyboard.

作者簡介(中文翻譯)

Premanand Chandrasekaran 是一位技術領導者和變革推動者,擁有領導大型技術團隊的豐富經驗,並幫助企業解決關鍵任務問題,同時展現出高內部和外部質量。在過去的二十年中,他有幸協助各種客戶和領域,包括金融服務、線上零售、教育和醫療創業公司。他的專長包括技術創新、架構、持續交付、敏捷/迭代轉型以及員工發展。當他不在使用他心愛的筆記型電腦時,他會花時間切菜、烹飪、玩電子遊戲,並分析板球比賽的細微差別。

Karthik Krishnan 是一位技術領導者,擁有超過 25 年的經驗,專注於設計和構建大型企業解決方案,涵蓋金融和零售領域。他在主要金融機構的產品開發中擔任過多個技術角色。目前,他在 Thoughtworks 擔任技術首席職位。他對平台思維、解決方案架構和應用安全充滿熱情,並努力成為一位知名的編碼架構師。他最近的任務是領導一個大型技術團隊,幫助客戶在雲端進行遺留系統現代化的旅程。當不在工作時,他會花時間練習在他的音樂鍵盤上演奏旋律。

目錄大綱

1. The Rationale for Domain-Driven Design
2. The Mechanics of Domain-Driven Design
3. Where and How Does DDD Fit?
4. Domain Analysis and Modeling Using EventStorming
5. Implementing Domain Logic
6. Implementing the User Interface - Task-Based
7. Implementing Queries
8. Implementing Long-Running Flows
9. Integrating with External Systems
10. Beginning the decomposition journey
11. Decomposing into finer-grained components
12. Beyond Functional Requirements

目錄大綱(中文翻譯)

1. The Rationale for Domain-Driven Design

2. The Mechanics of Domain-Driven Design

3. Where and How Does DDD Fit?

4. Domain Analysis and Modeling Using EventStorming

5. Implementing Domain Logic

6. Implementing the User Interface - Task-Based

7. Implementing Queries

8. Implementing Long-Running Flows

9. Integrating with External Systems

10. Beginning the decomposition journey

11. Decomposing into finer-grained components

12. Beyond Functional Requirements