Domain-Driven Design (DDD) has rightfully earned staying power as a software architecture style. Strictly speaking, its essence is abstract from, and upstream of, any particular implementation. But at some point the rubber must meet the road. Domain object classes must be coded, and their instances persisted somehow.
In-Memory Data Grids (IMDGs) typically incorporate a key-value data model. Thus the question arises, "how do I impose my domain model onto an IMDG?" In other words, assuming Maps are the primary abstraction available for storing data in an IMDG, what set of Maps should I have for storing my domain model? How should I handle inter-object relationships? What about transactions, especially those modifying multiple domain objects at a time?
This talk will dig into those questions, and provide answers distilled over years of experience using IMDGs to manage domain objects in DDD-based applications. The distilled answers are essentially a set of patterns for using DDD with IMDGs. The talk will also touch on how new capabilities, like GraphQL, are changing what is possible when using DDD with IMDGs.
Architects and developers intending to use DDD with IMDGs in their enterprise applications will benefit from the experience collected and distilled into these patterns, as they contemplate how best to resolve forces in their particular contexts.
Currently Coherence Product Manager at Oracle, Randy was on the Coherence engineering team for ten years prior, responsible for feature development and worldwide customer engagement. Prior to joining Oracle, Randy was Chief Architect of IQNavigator in Denver, Colorado, and also served on the Technical Advisory Board of Rally Software Development Corporation.
Along the way, Randy was honored to have the opportunity to contribute to a number of books on software architecture, with chapters in Martin Fowler's Patterns of Enterprise Application Architecture, O'Reilly's 97 Things Every Software Architect Should Know (and 97 Things Every Programmer Should Know), and Floyd Marinescu's EJB Design Patterns. He still speaks very frequently at software conferences.
Randy's technical expertise includes enterprise application architecture, application performance management, domain object persistence, process modeling and simulation, and requirements analysis and specification, among others. He has been a practitioner of Domain-Driven Design since his Smalltalk days in the late 1980s, though the term wasn't coined until Eric Evans' 2003 book of the same name, and Randy collaborated with Eric to organize the first DDD Summit in 2012. Randy has been working with Coherence since 2007.
As Coherence Product Manager he is amazed on a daily basis to see the impressive high-scale enterprise applications being developed and operated by companies all over the world in a variety of industries, and he is dedicated to developing powerful technology to help them continue to do so.