Hitchhiker's Guide to Software Architecture and Everything Else - by Michael Stal

Saturday, March 28, 2009

Get off of my Cloud

It enters the stage as one of the great buzzwords of the last months and if we had not to deal with an economic crisis these days it would gain much more attention. Cloud Computing and its relatives such as SaaS are dominating the IT world. Ever heard about Windows Azure, Google Web Apps, Amazon E2C and S3? The idea behind this paradigm is rather old: why not provide resources transparently as services  in a hosting infrastructure? This would let IT departments and CIOs refrain from being infrastructure providers. Instead they could focus on their actual job: providing IT functionality to drive their company's business. 

By services I don't just mean applications, but all kinds of services.  An application such as a CRM app could be a service. Likewise, services could comprise a  piece of middleware such as a persistence solution or a workflow management system. And in the most extreme case, even the infrastructure itself, for example, operating systems, storage or network solutions might be deployed as services. Services where ever you look.

The idea behind cloud computing is a very promising one. Just take trusted infrastructure providers, let them host the applications (services) we need within an Internet-based cloud, and access these services from an inexpensive device. No need to buy or maintain your own data center solutions anymore. A data center on everyone's desktop if you like. Whenever you need more resources, just take them from the cloud and only pay for what you use. "Elastic computing" made real. Sounds like a good idea in an economic crisis, doesn't it? The strength and weakness of Cloud computing today is its dependence on external providers. Would you run your mission-critical applications with sensitive data on a 3rd party infrastructure that is not under your control and which supports multi-tenancy? What about services running in a remote country that you do not trust? How can a provider guarantee quality-of-service in an Internet-based infrastructure? Remember all the recent downtimes of Google Mail. What if all your company mail is running on such a network?

These problems imply a strategy where mission critical applications only run in a private cloud, while only a fraction of less critical applications may leverage public clouds. As soon as the Cloud Computing technology evolves and matures, more and more services might be moved to public clouds.  Then, private clouds could also be extended using public clouds. By the way, this extension approach is only feasible if standards foster interoperability of cloud solutions.

From 10000 feet Cloud Computing denotes sort of a business solution that introduces pay-per-use models for all types of services. Regarding technology this solution is based upon a bunch of existing paradigms such as virtualization, SOA, Multicore CPUs, NAS, or Web 2.0.

What all those people enthusiastic about Cloud computing tend to forget, is that there is no free lunch. It, indeed, represents a promising technology with a high coolness factor. However, from a software architecture perspective, it is rarely sufficient to just deploy application silos in virtual machines that are hosted somewhere else in the network. To really leverage clouds your applications need to be aware of the cloud infrastructure. You might split islands of functionality into interconnected services, and integrate application services with other platform or infrastructure services. What about issues such as collocation of services and data? In addition, engineers need to create desktop-like GUIs that communicate with backend services as promoted by Web 2.0. Last but not least, quality of service such as availability or responsiveness does not only depend on infrastructure and platform but is heavily influenced by the solution architectures.  The best infrastructure or platform does not help if the software architecture is a bunch of crap.

Cloud Computing offers fascinating new possibilities. But we shouldn't suffer from the hammer-and-nail syndrome. When applied inefficiently Cloud computing will inevitably lead to problems and disappointments. If your management or CIO department is all of a sudden promoting Cloud computing, this might be a good thing, but it also requires you as a software engineer to deal with expectation management. And finally, mind the architecture!

6 Comments:

  • Indeed, Cloud Computing seems like a promising new paradigm to data center deployment.

    You are probably aware of this, but for your readers, it might be worth pointing out, that "Grid computing" is the academic forefather of "The Cloud". So actually it is not something entirely new and some (mainly academic) problems where already solved by cloud computing.

    All the best from Bonn,
    Valentin

    By Blogger valentin, at 9:05 PM  

  • Dear Valentin,

    Yes, a very valid point. However, there are some differences between Grid and Cloud computing. For example, Grid computing focuses on the backend, not on the frontend. In Cloud Computing both sides are essential (see Flickr, Google Docs and the like). Grid/Utility computing intends to provide computing power such as an electricity grid provides energy.
    I would say Cloud computing introduces a new business model with Grid computing being one of its technology foundations.

    -- Michael

    By Blogger Michael, at 10:13 PM  

  • Hello Michael.

    I will go further than that. I would even say the word cloud means the "where" while the word Grid means the "how".
    Basically, a grid can be in your basement, the cloud is on the internet.
    The grid is for much power, in the cloud you can start with just one small box.

    Cheers.


    William Martinez Pomares.
    Architect's Thoughts

    By Blogger William Martinez Pomares, at 5:06 AM  

  • Nice comment. The grid is like the energy infrastructure (energy distribution). Your cloud could be in a virtual machine right in your desktop (private cloud) or it could extend into somewhere else in the internet (like a power plant). In Germany you can use the same grid but choose from whom you'd like to buy electricity. Obviously, the comparison does not work in all details, but it is really nice

    By Blogger Michael, at 9:00 AM  

  • Technically speaking this might look very promising.
    But the big question is who will really benefit from this ?
    Sure, the quick answer is "all of us". Is it so ? What about the many jobs that will simply become obsolete ?

    There is also a big security concern. What if someone breaks into the cloud and steals private information ? This certainly wouldn't be an impossible scenario.

    By Anonymous Anonymous, at 10:48 PM  

  • Dear Michael,
    Thanks for all your blog posts and sharing your ideas with us!!
    I do enjoy reading it and I'm for sure among the most often readers :)
    Michael, I thought that the article I just found in the net will be of your interest. Here it is http://techzone.enterra-inc.com/architecture/algorythm-of-defining-plain-polygon-signature-point/

    enjoy reading and agin tnx for your posts!

    By Blogger LeO_o, at 7:13 AM  

Post a Comment

<< Home