Saturday, July 16, 2005


Thinking out of the Box

Don Box has apparently taken the high ground on the BOA acronym. How could I have forgotten Business Oriented Agents? I just hope my previous post on Document Oriented Architectures, doesn't violate any of Don's Other Acronyms (DOAs). Also my apologies to the CORBA crowd, where BOA means Base Object Adapter. I guess there are just not enough TLAs to go around!

Tuesday, July 05, 2005


SOA is a design philosophy

SOA is a design philosophy, not a technology or a methodology

John Evdemon

A service oriented design philosophy views an application as a collaboration of more basic core services. A Service Oriented Architecture (SOA) is an ensemble of such services.

Services are best explained as centers of value. (a’la Christopher Alexander). Paraphrasing Alexander, services are building blocks of business capability, not truly bounded entities but are in fact non-bounded centers. Here, “non-bounded” refers to their implementation. From outside its interface, a service is a black box of unknown scope and complexity.

Service interfaces are bound by a platform independent contract. Services protect information and form trust boundaries within an Enterprise Architecture.

I agree with Martin Fowler that Service Oriented design philosophy is often confused with service interface implementations (Martin Fowler)

A service is a program.
A web service is a communication tool.

Clemens Vasters

Friday, June 24, 2005


Business Orient Architecture (BOA?)

No one knows how to design Service Oriented Architectures from scratch. But that's OK, since no one is really starting from scratch. Perhaps, someday we will have Service Oriented Analysis and Design methodologies. But for now we are all contemplating how to add services to existing legacy systems.

So the important question is how to design a good service. I don’t know the answer to this. But I do know that a good service will be understandable by a business person. If you cannot explain a service to a manager than it is probably a poor choice. That does not necessarily mean that it is a good service. As the enterprise IT architecture evolves and more services are added there will certainly be service re-work and Refactoring

If I had to guess what a service oriented architecture will eventually look like, I would guess that it would reflect the business architecture – Business Oriented Architecture (BOA). Business organizations have evolved over many centuries into a number of common “departments” – sales, accounting, personnel, etc. Perhaps that is a good starting place for services.

Friday, December 10, 2004


Service Layers

Not all services are the same. Like objects, I think of services being focused on particular concerns within the enterprise architecture. Outer layers are primarily concerned with process and interacting with external actors. Inner layers are concerned with entity management and coordination.

At the innermost layers you have services that maintain what Pat Helland calls resource data. Resource data record the state of essential, long-term enterprise entities – like products, customers, employees, and money. Ideally each entity would be guarded by one service. And that service would support simple interfaces to create, retrieve, update and delete (CRUD) entities. They “guard” the data by enforcing the appropriate security policy and business rules.

Unfortunately, not all of the information about an entity is managed by single service, or located in a central place, or has identical business and security constraints. So in real enterprises we find that data about a single entity is distributed. Take employees, for example, some information about employees is manage by the HR department, and some by payroll department, and some by the security department.

This creates the need for a service layer concerned with managing aggregated entities. These services provide a single interface to enterprise entities, hiding the partitioning from the outer layer of services. They distribute updates and aggregate retrievals, creating the impression of a simple entity. And they coordinate creation and deletion of entities among its partitions. For example, hiring or firing an employee must be coordinated among the HR, payroll, and security departments.

Above the entity layers, we find the workflow layer. The services in this layer manage long-term enterprise processes, like order processing, loan approval, hiring or firing an employee, or month end closing of the accounts. Like entity services, workflow services manage persistent data - the state of the process. But, unlike entities, workflows are expected to terminate eventually. With this layer we transition from the static to the dynamic. It is here that many of the governance and compliance rules are enforced.

If the entity layer dependencies are trees, the workflow layers are graphs. An enterprise’s processes are typically highly interdependent. And so are their services. It may be difficult to manage these interdependencies. If they become sufficiently complex, then some way must be found to layer the workflows between primitive processes and higher–level processes.

Finally, there is the interface layer. This layer is focused on interacting with the outside world. This includes interaction in the form of applications that interact with humans and choreographies that interact with the services in other organizations. I think of these services as implementing “Use Cases” or sessions. They serve as interfaces to the workflow and entity layers.

Monday, November 29, 2004


Documents vs Parameters

In a Service Oriented Architecture I think of services as departments in an organization. I don’t know how your organization works, but in mine you must fill out the proper form in order to get anything done. Of course, the first step in the process is discovering which department and what form is required. Once the form has been fill out and sent to the proper person, no additional information is necessary. If you have not filled out the form properly, that person will tell you immediately. But, if all goes well, sometime later a document arrives containing the information that you requested or notifying you that some action has been taken.

I think of software services the same way. First I locate the appropriate service. I then determine the desired operation. Each operation is characterized by a pair of documents that are sent to and received from the service. I generate an instance of the first document, send it to the service location, and await a response in the form of the second document. The response is often just an acknowledgement that a proper requesting document has been received. The actual effect of the operation may not become known until a later event that is signaled by the arrival of a document from the service.

That’s a little confusing. So lets call the first document a request, the second an acknowledgement, and third a response. If the service can respond immediately then the response serves as an acknowledgement.

My main point is that I view service architectures as Document Oriented Architecture (DOA?). The action is implicit in the kind-of document being sent. To me this is a cleaner view that thinking of services as subroutines that take some set of parameters. What I need to understand is how this view relates to the REST view. Somehow they seem like similar or, at least, sympathetic views.

Friday, July 16, 2004


Server Load

Maybe I just don't visit enough sites, but I saw something I really appreciated while I was visiting Stock.XCHNG.  That was a "Server Load" indicator (progress bar).  It allows you the option of coming back later, rather then trying to load something and going away mad.

Monday, June 07, 2004


I've Been Scobleized!

I’ve been Scobleized! Immortalized! I’m immobilized! Actually, I’m honored to be cited by the most famous blogger of them all. Thanks for the kind words.

This page is powered by Blogger. Isn't yours?