How Will Cloud Computing Impact Software Industry?

Computing in which services and storage are provided over the Internet (or “cloud”) – Wictionary

Cloud computing is Internet-based computing, whereby shared resources, software, and information are provided to computers and other devices on demand, like the electricity grid.- Wikipedia.

What does it really mean? If you look at the Cloud Computing Conceptual diagram on Wikipedia page, you will notice that you are already a consumer of Cloud based applications. Cloud Applications run on the Cloud Infrastructure. They are delivered to you as SasS – software as a service. So when you talk about clouds, depending on where you come from you think of two or three things – infrastructure (as a service), platform (as a service) and software (as a service) known commonly as (IaaS, PaaS and SaaS)

Some times it is easier to understand what Cloud computing is by trying to find out what Cloud Computing is not. While I am not sure about all the points in James list, I think he got it pretty much right. However, here are two seemingly contradictory statements that leave me scratching my head:

If there is no API… its not a cloud.

If you need to rearchitect your systems for it… Its not a cloud.

Anyway, now that we got a little better idea about Cloud Computing let us see what it does to us in the software industry. Here are a few thoughts:

IT Infrastructure will change dramatically. Some applications will shift to private clouds and others to public clouds. There may be a lot of optimization of resource usage.

Some IT jobs may vanish altogether. New skills will be in demand.

The way applications are developed, tested, deployed and continuously re-factored will undergo a change. What if every enterprise becomes like a Google in delivering incremental improvements constantly?

The selling and licensing of applications will change too. I wonder what happens to all those batch apps that run once a week or a month?

The way data is handled will undergo a major shift. Data driven applications will be will become a mainstream. Customer data, visitor data, partner data, behavioral data will provide more insights for businesses.

Business models will change. We have already seen some interesting shifts.

The architecture of applications will continue to evolve. The way apps store/retrieve data, the way they inter-connect with other apps on the cloud will change. Every app has the potential to become more intelligent and more adaptive since we will know how users use them.

Data volumes will skyrocket. This will cause a new class of skills to emerge. Facebook is talking about petabytes and zetabytes will become common. There are already jobs like Data Scientists, Data driven Journalists appearing on job boards. There will be pattern miners, data visualizers and machine learning will become mainstream and will get better with so much of training data. Google is already talking about “serendipity engine”. Data Analytics will become a core tool for every business.

Search will undergo change as well. As so much data sits in the cloud, a lot of it locked as the invisible web, we need a new class of search engines. “Exploration Engines” will become the dominant breed of search for private data.

New markets will be created. I can’t even hazard a guess on the innovations that will be enabled by this new computing infrastructure. Most of it will happen due to the unbelievable level of access to government and public data as well as social graphs, information streams, activity streams and real-time location data.

This is not even a comprehensive list. Each item in the list points to several opportunities. That is a topic for another post.

Interesting discussion topic. From an Australasian perspective it seems that the notion of ‘cloud computing’ is fairly missunderstood still. In my research of this topic area, i’ve had various responses as to why – including the following. I’d be keen to get your take on this…

Cloud Computing is ill defined, which implicitly makes it “misunderstood” because there is no guarantee that any two people are talking about the same thing. If we talk about “round fruit” and you think grapes and I think oranges, our conversation is going to be strange at best, probably contentious, and no matter what the outcome we still won’t come to any useful agreement because we aren’t even talking about the same thing!

Once there is a clear definition of Cloud Computing provided by an authoritative standards agency, then the vendors and the users can start comparing their ideas to a standard. The problem is that I don’t know of any authoritative standards agency that is willing to tackle the issues of Cloud Coumputing yet. The vendors can’t really do much to help this, because vendors by definition can’t be independant.

The technologists can try to get one of the independant authoritative standards bodies like the ISO to provide a clear, formal definition of what is Cloud Computing, and better yet to provide some way to measure or rank compliance with the standard and features provided.

Chris,
Thanks. But till some standard definition comes up, we need to go with what is generally agreed upon, right? This happened with databases too till E.F.Codd wrote an article on what relational database is what it is not (when Cullinet was claiming that their IDMS was relational too). I think when a new technology/methodology/approach is nascent, it does stay fuzzily defined. Current examples include Web 2.0, Cloud Computing, NoSQL and a host of others.

But there seems to be some general consensus about a few things:

1. A cloud app is something that does not run on your desktop
2. A cloud platform is something that where whenever you run your application it may run on a different set of machines (There may be more. I think private clouds muddy the picture a bit.)
3. A cloud implies virtualization?

Based on whatever I have read (which is not that much), the attributes of a cloud app seems to be:
1. location transparency
2. Ability to be controlled by an API
3. Ability to be accessed through a browser or an API
4. Ability to be spread across multiple physical machines
5. Ability to scale
6. Ability to execute in virtual machines
7. Ability to expand and contract on demand

Jame’s “what is not cloud” list is certainly thought provoking. If you closely look at the list none of the vendors who are currently leaders of Cloud computing space can claim to be providing Cloud infrastructure. Here is why:
1. For Google you have to rewrite the app and dump your existing database support
2. For running on Amazon you need to create an image and add code for load balancing (?) etc.

If we forget the term Cloud computing and talk about Scalable Web Computing, we know that we need to make some architectural changes for an application to scale.

So why not loosely define “Cloud Computing” as – on demand scalable infrastructure and applications running on that infrastructure?

I have been part of standard committee once (ANSI SQL), as a very passive member. Frankly, I won’t hold my breath for a standard to emerge. They almost always seem to be after the fact.

Frankly, my goal in writing the article was much more to assess them impact on software development than try to define the cloud. But you need a starting point to talk about what you want to about.

Shannon,
Thanks. That is good link. I think some jobs will be lost and others gained. But there will definitely be shifts and movements from the internal IT jobs and a few new skills may be required too. I like the quote that really sums it up – cloud computing spurs innovation by eliminating the “undifferentiated heavy lifting.” Like in any emerging technology, people who train and acquire new skills may get jobs.

Thanks. Please check out a free report on cloud computing from InfoWorld. That may be of help too. I will try to get some links for you. The best way to find more info is to do a google search on “top in cloud computing”.

There is a lot of scare for I.T jobs when people bring up the subject of Cloud Computing but using this utility is not for all businesses and even if a corporation were to use this service I.T consultants is still a very needed position considering the software complexity that goes into this.

I am not sure about the impact of IT jobs. But the skills may need to be upgraded. For enterprise, unless the usage of apps changes dramatically, the shift may not be as big. The jobs that may be affected more may be the system administrators and network administrators. For application developers, the biggest shift may be the way they handle data. I think it may be more likely that the new apps are built using the new facilities of Cloud computing.