The one important aspect that comes to my mind while thinking about service enabling is Performance. I have developed many web based applications and users are always critical of the performance of any web based system. Users want quicker response after seeing unbelievable response times from websites & search engines like Google.
As many of the technical experts may be aware of, web service introduces some performance overheads compared to the native technology.
For example, Retrieving data using RFC protocol seems to be faster than Web services. I did a simple exercise to prove my point. I exposed BAPI_USER_GET_DETAIL as a web service. (If you want to know the procedure to service enable a Remote function module, click here – Creating and Exposing BAPI as Web Service and using it in Web Dynpro ). I created one webdynpro Java application to call the RFC directly, display the address details of the user in the screen and another webdynrpro component to call the web service, display address details. These webdypros were designed to output the time taken to execute the corresponding RFC / Web service. The following table shows the time taken to execute the RFC and web services for each run (in ms).
As you can see, Web Services takes 145 ms (avg) more than the native RFC. Developers also need to keep in mind the network round trip involved in each web service call. So the real time business applications designed based on Web services might be slow. If the developer decides to provide one web service to retrieve header details and another service to retrieve corresponding details, the application will go through two round network trips to retrieve the data. This may be avoided by providing once service to retrieve both header & detail data. But this might bring some unwanted data in some cases.
I asked a question regarding this performance issue to SOA experts at the “Mastering of Technologies 2007 – Melbourne” They rightly pointed out that Service enabling business process enables enterprises to be flexible and adapt to changes and the advantages should be weighed up against the cost involved in upgrading the hardware to provide better results. So service enabling comes with the cost!
One should also keep in mind that one of the design goals for Web Services is to allow companies and developers to share services with other companies in a simple way over the Internet. Hence Service enabling business services is essential but application built internally may not need to utilize the web service when there is an alternative better mechanism to retrieve the data faster and provide better response times!
In my next bog, I will try to share some of the points discussed in the “SOA Design and Governance Workshop”.