SOA.WRK.

Thursday Aug 23, 2007

The SOA philosophy --- a new perspective of Unix principles

This year's JavaOne was great. I met new and old friends, went to the Startup camp, attended interesting sessions and BOFs, and had some wonderful discussions with others. The most interesting discussion I had was over a breakfast at the Moscone Center. I had a chance to explain my work to a Unix programmer who had not been exposed to the concept of SOA. After a few unsuccessful attempts to explain the concept of composite applications to him in a way he could understand, I suddenly realized that the service composition principle used in SOA is very much a modern application of old Unix techniques like co-routine and pipe. Using several Unix examples, I successfully explained to him that building a composite application using service components is much like building a pipelined shell command:

    cat `find ~/bin/ -name "*.sh"` | sed -e '/^ *#/d' | wc -l

After our discussion, he was happy to learn that many of his familiar Unix principles have modern application in the SOA world. I was excited too and wanted to study more of the parallels between SOA and Unix principles.

The compositional approach of building solutions made popular by the Unix operating system is very similar to the core concept of our design-time tools. However, when designing a set of tools for building SOA-based composite applications, our objective was to apply modern software concepts such as aspect oriented programming and enterprise integration patterns, not Unix principles.

mars 350 years

Mapping Unix design principles to SOA was very interesting. Like seeing features on images of Mars developed over time, Unix principles can be interpreted using modern software concepts. For example, the famous "Unix philosophy" characterized by Dr. Doug McIlroy:

Write programs that do one thing and do it well. 
Write programs to work together. 
Write programs that handle text streams, because that is a universal interface.

can be translated into SOA terms, First, programs are replaced by services. The one thing that a service should do well is the WSDL interface it implements. Then, how to make services work together has become a much more complex problem in the modern computing environment. In addition to input and output data, there are policies between the service consumer and the service provider covering, e.g., messaging, security, and transactional context. Finally, all services should handle XML streams, the universal interface.

One thing that I found interesting after comparing similar software concepts between Unix and SOA is the directions and degree in which a concept expanded or evolved over the last 30 years. I will come back to this subject in the future. Looks like there is useful trending information there.

Comments:

Post a Comment:
Comments are closed for this entry.

Calendar

Feeds

Search

Links

Navigation

Referrers