As a “networking guy”, it’s hard for me to write the following; applications drive the world. The internet did not explode because of TCP/IP, MPLS, and BGP, instead it responded to the growing demand of bandwidth/connectivity fueled by new and innovative applications that revolutionized communication and the exchange of information.
Cloud computing will either succeed or fail based on the success of old and new applications. Legacy application vendors such as Oracle, SAP, IBM, Microsoft, Adobe, and more aren’t simply going to disappear in the face of new cloud applications like Facebook, Salesforce, or Google. Enterprises rely on software to manage, monitor, and plan every phase of their operations. Shifting off these applications would be expensive, time consuming, and foolish unless a tangible ROI is achieved. Not to mention security and privacy concerns that grows with each passing day.
Additionally, most applications are not designed to take advantage of the benefits of these new cloud infrastructures. These applications are designed to scale-in but often have difficulty scaling-out. This is a complex problem of how to add computing power to existing applications without requiring a re-write of the existing software; check out what the team at Appistry is up to. At this point, I am not talking about virtualization as that is the subject of a later post.
Cloud computing must be more than simply infrastructure-as-a-service (IAS) or platform-as-a-service (PAS) combining with software-as-a-service (SAS). Isn’t IAS or PAS available today as outsourcing and/or hosting? Whatever happened to shared services? Didn’t SUN offer pay-as-you-go computing once before? Forgive me, but isn’t SAS simply a business model? Old ideas combined with old technology equals the same old result.
Finally, software companies face difficult challenges of their own. What language is best for new applications? JAVA? Ruby? Twisted-Python? How do applications take advantage of CPU and memory breakthroughs? X Cores? Quad channel memory? Multi/Hyper threading? How to build distributed systems? SOAP? Erlang? What’s the best way to provide off-line access? Most importantly, how do applications take advantage of virtualization?
Build it and they will come may work for the movies, but it does not make for good business or a computing revolution.