26
Sep

Cloud Computing brings about real benefits to IT organizations by making available computing resources that you can pay as per your usage, while taking away the hassles of resource management. My previous blog gave a basic idea of what is cloud computing all about.This blog post focuses on how the Cloud can be architecturally used to drive your mobile applications across various platforms. In the process, we shall see that using the cloud, we can achieve a single layer that can drive the same mobile application running on multiple mobile OS platforms.

The last few years have seen the emergence of APIs (Application Programming Interfaces). In fact various organizations are now solely known by their APIs and have become popular among developers. Every popular site, be it Facebook, Twitter or even start-ups like Twilio are focused on exposing their core services and data via an API so that developers can take advantage of it. There are a couple of important things that is highlighted by these APIs. The first one is that they are exposed via standard mechanisms like REST and provide data typically in JSON/XML formats. The second one is that these services are primarily hosted on Cloud infrastructure. The Cloud infrastructure here is typically from the IaaS vendors (Infrastructure as a Service). Some of the key players in IaaS are Amazon and Rackspace, which provide computing resources, storage and bandwidth via a pay per use billing cycle.

Entire ecosystems of applications have developed around these services that have been exposed in the Cloud. And a large number of those applications are mobile applications. The interesting part is that the mobile application development landscape is pretty much fragmented. Each of the big OS vendors have their own language, toolsets and operating systems that make interoperable applications difficult to write. But the one place where they is a sort of a common understanding and which has resulted in a large number of client applications is that the Server layer i.e. the Cloud API exposed is pretty much the same. The REST API mechanism that is exposed over standard HTTP protocol helps create a client platform agnostic mechanism in which a developer can pick a language of his/her choice on the client side and simply code up the front –end i.e. the client application.

So a combination of an API, exposed as a Cloud Service via standard HTTP bindings is a great way to write a common server layer and power all your mobile applications via that. Doing so also addresses one of the defining principles in software engineering of reusing as much as you can instead of writing a layer for each client programming environment.

At high level you have the following architecture that can drive multiple mobile applications via a single REST layer that you expose in the cloud:

You may refer to “Extending cloud infrastructure to the mobile world” for more exposure.

To summarize:

  • Build a common REST layer (API) that will expose functionality over XML/HTTP
  • This common REST layer will be used by all Thick Client applications and Thin Clients. This means that even if you go the route of HTML web applications, they can use the same API.
  • Further sophistication can be provided on the Server side to restrict access to certain kinds of devices. This helps in ensuring that you deliver optimum experience to the devices or even restrict access as needed.
Romin Irani
Romin Irani– Principal Architect

, , ,