spacer   Udi Dahan – The Software Simplist
Enterprise Development Expert & SOA Specialist
 
 spacer spacer   spacer
    Blog Consulting Training Articles Speaking About
  

Finding Service Boundaries – illustrated in healthcare


Posted in Autonomous Services | Community | Presentations | SOA

A couple of months back I gave a presentation at NDC London about how to find service boundaries, giving examples from the field of healthcare. The recording is now online here.

Skip to 05:25 in the video to get by the songs (thanks Kijana).

If you want to learn more about these topics, check out more of my posts on SOA here.

If you want the full, in-depth, zero-to-sixty experience – you should really attend my Advanced Distributed Systems Design course. The next one is in March in San Francisco but there will be others around the world through the rest of this year.

For the full list of events, click here.

Comments [2]
Posted on Monday, February 2nd, 2015.



Ask me anything – Dec 11


Posted in Community | Presentations

This coming Thursday, Dec 11 I’m going to be doing an “Ask Me Anything”.

For those of you who aren’t familiar with the format, an “Ask Me Anything” (or AMA for short) is a kind of online “press conference” which was popularized on Reddit, and has had fairly well-known people do them including President Obama, Bill Gates, Madonna, and more. For more information, see Wikipedia on the topic.

Here’s how it works

First thing, sign up at particular.net/ask-udi-dahan-anything to get the conference info.

Then, check out and vote on the questions people have already asked, and ask your own.

Of course, you can also loop some friends in to vote for your questions, but I will do my best to answer as many questions as I can – live on Thursday Dec 11, at 12pm EST (5pm GMT).

Even if you can’t make that time, the recording will be available afterwards. Once I have the link for that, I’ll blog it as well.

But don’t just take a passive wait-and-see approach. If you’ve been reading my blog, I know you’ve got questions about SOA, DDD, CQRS, messaging, NoSQL databases, and more – so this is your chance to get them answered.

Go on then: Ask me anything. spacer

Comments [2]
Posted on Monday, December 8th, 2014.



Watch out for superficial invariants


Posted in Business Rules | CQRS | Workflow

spacer As I was reading a blog post on CQRS, Aggregate Roots, and Invariants here, I became aware of a mistake I’ve seen many developers make over the years and I thought I’d call it out real quick.

Superficial Invariants

Taken from the blog post mentioned above: “For example, an employee cannot take more annual leave than they have.”

This falls into the trap of applying mathematical thinking (which we developers possess in great quantities) to the business world. The business world isn’t that mathematical (in general), and tends to have many more shades of gray expressed as “business rules” which can, and do, change.

Rules – not invariants

Employees can’t take more annual leave than they have.
… unless their manager approves.
… but that’s only up to 2 days.
… unless their manager is a VP, and then it’s up to 5 days.
… and that negative balance will be deducted from next year’s leave.
… Oh, and if the employee leaves the company before then, then the value of those negative days will be deducted from their final paycheck.

Impact on your domain

First of all, I hope you see that this isn’t something that you would trivially implement on an Employee object.

If you read these rules more carefully, you’ll probably notice that they’re speaking about a long-running process.

First, there is a request for leave. Then there’s an approval (with certain rules) which may come sometime later. And the approval itself may not even end the process – if the balance becomes negative.

And, as you’ve probably heard me say before, you end up with sagas as your aggregate roots (see Race conditions don’t exist from 4 years ago).

And a word about Bounded Contexts

Notice that these rules don’t care very much about things like the employee’s name, phone number, email, etc. Similarly, logic that deals with that data probably doesn’t care about the number of days of leave an employee takes.

In other words, these sets of data and logic can be said to belong to different Sub-Domains (in DDD terminology).

As such, it can make sense to take the annual leave logic and put it in a bounded context separate from the one responsible for the contact info.

In closing

In many of the samples and blog posts I see online, an overly simplified problem domain is implemented showing how the given implementation technique would be applied.

The problem is that developers then use that implementation technique as a “cookie cutter”, trying to fit real-world requirements into it, and then end up making a pretty big mess.

The more you delve into real-world requirements of business domains, the less you’ll see of mathematical invariants (unless, maybe, you’re building a physics engine for a game or something) and the more you’ll see long-running processes unfolding in front of you.

Regardless of whether you use NServiceBus sagas or not, start looking at the world as dynamic long-running processes rather than static noun-centric entities.

