Home > Store > Software Development & Management > Architecture and Design

larger cover

Add To My Wish List

Implementing Domain-Driven Design

Register your product to gain access to bonus material or receive a coupon.

  • Description
  • Extras
  • Reviews
  • Sample Content

Product Author Bios

Vaughn Vernon is a veteran software craftsman, with more than 25 years of experience in software design, development, and architecture. Vaughn is a thought leader in simplifying software design and implementation using innovative methods in distributed computing. Vaughn has been programming with object-oriented languages since the 1980s and applying the tenets of Domain-Driven Design since his Smalltalk domain modeling days in the early 1990s. His experience spans a wide range of business domains, including aerospace, environmental, geospatial, insurance, medical and health care, and telecommunications. He has also succeeded in technical endeavors creating reusable frameworks, libraries, and implementation acceleration tools. Vaughn consults and speaks internationally, and has taught his Implementing Domain-Driven Design classes on multiple continents. You can read more about his latest efforts at www.VaughnVernon.co and follow him on Twitter here: @VaughnVernon.

“For software developers of all experience levels looking to improve their results, and design and implement domain-driven enterprise applications consistently with the best current state of professional practice, Implementing Domain-Driven Design will impart a treasure trove of knowledge hard won within the DDD and enterprise application architecture communities over the last couple decades.”

–Randy Stafford, Architect At-Large, Oracle Coherence Product Development

 

“This book is a must-read for anybody looking to put DDD into practice.”

–Udi Dahan, Founder of NServiceBus

 

Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools. Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations.

 

Building on Eric Evans’ seminal book, Domain-Driven Design, the author presents practical DDD techniques through examples from familiar domains. Each principle is backed up by realistic Java examples–all applicable to C# developers–and all content is tied together by a single case study: the delivery of a large-scale Scrum-based SaaS system for a multitenant environment.

 

The author takes you far beyond “DDD-lite” approaches that embrace DDD solely as a technical toolset, and shows you how to fully leverage DDD’s “strategic design patterns” using Bounded Context, Context Maps, and the Ubiquitous Language. Using these techniques and examples, you can reduce time to market and improve quality, as you build software that is more flexible, more scalable, and more tightly aligned to business goals.

 

Coverage includes

  • Getting started the right way with DDD, so you can rapidly gain value from it
  • Using DDD within diverse architectures, including Hexagonal, SOA, REST, CQRS, Event-Driven, and Fabric/Grid-Based
  • Appropriately designing and applying Entities–and learning when to use Value Objects instead
  • Mastering DDD’s powerful new Domain Events technique
  • Designing Repositories for ORM, NoSQL, and other databases

 

Customer Reviews

5 of 5 people found the following review helpful
5.0 out of 5 stars A book for every software architect and developer, April 6, 2013
By 
T. Anderson (PA USA) - See all my reviews
(VINE VOICE)    (TOP 1000 REVIEWER)    (REAL NAME)   
This review is from: Implementing Domain-Driven Design (Hardcover)
Agile is not easy and implementing Domain-Driven Design (DDD) is not easy. I think my favorite part of the book is that the author realizes that, and also has a realistic perspective on what it takes to successfully use agile processes and DDD.

The book starts out with a really nice overview of DDD. By the time you are done the first chapter you have a pretty good high level picture of what DDD is all about. One topic he really drives home is Ubiquitous Language.

Ubiquitous Language is a shared team language that defines a certain domain. When you are reading about Ubiquitous Language it may seem like something that just happens on its own. It isn't. An explicit domain language should be defined, it should not just be allowed to implicitly come about. This same concept has been around for years in Water Fall, Unified Process, RUP, and other processes. It has always been a very important part of the software development process, so don't discount it... Read more
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


6 of 7 people found the following review helpful
5.0 out of 5 stars Superb DDD book, March 8, 2013
This review is from: Implementing Domain-Driven Design (Hardcover)
After reading Evan's excellent book I was still left searching for additional examples. Vernon's book with its multiple examples really helped drive home concepts of DDD, and bring in new concepts such as Events. I think the thing that I benefited most from was Vernon's examples of Bounded Contexts, something I admittedly skimmed over in Evan's but in hindsight I would now rate as one of the most important concepts for developing models that align with business sector needs. The best development book I have ever bought!
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


