Circuitous windings in thought

July 25, 2008

Cloud Computing and Software Clients

Filed under: Uncategorized — David Chou @ 4:07 pm

As the Web evolved, there has been countless proclamations that client-side software is dead or on its way out. Certainly, the staggering pace of innovation in Web application platforms and Web-oriented architectures, and associated mindshare shift towards Web development models, do show that client-side software is becoming less relevant than the heydays of client-server computing, at the very least.

And many people think that the move towards cloud computing also marks the inflection point where the desktop is becoming irrelevant, such that not just data, but everyday software applications and utilities are moving into the cloud too. And the Web browser becomes the new desktop that is ubiquitous and comes with the benefits of zero-footprint applications that can follow you wherever you go.

As the Pendulum Swings

At the same time, it seems we’ve reached a plateau where the focus has shifted from ensuring the availability (or accessibility) of capabilities in the cloud, to improving usability of cloud-based services.

In other words, as an industry, we have gotten sufficiently productive at developing high-quality Web applications delivered via browsers, and are starting to seek the traditional benefits of client-side software especially from a user experience perspective. Partly due to:

  • The document-based HTML user interface model is reaching limits in terms of integrated user experiences
  • JavaScript and AJAX-rich implementations needing more sophistication are reaching complexity levels of desktop software
  • Downloaded on-demand and zero-footprint deployment/installation, Web applications still make use of client-side code and are increasingly balancing trade-offs between richness and performance (client-side, download size, network bandwidth, etc.)
  • Online applications requiring users to be on-line; bringing Web applications off-line still has its challenges; that is, Web applications don’t automatically convert to good desktop applications
  • Creating capabilities beyond what the browser platforms provide mean writing desktop software components that add complexity in integrating with the Web applications
  • RIA technologies extend the HTML model, but still restricted by the browser

And a few signs in the blogsphere (i.e., "Web App + Offline = Crappy Client App", "Maybe Microsoft is Right…") of this turn-around:

Q: What do you get when you cross a browser application with the ability to go offline?

A: A client application without any the goodness that the platform (be it Windows or OS X) has to offer.

SaaS and Software Clients

SaaS CRM vendor Entellium recently released a smart client and said it will phase out its existing browser-based product over the next 12 months. It was reported that the move helped boost sales, and cut customer acquisition costs by as much as 80 percent.

The smart client application looks very slick, and is built using Microsoft’s Windows Presentation Foundation (WPF) technology:

My colleague John Stame has also just worked with Sciformatix to implement a SaaS solution built on .NET, but also delivered multiple access points including a browser interface, a mobile device interface, and a .NET-based rich client:

And the well-known New York Times Reader which was mentioned by PC World as one of 2007’s 100 best products.

These services are still delivered SaaS-style, with data and processes that are hosted in the cloud. But smart clients provide a more intuitive interface for users, while at the same time adding the much needed off-line capabilities. Plus, the decision doesn’t have to be either/or or mutually exclusive; browser-based and client-based software can be implemented and deployed at the same time to provide a higher level of service to users, taking advantage of best of both worlds.

Of course, these cases still represent a rather small sample size of the general SaaS community, but they are good examples of leveraging the appropriate technology to differentiate and add value to customers.

Software Clients Making a Comeback?

Well, perhaps not completely; but it would be prudent to not ignore their value propositions. Basically, it is about improving usability and enhancing user experiences when interacting with cloud-based services. From that perspective, client-side software tend to have these benefits:

  • Higher fidelity data visualization and interaction models, than the HTML-based minimalist models allowed in browsers
  • More robust client-side state management
  • More smoothly bridge on-line and off-line modes
  • Take advantage of the device’s hardware resources and deliver targeted experiences in different form factors
  • Not restricted by the browser’s sandbox security model
  • One-time installation cost for all implemented features
  • User experience as a focus; more than accessibility

For example, take a look at a video of InterKnowlogy’s recent work on Surface. Now underneath the covers it is still a WPF-based .NET application, but it represents the kind of application that is best-suited for client-based implementations instead of browser-based.

Of course, Microsoft has a vested interest in keeping the desktop and client software relevant. But the industry is not oblivious to them too, as many well-known examples exist today:

  • Apple iTunes, iPhone SDK
  • Adobe AIR
  • Google Gears, Android, Desktop, Toolbar, Pack, Earth
  • Yahoo Konfabulator
  • eBay Turbo Lister, Outlook AddIn
  • Salesforce Offline and Mobile Editions, Outlook integration

Development Concerns

There are many well-documented issues regarding client software development, that have turned many developers away in the past. However, just as Web application platforms are starting to integrate more with the desktop and client-side deployment models, software client platforms have also integrated many benefits from Web application platforms. For example,