Comments [12]
Posted on Sunday, November 16th, 2014.



Best US Supermarket running NServiceBus (for years)


Posted in Community | Messaging | NSBcon | NServiceBus | Presentations | Pub/Sub

spacer I was quite thrilled when I heard that our customer Wegmans got ranked by Consumer Reports as the #1 supermarket chain in the US.

Wegmans have been long-time customers of NServiceBus and I recently got the opportunity to go on a guided tour in their flagship store in Rochester and hear all the ways that they’ve been leveraging our platform – even the scales that people use to weigh their produce are linked up.

Yup – you may even be eating NServiceBus and not know it spacer

There are also some pretty powerful back-office processes at play – things that your regular consumer wouldn’t even notice but that matter quite a bit.

In any case, I’ll hand this over to Adam Fyles – the person who has done the actual work of getting NServiceBus into Wegmans, from the early proof-of-concept days to leveraging it across the enterprise to tell the story himself.

Here’s Adam presenting at NSBCon USA 2014:

And if you want the slides or to hear more from Adam, check out his blog at: adamfyles.blogspot.com/.

For more information on NServiceBus and the rest of the Particular Service Platform, check out particular.net/

Comments
Posted on Tuesday, October 21st, 2014.



NSBCon London 2014 Wrap-up


Posted in Community | NSBcon | NServiceBus | Presentations

Well, NSBCon London was a blast. It was such a blast that it took me this long to recover and get my head back into blogging. In any case, for those of you who couldn’t make it, check out this short 2-min video to get a feel for what it was like:

spacer

The venue was packed, the speakers were great, and all in all the conference was a smashing success. If you don’t believe me <wink/> you can check out Roy Cornelissen’s coverage here.

All videos now online

For those of you who couldn’t make it, we have all the videos recorded for you and you can access them here.

Some of the cooler demos included:

  • Szymon Pobiega showing how he plugged the Event Store under NServiceBus for complete transport, subscription, timeout, and saga persistence – video here
  • Dylan Beattie videoing the audience with his iPhone and having that processed through NServiceBus and uploaded to their site in “real time” – check it out

Of course, I really think you should check out the full list.

Onward – to New York

spacer And for those of you in the US and Canada, we’re happy to announce that registration is open for NSBCon New York!

The early bird is available until the end of this week (Aug 8), so you should really get going.

Register here.

We’ve got some really great speakers lined up for you – Jimmy Bogard will be there, and we’ll have both Oren Eini and Ted Neward speaking as well (who you might remember from the infamous ORM Smackdown).

And Carl and Richard from Dot Net Rocks will be there as well – rockin’ it the way that only DNR can.


Hope to see you there!

Comments
Posted on Tuesday, August 5th, 2014.



Service-Oriented Composition (with video)


Posted in Architecture | Autonomous Services | EDA | SOA

When telling people about my approach to SOA, in which a given service would have client/browser-side components running side-by-side in the same process and even in the same page as components from other services, I often get asked this question:

“Doesn’t all of this loosely-coupled composition come with a high cost, in terms of client to server chit-chat?”

So, I’ve finally buckled down and put together a slide to illustrate how the technocratic IT/Ops service I’ve talked about in the past can provide components to resolve these sorts of problems.

After putting the slide together, and realizing some animation would do it good, I went and made a short (5 min) video including some verbal explanation as to how it all works – just for clarity. Check it out or watch it here:




And here’s the image showing everything in one picture:


spacer

Comments [6]
Posted on Wednesday, July 30th, 2014.



NSBcon Update


Posted in Community | NSBcon | NServiceBus

spacer Just a quick reminder to let you know that NSBcon London is next week.

For those of you who have been wondering, yes, you can come to just one of the days if you aren’t able to take both days off of work. Also, if you want to come but can’t convince your boss to pay for it, drop us a line and we’ll hook you up with a discount. Just send an email to nsbcon@particular.net and we’ll take care of everything.

One last thing – unfortunately, Oren won’t be able to come speak in London (but still will be speaking in NYC). While no one can quite fill in those shoes (as Oren is quite a big guy), we have someone I think you’ll really enjoy hearing: James Lewis, one of the main voices in the Microservices arena, will be coming to talk about … Microservices!

Hope to see you there: NSBcon.com.

Comments
Posted on Monday, June 16th, 2014.



People, Politics, and the Single Responsibility Principle


