I’ve been spending a lot of time lately working with clients to define RESTful services architectures for their mobile applications. Most of them have a large SOA implementation using SOAP, and are just beginning to dip their toes into the world of REST. More often than not these existing SOA’s are designed for enterprise applications that live behind the firewall, and are called by machines that are not lacking for any bandwidth or processing power. When we begin discussion how to utilize these services for mobile applications, we quickly discover that the existing services just won’t do.
These enterprise services generally come in two flavors. Either they are too coarse-grained, and provide too much unnecessary information, or they are too fragmented, and require multiple requests to piece together a view that can be used in the mobile application. My recommendation is usually to spend some time putting up a simple RESTful services facade that handles the mismatch on the server, where the heavy lifting is less costly than the device.
One of the key benefits of taking this approach is that it gets the services architects and designers to begin thinking of their data in a different way. Most enterprise services start from the database, or the system of record, and expose the information contained there in a representation that is often not very far from the way the data is stored in these system. This “inside-out” perspective is very common in most SOA implementations I see. But to effectively create and consume a mobile services API requires a little different perspective.
User experience has become the only metric that matters in mobile apps. And in order to deliver exceptional user experiences, you must have service that cleanly support the delivery of that experience, while managing the bandwith and resource constraints of a mobile device. So I generally recommend they flip the traditional “inside-out” perspective on it’s head, and start thinking of their services from an “outside-in” perspective. When the do this, whole new worlds of possiblilities begin to open up.
What I’m referring to is what we’ve begun to call a “Platform for Innovation”. RESTful services are intuitive, and with frameworks like WCF making them easier and easier to create, organizations can begin to build whole new services API’s with varying consumption patterns that are specifically tailored to the needs of a broader audience, both inside and outside of the organization.
Best Buy has an excellent example of what I’m talking about in their BBY Open API. It’s an extremely flexible implementation of a RESTful platform that exposes products, stores, categories reviews and much more information and make it available to anyone who wants to register. This platform is used not only by external developers, but by Best Buy employees to develop enterprise and mobile applications — in fact one of the questions when you register is “are you a Best Buy employee?”.
The mobile revolution is forcing many oranizations into re-thinking their SOA’s. The smart ones will jump on the opportunity to expand their reach to not only mobile developers, but a new class of enterprise developers who are empowered to solve business problems by exploring and stretching the services to their limits. This paradigm leads to an accellerated rate of innovation in the technology they use to put critical business information into the hands of the people who need it.