2 of 2 people found the following review helpful
5.0 out of 5 stars great augmentation to Evans' work, April 7, 2013
Amazon Verified Purchase(What's this?)
This review is from: Implementing Domain-Driven Design (Hardcover)
This book is a great follow-up to Evans's work on DDD. The practical examples on strategic design and bounded contexts were especially helpful. Evans's book on DDD can be too abstract in some of the more advanced concepts of DDD and I found this book helpful in clarifying some of those concepts.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


Share your thoughts with other customers:
 See all 13 customer reviews...

Online Sample Chapter

Implementing Domain-Driven Design: Aggregates

Table of Contents

 

Foreword         xvii

Preface          xix

Acknowledgments         xxix

About the Author          xxxiii

Guide to This Book           xxxv

 

Chapter 1: Getting Started with DDD          1

Can I DDD?    2

Why You Should Do DDD    6

How to Do DDD    20

The Business Value of Using DDD    25

The Challenges of Applying DDD    29

Fiction, with Bucketfuls of Reality    38

Wrap-Up    41

 

Chapter 2: Domains, Subdomains, and Bounded Contexts         43

Big Picture   43

Why Strategic Design Is So Incredibly Essential    53

Real-World Domains and Subdomains    56

Making Sense of Bounded Contexts    62

Sample Contexts    72

Wrap-Up    84

 

Chapter 3: Context Maps    87

Why Context Maps Are So Essential    87

Wrap-Up    111

 

Chapter 4: Architecture          113

Interviewing the Successful CIO    114

Layers   119

Hexagonal or Ports and Adapters    125

Service-Oriented    130

Representational State Transfer–REST    133

Command-Query Responsibility Segregation, or CQRS    138

Event-Driven Architecture    147

Data Fabric and Grid-Based Distributed Computing    163

Wrap-Up    168

 

Chapter 5: Entities          171

Why We Use Entities    171

Unique Identity    173

Discovering Entities and Their Intrinsic Characteristics    191

Wrap-Up    217

 

Chapter 6: Value Objects           219

Value Characteristics    221

Integrate with Minimalism    232

Standard Types Expressed as Values    234

Testing Value Objects    239

Implementation   243

Persisting Value Objects    248

Wrap-Up    263

 

Chapter 7: Services           265

What a Domain Service Is (but First, What It Is Not)    267

Make Sure You Need a Service    268

Modeling a Service in the Domain    272

Testing Services   281

Wrap-Up    284

 

Chapter 8: Domain Events           285

The When and Why of Domain Events    285

Modeling Events    288

Publishing Events from the Domain Model    296

Spreading the News to Remote Bounded Contexts    303

Event Store    307

Architectural Styles for Forwarding Stored Events    312

Implementation    318

Wrap-Up    331

 

Chapter 9: Modules          333

Designing with Modules    333

Basic Module Naming Conventions    336

Module Naming Conventions for the Model    337

Modules of the Agile Project Management Context   340

Modules in Other Layers    343

Module before Bounded Context    344

Wrap-Up    345

 

Chapter 10: Aggregates          347

Using Aggregates in the Scrum Core Domain    348

Rule: Model True Invariants in Consistency Boundaries    353

Rule: Design Small Aggregates    355

Rule: Reference Other Aggregates by Identity    359

Rule: Use Eventual Consistency Outside the Boundary    364

Reasons to Break the Rules    367

Gaining Insight through Discovery   370

Implementation    380

Wrap-Up   388

 

Chapter 11: Factories          389

Factories in the Domain Model    389

Factory Method on Aggregate Root    391

Factory on Service   397

Wrap-Up    400

 

Chapter 12: Repositories          401

Collection-Oriented Repositories    402

Persistence-Oriented Repositories    418

Additional Behavior    430

Managing Transactions   432

Type Hierarchies    437

Repository versus Data Access Object    440

Testing Repositories    441

Wrap-Up    448

 

Chapter 13: Integrating Bounded Contexts            449

Integration Basics    450

Integration Using RESTful Resources          458

Integration Using Messaging    469

Wrap-Up   508

 

Chapter 14: Application           509

User Interface     512

Application Services    521

Composing Multiple Bounded Contexts    531

Infrastructure    532

Enterprise Component Containers    534

Wrap-Up    537

 

Appendix A: Aggregates and Event Sourcing: A+ES   539

Inside an Application Service    541

Command Handlers    549

Lambda Syntax    553

Concurrency Control    554

Structural Freedom with A+ES    558

Performance    558

Implementing an Event Store    561

Relational Persistence    565

BLOB Persistence    568

Focused Aggregates    569

Read Model Projections    570

Use with Aggregate Design   573

Events Enrichment     573

Supporting Tools and Patterns     576

Contract Generation    580

Unit Testing and Specifications    582

Event Sourcing in Functional Languages    583

 

Bibliography           585

Index           589

 

Sample Pages

Download the sample pages (includes Chapter 10 and Index)

 
Best Value

Book + eBook Bundle  $89.98  $53.99

Book Price $39.99
eBook Price $14.00
eBook formats included

Buy

This book includes free shipping!

Buy

Book  $49.99  $39.99

Usually ships in 24 hours.

This book includes free shipping!

Buy

eBook (Watermarked)  $39.99  $31.99

Includes EPUB, MOBI, and PDF
About eBook Formats

This eBook includes the following formats, accessible from your Account page after purchase:

ePubEPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

MOBIMOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

Adobe ReaderPDFThe popular standard, used most often with the free Adobe® Reader® software.

This eBook requires no passwords or activation to read. We customize your eBook by discretely watermarking it with your name, making it uniquely yours.

Purchase Reward: One Month Free Subscription
By completing any purchase on InformIT, you become eligible for an unlimited access one-month subscription to Safari Books Online.

Get access to thousands of books and training videos about technology, professional development and digital media from more than 40 leading publishers, including Addison-Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media, Wrox, Apress, and many more. If you continue your subscription after your 30-day trial, you can receive 30% off a monthly subscription to the Safari Library for up to 12 months. That's a total savings of $199.