Posted in Agile | Architecture | Autonomous Services | Management | Messaging | OO | SOA

spacer In one of Uncle Bob’s recent blog posts on the Single Responsibility Principle he uses the example of using people and organization boundaries as an indication of possible good software boundaries:

When you write a software module, you want to make sure that when changes are requested, those changes can only originate from a single person, or rather, a single tightly coupled group of people representing a single narrowly defined business function. You want to isolate your modules from the complexities of the organization as a whole, and design your systems such that each module is responsible (responds to) the needs of just that one business function.

This is something that often comes up when I teach people about service boundaries when it comes to SOA – organization boundaries are the most intuitive choice.

And, once up on a time, that intuition might have indeed held up.

Stepping back in time

In the age before computers, organizations had a very specific way of structuring themselves.

People who had to work closely together sat in close physical proximity to each other. Data that was required on an ongoing basis would be in file cabinets also physically co-located with the people using that data, and it would be structured in a way that was optimal for their specific purposes. All of this was due to the high cost of communicating with people farther away.

If you needed data from a different department, you had requisition it by filling out a special form, put it in your outbox, and then some guy from the mail room would pick it up, and physically schlep it to the right department, putting it in their inbox, and then someone there would get your data for you – putting it together with your original request, and then the mail guy would schlep it back. This inbox/outbox style of communication should ring a bell from the messaging patterns I talk about with NServiceBus.

As a result, different departments had to have very clearly delineated responsibilities with minimal overlap with each other. The organization just couldn’t function any other way.

And then a bunch of us geeks came along.

Enter the age of computers and networks

By introducing this technology, the cost of communication across large distances started falling – slowly at first, and then quite dramatically.

When anyone in an organization was able access data from anywhere in the blink of an eye, an interesting dynamic started to unfold. All of a sudden, the division of responsibility between departments wasn’t as critical as it was before. When an employee needed to do something, there wasn’t this “that isn’t our job, you need to go to so-and-so” reaction. Because things could be done instantly, that’s exactly what happened.

And then came the politics

By removing the cost of communication, it became possible for more power-hungry people in the organization to start making (or trying to make) decisions that they couldn’t have made before. The introduction of computers into an organization was heralded as a new way of doing business – that the old organizational boundaries were a relic that we should leave behind us.

And thus can the re-org (the first of many).

Responsibilities and people were shuffled around, managers vied for more power, and politics took its’ place as one of the driving forces in the company structure.

Nowadays, if you want a decision made in a company, there isn’t just one person who has the authority to sign off on it anymore. No, you need to have meetings – and more meetings, with people you never knew existed in the company, or why on earth they should have a say on how something is supposed to get done. But that is now our reality: endlessly partially overlapping responsibilities across the organization.

So, what of the Single Responsibility Principle

This just makes it that much harder to decide how to structure our software – there is no map with nice clean borders. We need to be able to see past the organizational dysfunction around us, possibly looking for how the company might have worked 100 years ago if everything was done by paper. While this might be possible in domains that have been around that long (like banking, shipping, etc) but even there, given the networked world we now live in, things that used to be done entirely within a single company are now spread across many different entities taking part in transnational value networks.

In short – it’s freakin’ hard.

But it’s still important.

Just don’t buy too deeply into the idea that by getting the responsibilities of your software right, that you will somehow reduce the impact that all of that business dysfunction has on you as a software developer. Part of the maturation process for a company is cleaning up its’ business processes in parallel to cleaning up its’ software processes.

The good news is that you’ll always have a job spacer

Comments [2]
Posted on Monday, May 26th, 2014.



New York ALT.NET Presentation


Posted in Community | Presentations

I’m going to be in New York in a couple of weeks teaching my Advanced Distributed Systems Design with SOA course and, as I usually do, will be giving a presentation at a local user group – this time at the NY ALT.NET user group on Wednesday May 14 @6:30pm.

Just as an aside, I’m not currently planning on running another course this year so you might want to try to make this one before it sells out.

In any case, here’s the description of the presentation:

Ever since callbacks made their way into programming languages, developers have been arguing whether the benefits of looser-coupling outweigh the drawback of seeing the control flow in one place.

These arguments continue as developers look to leverage technologies like RabbitMQ on-premise or Azure Queues and Amazon SQS in the cloud. See which development practices can bring the global flow visualization of orchestration to your publish/subscribe messaging architectures to get the best of both worlds.

