Redefining What 'Service' Means to the Web
Usually when someone hears the words 'web' and 'service' used together, they tend to think of 'web services' as in 'XML Web Services' or a 'Java Web Service'. The web services paradigm gave rise to one of the latest architecture styles referred to as service-oriented architecture or SOA. The emergence of web services undoubtedly had a profound effect on the industry and continues to be the prime choice for many integration scenarios. However, I am hearing a lot of different meaning when it comes to using the words 'web' and 'service' in the same sentence; the new meaning appears poised to change the way software is designed, developed, and delivered. I am referring to the 'service' of the era that the media has hyped as Web 2.0. Hype aside, the new notion of a web service is interesting and one worthy of careful consideration.
What is a service?
In this context, a service is web-native software. By web-native I mean that it is envisioned, designed, and developed for the web as a platform much the same way Win32 MFC applications were designed for Windows. As with the latter example, most software today targets a specific operating system environment and relies upon the vendor-provided or 3rd-party vendor enhanced APIs to run. A web service of the future would be written targeting the web as a platform, complete with foundational services such as security, storage, preferences, etc.; these services would be fronted by provided interfaces - graphical and programmatic - that allow users to utilize the service as they see fit. A great example is that of TurboTax. For the longest time, the TurboTax software was a packaged application that one would buy and install locally on their computer. For a while now, the same software is available online and the functional differences between the installed and online versions can scarce be seen. Essentially, the makers of TurboTax have produced another channel in which they can monetize an existing software asset, yet they charge more-or-less the same amount for the software. But what if they were to subsidize the fee with paid advertising? What would that do to the customer base and their competition? These are some interesting questions that this new paradigm of software is forcing companies who sell software to ask… As with the rise of any new paradigm in technology, new business models emerge, new players and faces emerge - creating opportunities.
Consider the software you have on your computer and imagine it existing on the web in addition to your computer. Such a model could provide a seamless experience between the two and enables a balance between access from anywhere or any device and maintaining the personal experience and richness of your own computer. With this concept, the traditional meaning associated with software changes into more of a service, a web-native service that opens up the distribution to include an unlimited number of channels.
The interesting architectural consideration of course is how these web-native services are designed with respect to other web-native services. Many of these web-native services will themselves be mash-ups of many other web service components that may or may not be within the immediate control of the developer, registering and communicating though standards-based technology and protocol. Solutions Architects will be busy considering data design with respect to multi-tenancy and security; with mutli-tenancy comes interesting discussions around scalability, performance, and reliability among other things. Infrastructure Architects would be occupied with supporting the large infrastructure needed to provide these services to millions of concurrent users and in many cases, manage the service-level agreements entered into with customers. In a nutshell, there is so much more to this than AJAX…
Conceptually, it sounds do-able, but in the current state of IT Service Delivery and Management, we have a ways to go and the platform stacks and tools that are required to enable this emerging model are only beginning to come out of the research and development labs… Sure, you could develop web-native software today just like you could develop Windows applications prior to MFC or VB6 and toolsets like Visual Studio, but it was complex and time-consuming. We could discuss this for hours. It's a great time to be in the industry. We'll discuss more in the coming weeks.