Over the past decade, we have witnessed many fundamental changes to the application landscape. In my other posts, I’ve discussed how enterprise applications must be built with usability, security, mobile device support, and business intelligence as integral components and not just afterthoughts. These changes are in large part driven by the rise of mobile devices as first class platforms for interacting with our enterprise systems.
One of the most significant shifts that has been brought about by the mobile revolution and the rise of the internet of things is the change in the underlying modes of communication between systems and devices. The early web was largely built on a synchronous client-server model. Many of our fundamental protocols and development frameworks were built specifically for this model, and the internet has largely been based on this pattern for much of its life. The shift we’re seeing now, however, is a move to an asynchronous, service-based pattern. I call this the Service Based Internet.
What is The Service Based Internet?
Recently, we have seen the rise of whole new classes of consumers of data and functionality. No longer are we just dealing with people browsing to a website performing some task and logging off. We now have millions of smart phones, tablets, smart homes, appliances, and automated systems consuming terabytes of data, both public and private, and performing billions of operations on that data. The service based internet has emerged as a means to generically support these consumers without needing to know anything about them.
What is a Service?
Although the term service has quite a few definitions depending on the context, we can look at a service generally as a self-contained system which provides structured access to specific data or functionality. Typically a service has no presentation layer; the presentation of data/functionality is a component of a consuming system that we are increasingly referring to as apps. More concretely, we can think of services as public or private APIs which allow access to data or perform some task. For example, Google’s geocode service allows consuming systems to present a set of coordinates and receive an address or vice versa.
With this in mind, we don’t have to look far to see examples of services in broad use in the internet today. Google provides almost every function it performs as a service, Yelp provides all of their data publicly as a service, Microsoft Azure and Office 365 provide publicly accessible services to query and manage their products, even SharePoint has been refactored to be a fundamentally service based system. Likewise, nearly every SaaS application provides a service based API so that other apps and services can interact with their data and functionality.
E-commerce, weather forecasting, online banking, social media, CRM, document management, mapping, search, all of these systems provide service-based APIs. In fact, it’s almost a mistake at this point to distinguish the API from the rest of the system’s functionality, given that the service interface is the fundamental mode through which all consumers, including the native user interfaces, interact with the system. The API is not an afterthought, the system is a service and the API is the gateway to the service.
Why The Service Based Internet?
So, why this shift to service based systems? Google still has to create user interfaces for their products, so why bother with the extra effort? Ignoring the financial benefits inherent in being able to provide a service for a moment, the biggest reason for the shift is that these companies understand that no one presentation of data or functionality is adequate for all cases; we want google maps to work just as well on our relatively small phones as it does on our huge desktop monitors. Knowing this, the separation of data/logic from presentation is an obvious win. Similarly, the rise of mobile and the app revolution have shifted the presentation from tightly controlled web servers to various and sundry apps running on millions of mobile devices. Certainly those mobile devices shouldn’t be running the whole of the logic, data and processing of a system, just the presentation. Moreover, there are many cases where there is no need for presentation at all when interacting with a service. Workflows, timer jobs and other services have no UI but still need access to the data and functionality available in a service.
It’s this increasing separation of data and functionality from presentation that is the hallmark of the service based internet. With this shift, we’re no longer bound to just one way of interacting with a system, we’re becoming a truly interconnected web of services and consumers combining data and functionality from myriad sources to create new systems that are far more innovative and capable than any one web application could ever be.
About Chris Sorel
Chris is a senior architect with Statera, focusing on enterprise application architecture and application development. Chris has spent many years in the industry evangelizing user-centric design and the role of custom software in helping companies stay innovative. When he’s not helping our clients, he can be found hiking one of Colorado’s 14ers or rock climbing in one of the front range canyons.