Moving programming models to a higher level than the operating system. The declarative development model for browser-based applications allows developers to work at a much higher abstraction level and not have to worry about infrastructure-level issues. Similarly, client-side platforms like Java SE, .NET, Adobe AIR, Google Gears, etc. also provide sandbox models where developers don’t have to be concerned with things such as memory management and garbage collection, system-level security, etc.

Web-based software deployment and distribution. Just like FireFox and Opera, which are client-side software too, client-side platforms today allow distribution via the Web with simple download & install processes, and self-updating capabilities (in terms of versions, patches, updates, etc.).

Cross-platform and cross-device application portability. There is no consistent story from this perspective, but some progress has been made. Off-line RIA platforms such as Google Gears, Adobe AIR, Microsoft Live Mesh, etc. all support Web-based development models and technologies. However, fundamentally, they are still very technically different platforms and requires unique developer skillsets and knowledge.

Overall complexity. Similarly, levels of complexity varies between different platforms. However, in general we do see that client-side platforms are also adopting more declarative programming models, like the use of XAML in WPF applications instead of using proprietary/binary controls and manually bind to them. In fact if the level of richness required in an application goes above a certain threshold, adopting client-side platforms may be a simpler approach than trying to do so in Web applications.

All About User Experience

Ultimately, browser platforms will continue to serve as the easiest way to enable broad reach and ubiquitous accessibility to a large customer base. But at some point, one of the best ways to differentiate and add value is to improve on user experience.

And it’s not limited to desktop client software. Increasingly, and sometimes more appropriately, locally-installed software are being used on mobile devices to deliver more intuitive user experiences. For example, applications on iPhone can be developed using common Web technologies, but they do need to be built on the iPhone SDK in order to integrate seamlessly into the iPhone experience. On the other hand, WAP-based or browser-based mobile applications tend to be ultra-minimalist and comparatively less intuitive to use.

One of the ways to look at this is to determine whether a particular application adds more value to the user by being client-centric, which cloud-based services become complementing factors; or by being cloud-centric which means client software is best suited for specialized purposes.

Anyway, software clients may not be the default choice in providing cloud-based services to users, but they can be a useful option on any architect’s tool belt. They’re not always worthwhile, but just as no one technology is one-size-fits-all or all-supplanting, software clients can add significant value under the appropriate circumstances.

Cross-posted from my blog at http://davidcchou.com

Describing Cloud Computing

Filed under: Uncategorized — David Chou @ 2:35 am

Cloud computing, the buzzword du jour and hottest cliche in IT at the moment, is a source for extensive debates as well as general confusion. Just like the other buzzwords, SOA, Web 2.0, Software-as-a-Service (SaaS), "cloud computing" is a very general term, and there are many interpretations of what it means.

And just like those buzzwords, cloud computing represents the convergence of many other megatrends and evolutionary developments leading up to this point. For example, SOA, Web as a platform, SaaS, utility computing, grid architectures, on-demand computing, outsourced hosting, managed/application service providers, etc., can all be considered contributing components to cloud computing.

This slide from Gartner has a nice list of some common misunderstandings of cloud computing.

So what is cloud computing then? Taking a similar approach to my last year’s post on Web as a platform, a formal definition of cloud computing won’t be attempted here. Instead, we will try to describe the emerging phenomenon by looking at the components and contributing aspects and patterns, as well as some of the current issues and challenges.

Fundamental Aspects of Cloud Computing

Again, this is just one way of looking at cloud computing, among many others. Basically, a couple of fundamental aspects I think are relevant:

  • Service Delivery
  • Service Composition
  • Service Consumption
  • Economies of Scale
  • Network Effect
  • Ubiquity / Pervasiveness

Service Delivery

The cloud has become an alternative means of delivering various types of capabilities as services. Software-as-a-service (SaaS) is one that receives a lot of attention, but from a cloud computing perspective, it can be any type of technology-enabled capabilities, delivered as-a-service. For example, virtualized storage, communication, compute capacity (utility computing), are all existing forms of capabilities delivered as services, but are not categorically defined as software capabilities.

In the SaaS space, Salesforce.com has been cited as one of the prime examples, as a complete end-to-end solution delivered as a service. Earlier examples include outsourced hosting providers, managed service providers, etc. Today the cloud-based delivery model is being applied across all types of scenarios, including delivering traditional desktop applications as cloud-based services, such as Google Apps and Zoho Office. Microsoft of course has its own set of cloud-based services as well.

Service Composition

Not all services are of the same type. In fact many types exist as well as many ways to categorize/describe them. They include infrastructure, platforms, building blocks, etc., that operate on a technical level, to finished services that users can interact with directly.

The fundamental aspect is that individual services can sometimes be integrated or composed or aggregated into higher-level services that perform a specific function available in the cloud. This is essentially the extension of SOA principles into the cloud, and enabling the Web as a platform.

