Home © Rinat Abdullin 🌟 AI Research · Newsletter · ML Labs · About

DDD/ES - Missing Guidance

Over the course of last few days I received a lot of feedback on the IDDD sample for Aggregates with Event Sourcing (ES) published. I tried to address some questions either by replying or by adding more documentation to the actual project (which resulted in commits like this one).

However, there still is a set of questions that can't be addressed within that specific sample - this will overload sample and hijack the original intent of showing how a single aggregate works with event sourcing.

As it seems, the missing guidance currently includes following topics:

  • Added: High-level overview of DDD/ES architecture (a la Lokad) and building blocks in various deployment configurations. Overview of available case studies; influence by DDD and Event Sourcing.
  • Added: Reality vs Domain Model vs Implementation; capturing domain model via coding exercise and evolving it towards deeper insight; features of good domain models.
  • Added: Detailed overview of building blocks that can be used for DDD/ES architecture; how to model, design, test and maintain each block individually and as a part of bounded context:
    • Application Services
    • Aggregates with Event Sourcing
    • View Projections
    • Tasks
    • Event Ports
  • Dealing with remote services (or integration points) that can fail, timeout or require case-by-case automated performance adjustment (e.g. throttling);
  • Inter-aggregate relations, sources of truth, eventual consistency and compensating actions;
  • Capturing long-running business processes in a way that both matches Domain-driven Design (DDD) and is generally simpler to deal with in practice than sagas;
  • Integrating multiple bounded contexts together (e.g. when you need to share some information between);
  • Added: Developing Clients UIs: composition of UI and data, eventual consistency and task-based UIs, specifics of targeting multiple platforms (Web, Desktop clients, mobile apps), authorization;
  • Maintenance, debugging, release and failure management of systems implemented with DDD+ES approach;
  • Addressing specific scalability and performance requirements; cloud deployments.
  • Added: Multi-tenancy, tenant-specific customizations and processing. Deployments and maintenance of multi-tenant systems.
  • Added: Building occasionally-connected systems. Concurrent editing, conflict resolution strategies and merging. Feedback to user.
  • Added: Migrating legacy systems to DDD/ES architecture; PROs and CONs; justifying risks and costs.
  • Added: Appendix for .NET developers:
    • Structuring Visual Studio Solutions
    • Developing ASP.NET MVC Web applications
    • Windows Azure practices for DDD/ES systems
    • Helpful tools and frameworks

Does this list of topics cover all black spots, or are there any other areas that need some coverage?

Published: July 19, 2012.

🤗 Check out my newsletter! It is about building products with ChatGPT and LLMs: latest news, technical insights and my journey. Check out it out