| |||||||||||||||||
|
|||||||||||||||||
Finding Service Boundaries – illustrated in healthcarePosted 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.
Ask me anything – Dec 11Posted 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 worksFirst 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.
Watch out for superficial invariantsPosted in Business Rules | CQRS | Workflow
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 InvariantsTaken 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 invariantsEmployees can’t take more annual leave than they have. Impact on your domainFirst 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 ContextsNotice 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 closingIn 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.
Best US Supermarket running NServiceBus (for years)Posted in Community | Messaging | NSBcon | NServiceBus | Presentations | Pub/Sub
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 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/
NSBCon London 2014 Wrap-upPosted 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: 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 onlineFor 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:
Of course, I really think you should check out the full list. Onward – to New YorkAnd 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!
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:
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:
NSBcon UpdatePosted in Community | NSBcon | NServiceBus
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.
People, Politics, and the Single Responsibility PrinciplePosted in Agile | Architecture | Autonomous Services | Management | Messaging | OO | SOA
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:
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 timeIn 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 networksBy 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 politicsBy 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 PrincipleThis 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
New York ALT.NET PresentationPosted 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:
The presentation will be at Microsoft, 11 Times Square (map) Register here. Hope to see you there!
NSBcon London 2014Posted in Community | EDA | ESB | MSMQ | Messaging | NSBcon | NServiceBus | Workflow
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 – WongaIf you’re living in the UK, you almost can’t avoid seeing these ads.
What you probably didn’t know is that Wonga has been running on NServiceBus for years now. Charlie Barker was there from the beginning and has lived to tell the tale:
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 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 moreTo 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.
« Previous Entries
|
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 |