Click to see

Home Tutorials JavaScript Links
Keep an Open Eye ThePhotoFinishes Takethe5th PixofCanada Pix of Toronto Bookraft

theOpenSourcery

The Sidebar:
Cloud Computing

Cloud Computing is about Enterprise applications that have been brought to the Web, often to meet anytime (24/7 availability) and anywhere (global enterprises) requirements. Even 5 years ago such applications were on the bleeding edge because of security, reliability, speed and usability constraints. One by one each of these problems has been addressed, some like speed of operation and GUI usability much more successfully than others.The net result is that even the august IT pundits at Gartner have blessed the Cloud "as no less influential than e-Business".

But Cloud Computing goes beyond Web apps for enterprises and embraces SaaS - Software as a Service where companies large and small outsource key apps to service providers that deliver from the Web. The advantage is lower start-up time plus lower initial and ongoing costs; but at the main disadvantage that users are at the behest of the Cloud Vendor to keep up with the latest in new innovations and performance. Hence there is even more emphasis on the make or buy-decision for a broader segment of IT shops.

The Emergence of Cloud Computing

The Cloud Also Rises

There can be little doubt that Cloud Computing, or Enterprise-level Web Application Development, has become the marching orders of the day.
eBlogs- shows how most of new IT innovations at Demo2008 are for the Web
eWeek- chronicles the new reach and style of web development
Information Week- spells out why MS, Google spent $600M on Iowa Cloud sites
NYTimes- details how Cloud Computing Research is changing.

In addition ComputerWorld, eWeek, Information Week, Infoworld and many IT trade press publications have had a steady stream of articles on SaaS-Software as a Service and Enterprise Web Development. These articles give the flavor for how AJAX, SaaS,and RAIA are starting to win more and more adherents in business' small and large alike. There are clear arguments for adopting Cloud Computing:

1)Cloud Computing offers desktop UI equivalent ease of use while it runs everywhere on desktops, laptops, embedded, and mobile devices. This wider array of device support, connections, and operations allows for more innovative services to be offered by various organizations;

2)Cloud Computing can be much more available meeting 24/7 accessibility and global/anywhere availability requirements of more businesses;

3)Cloud Computing is much more open and client agnostic than Apple, Linux or Microsoft Windows apps which much favor their own desktop usage. Open development tools like HTML, CSS, DOM, JavaScript are at the core of this open foundation;

4)Cloud Computing comes much closer to delivering uniform, open and standards based coding. This includes W3C, Web Services and a growing array of SOA standards;

5)Cloud Computing, especially RAIA, also comes closest to delivering offline as well as online computing with nearly one code base for all platforms and operating systems. In effect, the presentation layer, under Cloud Computing, is coming closest to the Java ideal of write once, run anywhere;

6)Cloud Computing also comes closest to delivering instantaneous updates to applications. Only a small set of servers have to be updated to make the latest version of a cloud application available to all users. Some SaaS-Software as a Service providers have messaging and transition mechanisms for their online users to provide them with the fastest possible program updates;

7)Cloud Computing can provide lower risk customizations with end users or client experts able to adapt Cloud apps through a)simple configuration files, b)use of standard templates and styling systems and c)standard XML and Web Services for data integration. These customizations are nearly "break-free" when a Cloud app gets updated;

8)Cloud Computing also offers scripted customizations with the proviso that changes and updates may break these more sophisticated scripts (see Salesforce.com's Apex and other tools for example). However, again, SaaS and other online vendors are offering semi-automated updaters that can bring many user scripts up to date at the same time as the original Cloud is updated;

9)Cloud Computing leads the way on breaking down non-integrated silos of information that have plagued IT organizations for the past 50 years. Cloud Computing adapts a wide range of client server, Web Service, and Messaging technologies to not only get at dispersed data resources but also to deliver the processed data onto the IO devices and platforms where users need it - Cloud Computing is the first fulfillment of information at your fingertips;

10)Cloud Computing offers low initial cost of entry, low risk trials of new software and low overhead (smaller IT operational teams and development staff) for organizations large and small. The trade-offs are less control of IT feature innovation, possibly lower speed and consistency of operation, and potentially greater reliability/security risks plus possible conflicts on backup and restoration priorities with other SaaS customers.
These are the principle reasons that Cloud Computing has gained wide ascendancy in the past few years. But there is another critical reason as well.

The Cloud is still relatively monopoly free. For example, if you want to get better features, greater integration and more reliability in say word processing or spreadsheets or mail services - essentially one vendor, Microsoft, dictates where, how, and at what rate innovations will occur in these apps. And ditto for a broad swath of PC apps. In the Cloud the number of vendors providing just these office services is large and vibrant. Microsoft is just in but Adobe Buzzwords, Google Docs, TextFlow, Versionate, and Zoho especially have extended document, spreadsheet and slideshows into real-time collaboration and/or Wiki-like co-operative features. And each offers different initial and ongoing fees and services. This is one reason the Cloud is noted for its high level of innovation in contrast to the Apple, Linux and Windows desktops The major desktop OS and their software rosters have become moribund with nth degree refinements, slow fixes to old intractable problems or shameless clones of existing software. OS vendors throw at new entrants a variety of barriers to entry:

