Oh for SOA’s sake

November 9, 2007

So, here I am, trapped in my usual pattern of reading posts about people making websites speaking to databases. Only I’m not doing it that way. My company has a rather different approach to making “enterprise systems” (oh god, we do hate that, don’t we?).

Here’s the juicy details. We’re developing a new system from scratch, after finally realizing that what we’ve been doing for the last ten years isn’t, well – you know, keeping ut with the times. Java here, Sybase there, .Net there and some C++ and even PowerBuilder thrown in for good measure.

Instead, we’re re-architecting ourselves as a service provider, providing a service instead of several pieces of distinct software. Now, mind you, we’ve been doing this half-heartedly for years already, outsourcing core parts of our business to external “service providers” (bear with me here), but our business has always been about the Installer and the Database(tm).

What does this mean for us as a company? Well, first and foremost it means that I finally get to implement some of my many, neverending ideas. Mostly those are focused around WCF, Nhibernate and a loosely-coupled, service oriented architecture.

Now, here’s the catch. Everything I read, almost everywhere on the web, is focused on a single web application talking to a single database. Wake up, people. This isn’t, BY FAR, the way business is done in the real world. We have third parties that are vital to our business, those third parties need access in varying and distinctly different ways. We have customers that need a simple one-off setup for a few weeks, and we have customers that have longlasting, complex relationships with us as an ISV, OR as a service provider(tm).

So here’s what I intend to do. I intend to document how we use Real Technologies to accomplish Real Work. If you’re interested in seeing how that pans out, I suggest you stay with me. I’m going to try to detail as much as possible about how we approach this – and I can only assume this – very common scenario.

I’ll start tomorrow by discussing how we intend to make our Domain Model blissfully unaware of how it is being used. Factories, Interfaces and Repositories galore. Mind you, we’re only starting out, and I’m semi-hoping (is that even a word?) that I can also get some valuable feedback from you, my dearest reader, on our sure-to-be many mistakes.

See you tomorrow!