Monday, July 16, 2007

Service Granularity Challenge with SAP's ESA

SAP uses its Netweaver based development infrastructure to define services in a SOA.
The business services are defined in Netweaver Developer Studio (NWDS) which is also known as the CAF (Composite Application Framework) Core. They have three main constructs namely an external service, an entity service and an application service.
An external service allows for the linkage to services defined outside the CAF Core environment sandbox.
An entity service essentially models an operation on a business object (BO) as a service. Typically these map to existing BAPI's that work on business objects that are stored in the SAP Business Warehouse (BW). Operations on business objects being used as a basis to define services, to me, is a very parochial approach to service definition and often becomes too fine grained to follow the footsteps of a service-proliferation-syndrome.
Application Services are defined as coarser-grained services that combine or use multiple entity services with some applied business logic to tie them together. Even here, it is more of a bottom up approach to service definition. I fear that, using this approach, we are missing the key issue of aligning services to business processes. The concept of business aligned services seems to be lost in the mechanism, somewhere !!!
There is another tool, more of a somewhere-inbetween-a design-and-a-runtime mechanism to define orchestrations of services, based on the SAP Guided Procedures (GP). GP has concepts of actions, blocks and callable objects. Actions and blocks can be simulated as a composition of services together - ala service composition. But then, these service composites, are not pushed down to the business service layer - which to me is an issue.

I would love to hear some comments on this.