DDDD 3 [What/Why this]

I jumped right into DDDD 1 without really explaining what this is or why I am doing it. I am going to break a day to explain my reasons for posting this information and what I intend to go through.

 

Those who have had a beer with me at a summit/conference/etc may know that I have been dealing with the unusual combination of messaging and domain driven design together for probably about four years now though there are bits and pieces that are even older than that. Its a favorite discussion topic of mine over a beer… Over the time I have tried many different schemes of getting this working (many of which were drastic failures in my mind) that eventually became workable solutions, each with its own strengths and weaknesses.

 

I presented some of what has been come up with at QCon last year but to be honest I don’t think it was fleshed out enough yet at that point. I wanted to drastically change my slides only a week before the presentation! I have been trying since QCon (about 6 months) to get all of these thoughts put together into a cohesive paper; the problem is that paper quickly becomes more like a book and I find myself rewriting it constantly in search of cohesion. I have probably typed up about 1000 pages of information yet only have about 45 pages to show for it and right now I am still extremely frustrated with those 45 pages.

 

To me a passing thought style delivery is much easier for me to deal with as I can reasonably maintain cohesion over a few pages of information. As such I have decided to just begin throwing up my thoughts / realizations on the subject into blog posts. Hopefully at the end I will have learned a lot by posting all of the material as I find trying to get things written down often forces me to distill them in my own mind to simpler versions. I warn you they may be scattered and/or difficult to follow and may not necessarily be in what “most” would be deemed a correct chronological order. I am unfortunately not a person who can easily sit down and write what is probably a books worth of information in any sort of cohesive manner, nor to I particularly want the stress of trying to do so.

 

Beyond that because much of what I am doing has been done in environments that I have been in I worry about the generality of some of the things I have come across with. These posts also serve as a great way for me to get feedback on those types of issues. I would imagine someone who is reading such a post set probably has at a minimum an exposure to DDD or to messaging; I encourage feedback if you think something that I said is ‘full of it’ because frankly; I may be!

 

When I am done with all of these thoughts I may attempt to seek someone to help me make them more coherent and linear to unify them into one piece of material that can be more easily consumed …

 

 

That said I will do my best to keep cohesion, this is much easier to do when the code starts coming into play … Although I do not have an exact outline for what everything will be here I will be releasing the associated code into a SVN repository that is built upon with each post and that by no way means I will be using vertical slices … I am now looking more at growing that code slowly and organically by attempting to solve new situations brought in through these posts. At the end it should be at the least an interesting bit of code for exploration of the concepts.

 

Some have asked that I start pushing up large amounts of code and discussion early, things like how the messages get dispatched and processed. Over my experiences the largest thing I have learned is that how these things happen is very much dependent upon the needs of the application (especially things like levels/regions of trust, disconnected data access, networking boundaries, and the need for persistent subscriptions). Throughout these posts I will be giving all of the building blocks as well as guidance for how you may want to use them in different scenarios but there is no one size fits all solution (no matter what BizTalk people tell you ;-) ) As I said last night to someone … messaging is like legos, it only requires a bit of creativity to make something not in the picture.

 

 

As for what I intend to post, let me start by saying; there will be ALOT of posts, months worth. I would not be surprised to see DDDD with a three digit number next to it.

 

For the first month or so of posts I think most things will be conceptual but it will include the introduction of a simple in-process messaging framework. I want to look in particular at things like using messages and a fluent interface instead of using DI for domain/infrastructure services.

 

After that I want to continue into some other more advanced areas of distributed meshing, some things I want to cover include basic client server interactions, dealing with data warehouses, peer meshing, load balancing, distributed locking, consistency, versionization of clusters, pure pubsub environments, and much more. To be honest I have no idea how long these will take but I expect a pretty large number with frequent posts.

 

Thrown in throughout these will be other posts that pop into my mind like Application Sagas vs Application Services, Aggregates as Sentries, or my next post Messages are Value Objects. These tend to be more so on the DDD side where the messaging side is deliberately removed. One of our goals in moving our domain to using messages is to make it care about LESS infrastructure, while the messages themselves may be first class citizens in our domain the infrastructure supporting them is not (nor is it really referenced in the domain).

 

I apologize in advance for the lack of cohesion in these posts but hopefully after writing them all I will have a better view of how to make this all cohesive (I hear putting all of the titles on index cards and moving them around on a wall works pretty well but would love to hear any successes people have had with things like this).

This entry was posted in DDD BDD Language, DDDD. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

3 Responses to DDDD 3 [What/Why this]

  1. jdn says:

    I, for one, am glad to see you do this. Though we have had differences of interpretation about ‘ubiquitous language’, I’m really interested to see how you tie DDD and messaging together. I have a feeling I’m going to be able a learn a lot from this series.

    Thanks.

  2. Rob says:

    Greg, I’m glad you are attempting to tackle these topics. There’s precious little discussion of these things. Having read both Evans’ and Nilsson’s books, I’ve become a big believer in DDD. However, I find myself struggling every time I try and do it. I’m always interested in seeing how others solve these problems. It’s also comforting to know I’m not the only one who has messed it up ;) I’m certainly not put off by a long series of posts. I think that’s likely the only way to truly have a meaningful conversation on this topic. When you get enough content, if you need help organizing, I’ll be glad to help.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>