|Previous Posts to this post|
|Here are a few examples of cloud – based data offerings|
|Although I work for Microsoft, I want to present as balanced a picture as I can. That means I will address other options that are available to Android developers today, which can be considered to be outside of the Microsoft ecosystem. Some of the cloud offerings are Android specific while others are more general purpose.
My colleague, Aaron Stannard (http://www.aaronstannard.com/) came up with this diagram. As you can see, there is a tradeoff amount the cloud vendors in terms of customizability and of automation. Amazon, for example, is very customizable but is not as automated, since you are still dealing with configuring VMs and other infrastructure-oriented activities.
Google’s AppEngine is on the other end of the spectrum, not very customizable but very automated.
Where Azure Fits In
There is somewhere around 200,000 Android applications out in the wild. The types of back-end data stores are many and varied.
I presented several vendors here and I’m sure I missed a few. Feel free to let me know what is critically overlooked (firstname.lastname@example.org).
|Push or Pull|
| There are two ways mobile applications to get their data. First, a mobile application can simply request data. This is called "Pull," because the app is pulling data in. The second type is "Push," which means that data is sent to the mobile application from the cloud without the mobile application requesting it.
For example, it may be necessary for the cloud to notify mobile applications when new data is ready. A "Pull" scenario often means your are providing access to the cloud data with a RESTful architecture.
| While little can be done in making the client software re-usable, much can be done in creating a re-usable back end to service the various mobile platforms. An open, standards-based approach to a web service makes perfect sense when you consider supporting iPhone, iPad, Android, Windows Phone 7 or any other device that may burst onto the scene. The primary goal is to avoid anything custom on the back end that caters to a specific mobile platform. That’s where RESTful services come into play. The best example of an implementation of RESTful services is the world wide web itself. The important thing to remember is that a RESTful services is an architectural style. How you implement RESTful services is up to you. The inventor of a RESTful services Roy Fielding and he defines what RESTful services are in his seminal dissertation in the year 2000 called, Architectural Styles and the Design of Network-based Software Architectures.
|RESTful services are a style of software architecture based on the underpinnings of the World Wide Web.
|Below is a rough landscape of cloud-based data providers|
|The list below is not meant to be fully comprehensive. It is meant as a rough guide about the different types of cloud vendors out there. There are clearly dozens of other data providers that I did not bother to add the list below. As I said earlier, just let me know through e-mail what you think is critical and why.|
|This is a company that offers Push Notification Services (discussed previously). As stated earlier, this allows developers to send out notifications to its users, such as sending them important messages and updates, breaking news, current weather, and so on. UrbanAirship supports almost all versions of the Android device, which can simplify support for developers.|
|MongoDB is an open source database that MongoLabs will host for you. MongoLabs makes it easy for you to expose your data through a RESTful API. The underlying MongDB is a schema free, document-oriented database, that manages your data as collections of JSON like documents. The data can be constructed and nested into complex hierarchies, that can be indexed and are query-able.|
|The name of Google’s data store and cloud products are bundled in App Engine. You can program in a variety of languages including Java and Python. It is a Java 6.0 runtime that is available, so you could support JRuby, Groovy, Scala. In order for these languages to operate in App Engine, there are a set of incompatible libraries and frameworks that you must pay attention to. They also have an experimental language now called Go. There is also a query language called GQL. GQL allows you to execute queries from the Python runtime or from the Admin Console.|
|Amazon Web Services
|If you look at the developer offerings from Amazon, you will note Amazon Web Services as one of the first options at Developer.Amazon.Com. Amazon offers infrastructure as a service capabilities, based on their own back in technology platform. I perceive a Amazon on as an Infrastructure As A Service company, which means typically you are booting your own customized virtual machines. Typically, developers will set up their own custom security and network access configuration. I consider Infrastructure as a Service leaving you wanting more, because you’ll end up writing and configuring a lot of plumbing code. Users of the service can access a web service API, which allows you to programmatically add scale or reduce it. Amazon offers both hierarchical data stores as well as relational data stores. Amazon offers multiple data center locations as well as service level agreements.|
|Microsoft Windows Azure
| I think that when you look at the spectrum of the offerings mentioned above, Microsoft products do offer a unique approach. Clearly, we offer a full line of comprehensive products, both in terms of Compute and Storage, which include service level agreements and multiple data center support. When I think about how I would separate Microsoft’s offerings from the ones above, here is what comes to mind:
|Here is a link that will help you understand exactly what your costs are:
|Next post is about Architecture and data.
After that it is about building a RESTful service hosted in the cloud.
And after that post it will be about consuming the RESTful data from Android.