The presentation will be at Microsoft, 11 Times Square (map)
Room 6501a, 6th Floor. Make sure you bring a photo ID for building security.

Register here.

Hope to see you there!

Comments
Posted on Thursday, May 1st, 2014.



NSBcon London 2014


Posted in Community | EDA | ESB | MSMQ | Messaging | NSBcon | NServiceBus | Workflow

spacer Since my last post announcing NSBcon you probably haven’t gone to take a look at what’s happening.

The speaker lineup for NSBcon London 2014 is now complete and we’ve got a really great mix of talks, if I do say so myself.

I’ve already mentioned that Oren and Greg will be there, but I wanted to talk a bit about the rest of the roster:

First up – Wonga

If you’re living in the UK, you almost can’t avoid seeing these ads.

spacer

What you probably didn’t know is that Wonga has been running on NServiceBus for years now.
(No – we had nothing to do with the ads, and there’s nothing we can do about them.)

Charlie Barker was there from the beginning and has lived to tell the tale:

We faced the problem of scaling our platform to meet rapid growth in customers whilst at the same time increasing the team from 15 to 200 people spread across five countries. We did this by transitioning from N-Tier to SOA even as we were delivering new features and keeping the platform stable. No small feat.

This is an interesting story to hear, not only from the point of view of NServiceBus, and I’d definitely recommend grabbing Charlie over lunch or over a beer. This is probably one of the higher profile startup successes in the UK you’ll find and, as always, the behind the scenes story is just fascinating.

And to the cloud!

No self-respecting technology conference these days can go without spending at least some time talking about the cloud – and we won’t be the ones to buck the trend, even though we have a healthy disrespect for all sorts of things, including the ourselves spacer

You’ll hear from one of the foremost Azure MVPs and all around cloudy Belgian Yves Goeleven (whose last name nobody is really sure how to pronounce). Yves has been the driving force behind getting all the various bits of Azure infrastructure integrated into NServiceBus and, if you get him to just the right level of inebriation, will spill all the dirty little secrets of the Azure platform that Microsoft doesn’t want anyone to know.

Dylan Beattie will then relate his tales of creating loosely-coupled encoding workflows for audio and video on the cloud at Spotlight – one of the world’s leading resources for professional actors, casting directors, and production professionals. It ain’t easy making ordinary people into stars.

And so much more

To see the complete lineup, go to NSBcon.com.

And me – what will I be talking about? That’s a good question.

Not to steal my own thunder (after stealing everybody else’s), but you’ll hear about the deeper integration we’ve got planned for SignalR, making your event-driven architecture extend from the back of your systems all the way to the browser, so much simpler and smoother than you ever thought possible.

I’ll also tell you about how we’re going to enable you to run on queues that don’t support distributed transactions (like Service Bus for Windows Server) without having to worry about making your logic idempotent. For some background, see my blog post on Life without distributed transactions.

In short – it’s going to be a kick-ass conference.

Check it out.

* and for those of you paying out of pocket, contact nsbcon@particular.net for a discount.

Comments [4]
Posted on Tuesday, April 22nd, 2014.



« Previous Entries
   


spacer spacer -->
 
spacer -->

Recommendations

Bryan Wheeler, Director Platform Development at msnbc.com
Udi Dahan is the real deal.

We brought him on site to give our development staff the 5-day “Advanced Distributed System Design” training. The course profoundly changed our understanding and approach to SOA and distributed systems.

Consider some of the evidence: 1. Months later, developers still make allusions to concepts learned in the course nearly every day 2. One of our developers went home and made her husband (a developer at another company) sign up for the course at a subsequent date/venue 3. Based on what we learned, we’ve made constant improvements to our architecture that have helped us to adapt to our ever changing business domain at scale and speed If you have the opportunity to receive the training, you will make a substantial paradigm shift.

If I were to do the whole thing over again, I’d start the week by playing the clip from the Matrix where Morpheus offers Neo the choice between the red and blue pills. Once you make the intellectual leap, you’ll never look at distributed systems the same way.

Beyond the training, we were able to spend some time with Udi discussing issues unique to our business domain. Because Udi is a rare combination of a big picture thinker and a low level doer, he can quickly hone in on various issues and quickly make good (if not startling) recommendations to help solve tough technical issues.” November 11, 2010

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.