Monday, March 15, 2010

Emergent Cloud Computing Business Models

The last year I wrote quite a few posts on the business models around SaaS and cloud computing including SaaS 2.0, disruptive early stage cloud computing start-ups, and branding on the cloud. This year people have started asking me – well, we have seen PaaS, IaaS, and SaaS but what do you think are some of the emergent cloud computing business models that are likely to go mainstream in coming years. I spent some time thinking about it and here they are:

Computing arbitrage: I have seen quite a few impressive business models around broadband bandwidth arbitrage where companies such as broadband.com buys bandwidth at Costco-style wholesale rate and resells it to the companies to meet their specific needs. PeekFon solved the problem of expensive roaming for the consumers in Eurpoe by buying data bandwidth in bulk and slice-it-and-dice-it to sell it to the customers. They could negotiate with the operators to buy data bandwidth in bulk because they made a conscious decision not to step on the operators' toes by staying away from the voice plans. They further used heavy compression on their devices to optimize the bandwidth.

As much as elastic computing is integral to cloud computing not all the companies who want to leverage the cloud necessarily care for it. These companies, however, do have unique varying computing needs. These needs typically include fixed long-term computing that grows at relatively fixed low rate and seasonal peaks. This is a great opportunity for the intermediaries to jump in and solve this problem. There will be fewer and fewer cloud providers since it requires significantly hi cap-ex. However being a "cloud VAR" could be a great value proposition for the vendors that currently have a portfolio of cloud management tools or are "cloud SI". This is kind a like CDO (‘Cloud Debt Obligations’ :-)) – just that we will do a better job this time around!

Gaming-as-a-service: It was a while back when I first saw the OTOY demo. Otoy is scheduled to launch in Q2 2010. I believe that there is significant potential in cloud-based rendering for the games. Having access to an online collection of games that can be rented and played on devices with a varying degree of form factors is a huge business opportunity. The cloud also makes it a great platform and a perfect fit for the massive multi-player collaboration. Gaming-as-a-service could leverage everything that SaaS today does - frequent updates, developer ecosystem, pay-as-you-go etc. This business model also improves the current monetization options such as in-game ad placements that could be far more relevant and targeted.

App-driven and content-driven clouds: Now that we are hopefully getting over the fight between private and public cloud let’s talk about a vertical cloud. Computing is not computing is not computing. The needs to compute depend on what is being computed - it depends on the applications' specific needs to compute, the nature and volume of data that is being computed, and the kind of the content that is being delivered. Today in the SaaS world the vendors are optimizing the cloud to match their application and content needs. I would expect a few companies to step up and help ISVs by delivering app-centric and content-centric clouds. Being an avid advocate of net neutrality I believe that the current cloud-neutrality that is application-agnostic is a good thing. However we can certainly use some innovation on top of raw clouds. The developers do need fine knobs for CPU computes, I/O computes, main-memory computing, and many other varying needs of their applications. By far the extensions are specific to a programming stack such as Heroku for Ruby. I see opportunities to provide custom vertical extensions for an existing cloud or build a cloud that is purpose-built for a specific class of applications and has a range of stack options underneath that makes it easy for the developers to natively leverage the cloud.

Friday, March 5, 2010

NoSQL Is Not SQL And That’s A Problem

I do recognize the thrust behind the NoSQL movement. While some are announcing an end of era for MySQL and memcached others are questioning the arguments behind Cassandra’s OLTP claims and scalability and universal applicability of NoSQL. It is great to see innovative data persistence and access solutions that challenges the long lasting legacy of RDBMS. Competition between HBase and Cassandra is heating up. Amazon now supports a variety of consistency models on EC2.

However none of the NoSQL solutions solve a fundamental underlying problem – a developer upfront has to pick persistence, consistency, and access options for an application.

I would argue that RDBMS has been popular for the last 30 years because of ubiquitous SQL. Whenever the developers wanted to design an application they put an RDBMS underneath and used SQL from all possible layers. Over a period of time the RDBMS grew in functions and features such as binary storage, faster access, clusters etc. and the applications reaped these benefits.

I still remember the days where you had to use a rule-based optimizer to teach the database how best to execute the query. These days the cost-based optimizers can find the best plan for a SQL statement to take guess work out of the equation. This evolution teaches us an important lesson. The application developers and to some extent even the database developers should not have to learn the underlying data access and optimization techniques. They should expect an abstraction that allows them to consume data where consistency and persistence are optimized based on the application needs and the content being persisted.

SQL did a great job as a non-procedural language (what to do) against many past and current procedural languages (how to do). SQL did not solve the problem of staying independent of the schema. The developers did have to learn how to model the data. When I first saw schema-less data stores I thought we would finally solve the age-old problem of making an upfront decision of how data is organized. We did solve this problem but we introduced a new problem - lack of ubiquitous access and consistency options for schema-less data stores. Each of these data stores came with its own set of access API that are not necessarily complicated but uniquely tailored to address parts of the mighty CAP theorem. Some solutions even went further and optimized on specific consistencies such as eventually consistency, weak consistency etc.

I am always in favor of giving more options to the developers. It’s usually a good thing. However what worries me about NoSQL is that it is not SQL. There isn’t simply enough push for ubiquitous and universal design time abstractions. The runtime is certainly getting better, cheaper, faster but it is directly being pushed to the developers skipping a whole lot of layers in between. Google designed BigTable and MapReduce. Facebook took the best of BigTable and Dynamo to design Cassandra, and Twitter wanted scripting against programming on Hadoop and hence designed Pig. These vendors spent significant time and resources for one reason – to make their applications run faster and better. What about the rest of the world? Not all applications share the same characteristics as Facebook and Twitter and certainly enterprise software is quite different.

I would like to throw out a challenge. Design a data store that has ubiquitous interface for the application developers and is independent of consistency models, upfront data modeling (schema), and access algorithms. As a developer you start storing, accessing, and manipulating the information treating everything underneath as a service. As a data store provider you would gather upstream application and content metadata to configure, optimize, and localize your data store to provide ubiquitous experience to the developers. As an ecosystem partner you would plug-in your hot-swappable modules into the data stores that are designed to meet the specific data access and optimization needs of the applications.

Are you up for the challenge?