Thursday, October 13, 2005
Service Oriented Architecture
At the end of my last post, I mentioned a conversation between Roger Sessions and Terry Coatta. I did a google search on Roger, and found the object watch website, and spent a bit of time reading his newletters.
Here are my thoughts.
Newsletter #49 The rings of the enterprise. Different rules apply at different levels of the system. Sessions identifies four rings: Application, enterprise system, collaborative partners, everybody else - it looks very traditional (i.e. Unix permissions for user/group/world).
Newsletter #45 What is a service oriented architecture? (I sure wish I knew!). Starts by identifying three ways in which SOA is commonly defined:
- a collection of components that can receive method requests over the internet
- the next release of CORBA
- an architecture for publishing and finding services
- created independently
- built by well-defined groups
- work independently of outside systems
- self-contained functionality, and would be useful even if not associated with other systems.
- there are no mutual dependencies, so neither system interrupts its own work to wait for some other system to complete a task. This implies asynchronous communications.
- if two autonomous systems interoperate, there must be a communication channel between the systems that is independent of the technology used by either system; i.e. heterogenous communication channels.
- if two systems are truly autonomous, there must be a healthy mistrust/suspicion between them, and hence, proof of identity.
- error management across systems boundaries
- workflow coordination between multiple autonomous systems
- why do we care about interoperability?
- why use SOA to achieve interoperability?
- improved decision making
- improved data integrity
- increased revenue
- decreased cost of software development
- decreased cost of software maintenance
Microsoft Research
I had a troll through the microsoft research site today - there are some impressive people working there. I was actually looking for some notes on Computer Systems Research: Past and Future which I'd stumbled upon previously. The author of these notes is Butler Lampson - check out the work that he's done.
Anyway, he makes the point that 'inventions' in computer science have typically ridden the free wave of Moore's Law. He makes the interesting point that the web was not invented by computer scientists, even though it is "the most important invention of the last decade". His lists of successes, failures, and unknowns comprise:
[Crikey! The code for that table was ugly - it all had to be on one text line...]
These are certainly interesting lists, and good for discussion. He then goes on to discuss why the web is "the failure of systems research" (because computer scientists didn't invent it!), and states that the web is too simple, and old idea (but never tried), wasteful (but fast enough), and flaky -- all of this sounds like good, solid engineering to me! The academic response is that the web doesn't scale, but it seems to have done pretty well so far. Lampsons lists of challenges is a bit weak, but in the 'information challenges' he mentions the 'Memex'... this topic is better discussed by Jim Gray in his lecture for the Turing award (What Next? A few remaining IT problems). Gray credits the Memex idea to Vannevar Bush, and goes into considerable detail (more than I can comprehend at 1am...).
Finally, there is an interesting conversation between Roger Sessions and Terry Coatta in ACM Queue on the differences between objects, modules, and components. Before commenting I should really re-read the article - it was very good, and I could certainly learn some more from it.
That's enough blogging for now. Good night!
Successes | Failures | Unknowns |
Virtual memory | Capabilities | Parallelism |
Address spaces | Fancy type systems | RISC |
Packet nets | Functional programming | Garbage collection |
Objects/subtypes | Formal methods | Interfaces and specifications |
RDB and SQL | Software engineering | Reuse |
Transactions | RPC (except for web) | |
Bitmaps and GUIs | Distributed computing | |
Web | Persistent objects | |
Algorithms | Security |
First Post
Random Thoughts
Well, that was easy! I've finally jumped onto the bandwagon, and got myself a blog.... does that make me hip? Anyway, It's all going to be rather self-indulgent, and with any luck, I'll be able to use this blog to record links to stuff that interests me.
This is enough of a first post - best to check that everything works before spending hours composing a comprehensive work :-)