There are many proponents of idea that data in the data stores have to be accessed by services. May I ask - why? What is the difference between such 'services' and ordinary data store drivers extended for remote access? I do not see any business functionality in even extended data store drivers. Nevertheless, business services work on data and we need Data Services to provide for data operations (CRUD) against the data stores.
Separation between business service and actual data store and data access raises obvious question about performances of data access for the business service. Topic of data access performances is very similar to performances affected by security controls - if you did not think it through at the beginning, in the architectural and design stages, adding it later costs a lot including performance degradation. This means that design of Data Services has to take care of performance degradation by a compensating design - pre-loading, caching, data store distribution closer to the consumers, etc. Flexibility of business services has its own price we have to pay.
It is interesting to note that separation between business logic and processed data has a valuable outcome. If we properly de-compose business model and identify self-contained autonomous business services (not trivial activities or operations on data), we will find that there are no so many of such services. Let me remind, just in case, that I consider service as a business service if it implements, at least, one Business service, or business function, or business feature, or business process. Number of really business services in the organisation is not huge; it is observable and manageable. As a contra-example, I can tell you that once we were offered 450 'services' by one of the vendors to support a Single-Client-View product. It is impressive, isn't it? In the closer look, it resolved in about a dozen of business services while the rest were CRUD and administration (configuration) operations.
There are no doubts that Data Services play very important role in service-oriented environment but... we have to be very accurate what we may call a service. In particular, I consider an entity (component, application, etc.) as a Data Service only if it adds some value to the resulted data structure that cannot be provided by any used data stores or data feeds. For example, the value may be an accumulation of data, aggregation of data from different data feeds, data transformation, and so on.
That is, Data Service has to add some functionality on the top of data source drivers. If this functionality has some business values, e.g., an aggregation performed according to special business rules of data combinations, the Data Service may even become a business service; however, if added functionality is just a data transformation - it is a regular infrastructural utility service.














Leave a comment