SOA is around us
I've been running recently across a couple of discussions on what SOA is and thought it would make sense to re-post my old corporate blog on the topic here. This time I just change SOA's old name - ESA - to the new one.
A few days ago I went to my DMVS (department of motor vehicle)
center to get my driver’s license. I went to the closest exam center,
which is in Norcross, to take a written and hopefully a road test. For
those who’ve never been there, the visitor’s area is a big hall with 20
counters, 3 big screens with numbers running on them, many seats and
hundreds of visitors. I was told it serves between 400 and 700 people a
day. Staying in the line hearing almost incessant announcments and
looking at visitors and inspectors dashing about I had a firm sensation
that all this very much reminded me something. Guess what?! – right, SOA! I was looking at every element of the interaction and more and
more was becoming sure that this is quite a strong implementation of SOA, not in software but our real life. Let me explain.
As you get to the center a big guide sign meets you: “ALL
visitors to the info desk!”. This is a Dispatcher-Controller pattern.
The Dispatcher lady accepts all visitors and after giving basic
instructions (“we accept only cash!”) and checking your docs (“where is
your address proving bill?”) redirects you to a queue and assigns you a
unique (ordinal) number. By the way, there are two-three ladies at the
desk so there is scalability and availability in place! After you get
your number you’re put in one of about a dozen virtual queues (or
workflows) for your needs: passing tests, changing address, getting
license back after revoking and so on. Every such purpose has its own
workflow with special rules residing to it.
So each visitor becomes an “object” routing between different
services according to a specific workflow and notified by proper
messages. Such coordination is hidden from visitors but happens "behind
the scenes" in a workflow managing system. This is the Dynamic Router
pattern – the heart of the system. This Dynamic Router knows where to
send you on the next step of your workflow depending on your results of
the previous one. You’re advancing from service to service (from
counter to counter) when your number is announced and it appears on
those big screens I mentioned before. What about services? They’re
supplied by brave DMVS employees standing at the 20 counters. They’re
grouped by the functionality they supply and serve the next “object” in
a service queue. For instance some fill out your form and verify the
docs you brought. Others take your signature, fingerprints, and your
photo. A third performs vision checks and so forth. Every service knows
how to carry out its own operation. It neither cares where you came
from nor does it know where you will go after. All it knows is to
double check your “input parameters” perform its operation then “return
some result” and finally “log” it to the system.
What is cool is you don’t worry about where to go next, either!
The Dynamic Router service takes care about you. In practice you wait
for your number to appear on the screens showing you the next counter
to attend and announced by an electronic voice (“number A485 at counter
17”). You’re sitting and waiting. Now what about collision resolving?
What if you lost your number? What if you missed your queue? In such a
case you come to the Dispatcher lady which enqueues you again to the
workflow hopefully to the point right after the last stage you
successfully have passed. Big hint: messages can expire. A friend of
mine, after successful passing her driving test, couldn’t wait to get
the license and took all the documents home. When she came back a day
after, the Dispatcher lady didn’t allow her to enter the queue on the
last stage. Sorry, Sarit:-( So she had to start her workflow from
scratch and thankfully she passed it again (now to the end of the
workflow:-)
What about scalability availability and performance, you’ll ask? As I said every service is scalable over several counters. And hence available. Performance at Norcross was quite impressive (I came there at 10.30am successfully passed my both tests and at 1.30pm went out with my license in hands). Everything was functioning fine and fast. I like our projects implemented in a similar way:-) Not that I wish you to attend a DMVS center. But if you have to, pay attention to this brilliant SOA implementation and good luck with your tests!
Technorati tags: SOA, ESA, enterprise, software

Hi,
This is really simplified explaination of SOA. I am adding you on Skype id.
Great work,
Cheers
Daksh
Posted by: Daksh | December 11, 2006 at 12:20 AM
You may want to explain what SOA is somewhere in this article.
I don't know and the first paragraph, on the first page in google ("SOA") was "One of the problems blocking SOA adoption in companies is that when the architects and developers start talking in jargon, they lose the business executives and managers"
"DMVS (department of motor vehicle) "
Posted by: why bother | December 11, 2006 at 02:11 AM