Service Consumption

Web browsers will continue to serve as the primary means of accessing cloud-based services. But the cloud does not dictate the use of browsers as the only means to do so. In fact, cloud-based services provide the ideal environment to enable users consume services from all kinds of interfaces and devices.

We are already seeing many vendors pushing the envelope beyond HTML-based browser interfaces. For example, on-line in-browser RIA platforms such as Adobe Flash, Curl, JavaFX, and Microsoft Silverlight, etc.; off-line desktop RIA platforms such as Adobe AIR, Google Gears, Yahoo Konfabulator, and Microsoft Live Mesh; and increasingly, mobile device platforms such as Apple iPhone, Google Android, Java ME, Adobe Flash Lite, Yahoo GO!, Microsoft Silverlight, etc.

The fundamental aspect is that, cloud computing enables a seamless and consistent service consumption experience regardless of the type of device or interface used at the edge. In addition, differentiated and specialized user experiences can be delivered to different types of devices and form factors.

Economies of Scale

The most effective design for cloud-based services use multi-tenancy architectures, and standardize on operational and management processes. This allows service providers to share costs between multiple users, which results in lowered overall cost of service. And as the scale of usage/adoption increases, so do the economies of scale. This is not limited to managing costs; monetization models behave similarly such as in the case of Google’s search advertising business.

The cloud provides the ideal environment for service providers to leverage massively-scaled capabilities to achieve intended economies. But this does not mean all services providers have to plan for similar scales. For example, Salesforce.com’s scale in terms of managing its userbase, is significantly different from the type of scale that Google or Amazon has to deal with.

Network Effect

The cloud is more than a huge collection of isolated services and islands of services. Its true power is unlocked when individual services become more inter-connected and inter-dependent. With increasing levels of interoperability, composability, data portability, semantic consistency, etc., the cloud moves away from disconnected services that require specialized integration efforts, to a dynamic system that is much more interactive and intelligent.

Ubiquity / Pervasiveness

The word cloud implies a level of ethereal ubiquity and pervasiveness. And cloud-based services should be provisioned such that users should not have to be concerned with how to access these services, or differences between platforms. In addition, details of the technical implementations, scaling options, etc. should be completely transparent to the users as well.

Users should be able to interact with cloud-based services in a consistent context, even when navigating between the public cloud and private clouds.

Challenges and Issues

Undoubtedly, cloud computing presents many disruptive forces to existing models of using on-premise and locally installed software and applications. But some questions are still relevant. For example,

  • Who owns sensitive and confidential data?
  • How is SLA managed and enforced/guaranteed?
  • Regulatory compliance?
  • More potential points of failure?
  • Typical operational concerns, such as fine-grained control over security/privacy, governance, support for troubleshooting, overall performance, disaster recovery, planned downtimes, change management, etc.
  • Does it really cost less to users?
  • How will I differentiate?

Another Gartner slide has a good list of common concerns.

For example, some of the recent reported issues underscore the difficulty in maintaining massively-scaled cloud services (of course Microsoft had its share of outages too):

And a recent BusinessWeek article "On-Demand Computing: A Brutal Slog" pointed out:

"Funny thing about the Web, though. It’s just as good at displacing revenue as it is in generating sources of it. Just ask the music industry or, ahem, print media. Think Robin Hood, taking riches from the elite and distributing them to everyone else, including the customers who get to keep more of their money and the upstarts that can more easily build competing alternatives."

And Nicholas Carr’s post back in 2005 on "The amorality of Web 2.0" succinctly points out the changes in monetization models in the shift towards the Web.

While we can expect that the industry as a whole will continue to move into the cloud, and gain more maturity in deploying cloud-based services, these fundamental questions and challenges will have to be addressed as well. Although, some issues inherent in highly distributed architectures will persist and need to be evaluated as trade-offs.

Forward Looking Perspective

It seems we are in a land-grab mode today, with organizations rushing towards the cloud, including Microsoft. Next we should expect to see the similar hype-boom-bust cycle play out, where many attempts will fade into non-existence, major consolidations occur in the market, and finally a handful of strong players remain standing and owning a major portion of the collective cloud.

However, when the dust (or the pendulum) finally settles, will we see cloud computing supplanting the "legacy" models? Most likely not, though cloud computing will become one of the viable options for organizations to choose from. And we can expect that there will not be a one-size-fits-all approach on a "right" way to decide between on-premise and cloud-based services. Just like all previous megatrends such as SOA and Web 2.0, each organization may have a different mix of options and the degree to which they are adopted.

Technically, we can anticipate advances towards context-aware computing as a convergence of semantic Web, data portability, derived collective intelligence, intent-driven systems, etc.; which should result in a much more intelligent and interactive cloud.

Cross-posted from my blog at http://davidcchou.com

Blog at WordPress.com.