1)alpha and beta technical specs are available to the home team (and a privileged few others) for a significant head start on development;
2)debugging and subsequent support is biased to the home team;
3)just acquiring the complete, latest and stable set of APIs with examples is a very mixed proposition;
4)then non-home team software has to run a gauntlet of OS compatibility "contracts" that can make the software very proprietary and OS specific;
5)finally, the non-home team software vendor may encounter highly competitive marketing deals including big software give aways from the OS vendors. These are favorite Apple and Microsoft tactics. Linux vendors tend to shun non-GPL software.
In sum, desktop OS software has become very stunted and inward looking and not nearly as innovative as what is happening in the cloud. For example, one can now get an online version of a photo editor that looks and perform almost as well as say Photoshop 5 or 6. But it is not from Adobe, its from wow. And Adobe does have photoshop.com for its online photo editor but it competes with

So Cloud and mobile phone computing is a)where the software money is to be made and b)more innovative than on the desktop(and the Cloud has just seen the entry of a major player, Google with Chrome, into the important browser market). In contrast, all the big software markets on the PC are dominated or being invaded by Microsoft. Ditto for Apple on the Mac. Venture Capital has absolutely dried up for PC and desktop software. In contrast, as noted ,the Cloud is alive with many companies offering a wide selection of new and innovative software and services. But the Cloud is not without some gray menace and troublesome reaches.

Problems in the Cloud

In the list above, the trade-offs associated with Cloud Computing have been cited.
If companies take the SaaS-Software as a Service approach to Cloud Computing they are essentially ceding major chunks of application development to 3rd party providers. Now this is not a new phenomena, as ERP vendors like Microsoft, Oracle, and SAP have taken over big chunks of accounting, payroll, and human resources management; SAP in SCM has done the same for supply chain management including inventory and production planning+scheduling; and SalesForce.com in CRM leads customer relationship management and sales marketing efforts.

Nonetheless, some IT shops are betting that SaaS advantages, especially minimizing the need for IT facilities and staff plus its own ability to customize those SaaS apps will outweigh the disadvantage of ceding downstream app innovation and control to outside SaaS software vendors. Of course this risk can be mitigated if organizations continue to do some portions of Web or Cloud Development themselves.

There is also the the trade-offs of operational control. LANs and local PCs can always be made to perform with better speed, reliability, and/or security than the far-flung Cloud Computing installations of SaaS vendors. The degree of better performance may be marginal in most circumstances; but can be of critical concern for some applications. This can become of particular concern in back-up situations where all parties are effected and yet some may have greater need for priority service while the Cloud provider may only be able to operate on an equity-access basis. Of even greater concern is how well prepared SaaS data center are for natural disasters (tornadoes, flooding, earthquakes, fires, terrorism where not just the SaaS data center may be vulnerable but also critical Cloud communication sites as well).

But the biggest challenge and potential liability is Cloud Development. Inherently it is more risky for a number of reasons:

1)Because the Cloud is more widely spread over the Web and various services and server facilities it has many more potential points of failure. This inherently effects both relative reliability and security adversely;

2)The Cloud also presents more complexity in its many connections and far-flung services. This presents greater problems in ongoing operation and management of those services. To an extent, that complexity can be disguised because a SaaS or Live Services vendor, as one name to blame, disguises the diffuse nature of operational problems. But if SLAs-Service Level Agreements are not being fulfilled because, say a major set of Web nodes have been flooded, the relatively small payment and options to go elsewhere are of small consolation to organizations cut off from their vital IT operations by the outage.

3)Likewise, Cloud Development is inherently more complex. Here is why: there is not just more points of failure but also difficult trade-offs in security and reliability versus usability and performance. There are also very complex algorithms in the n-tier world of the Cloud. Thus, there are some extremely challenging development, assembly and debugging problems played out in a fast changing technology environ. Finally there is the curious problem of richness - that is so many competing good Cloud technologies and frameworks whose trade-offs and choices just add to the risks.
It is this latter problem of development in Cloud Computing that is examined here in more detail because there are some distinctly counter-intuitive forces at play here. Yes, the complexity of n-tier distributed computing used in Cloud Development is inherently challenging because of the Presentation, Storage, and Communication or Networking layers - all require more advanced and often state-of-the-art algorithms and processes. So programming will be tough and exposed to greater risk. And that is the topic of our second section on Cloud Computing