The Mediator Pattern for Desktop and App Virtualization ?? copy of my Citrix Community post

posted by Michael Harries

What does a pattern mean to you?

The modern software idea of Design Patterns comes from work done building out a language of patterns for architects. This idea has been a profound influencer of software design approaches and was pioneered by the ‘Gang of Four’.

Pattern thinking has also been applied to architecture, and to broader notions of IT design and management. For example “Architecture and Patterns for IT Service Management , Resource Planning, and Governance: Making Shoes for the Cobbler’s Children”. This book provides actionable patterns for treating IT like a business (and is highly recommended).

I would like to propose an important pattern that sits between enterprise architecture and application architecture for virtual desktops and virtual applications.

MOTIVATION: In today’s era of rapid change and consumerization all users have growing expectations from their enterprise computing systems. This raised expectation is generally portrayed as affecting only end users, but the reality is that these users include the business owner (aka The guy who pays the IT bills). This raised business expectation is much like when the microcomputer revolution hit mainframe/mini IT shops (and it was equally tempting for business to ‘go around’ IT – at the time by purchasing PCs, now by moving to SaaS). We have an environment with ever higher expectations of IT.

At the same time there are ever more desktop and hand-held device types. We are amidst a transition from a period of relative end-point homogeneity (Windows, Windows and Windows) to a period with multiple desktop environments (increases in Macs and Linux) and where most internet access will occur from a heterogeneous range of hand held mobile devices. This is a new game, a new paradigm, and one that is not going away any time soon. (I’ve talked about this elsewhere).

IT is facing dual challenges of increased agility expectations and increased device heterogeneity. This is a problem because traditional end-point management leads to ‘installation inertia’. That is, each carefully crafted desktop image or application install becomes yet another point that must be rebuilt with every application or architectural change. Like a poorly lubricated engine, the whole system is impaired and in many cases can all but grind to a halt. This friction costs you, and your company, money every day.

(Applicator virtualization and desktop virtualization in all its variants (e.g. Flexcast) act to reduce this friction. This is a key attribute of all types of virtualization – they reduce the friction, the inter-linkages, between layers.)

The Desktop and App Virtualization Mediator Pattern

THE PATTERN: So, to come back to the notion of patterns … In traditional software pattern terminology, there is a pattern called a mediator. This pattern acts as a way to manage communication between large numbers of frequently changing objects. The idea is that by having a module, or program that acts as a connector between these different components – it avoids propagating changes from one object through all others it touches by isolating the changes in the meditation object.

This is exactly what we achieve with desktop and application virtualization. Changes can occur in any application without affecting end user devices. At the same time end user devices can be completely changed without affecting the applications. Hence, the Desktop and Application Virtualization Mediator Pattern is the right way to manage the device/application nexus in your IT infrastructure. It avoids the installed application inertia trap. It reduces friction and increases your Enterprise Architecture agility.

WRAP: This pattern fits between enterprise architecture and application architecture and it matters. (Hat tip to Michael Keen who has been talking enterprise architecture/application architecture as strategy for some time.)

Let me know what you think.

There seems to be a great deal of ‘design pattern’ books on the market, I thought it would be interesting to look at how they could be used to motivate the use of a desktop/application virtualization strategy.

Cloud computing as paradigm shift (notes on awesome talk by @swardley via @cloudbook)

I like the broad sweep view that Simon takes here. It’s a nice meta view on the notion ( that cloud is a heavily overloaded term – so much so that it means everything and nothing.

A proof point for cloud being like the industrial revolution and centralization of power generation would be to revisit writings from these eras to see how they were talked about at the time, and whether there were similar buzzwords used to describe ‘the age of’ … or whether these things are only visible in retrospect. On the other hand, as William Gibson says, “The future is already here – it is just unevenly distributed” — perhaps we’re already at the point of reviewing changes that have occurred in pockets and the (start of the) revolution is over.

Simon summarizes the work of Nicholas Carr on ‘IT doesn’t matter’ (more recently ‘the Big Switch’) with a single table showing how technologies commoditize and that the biggest change for IT is that it has become a cost of doing business rather than an innovation driver. Implication is that standardization, simplification, and reducing cost becomes the imperative which then becomes one of the many drivers for “the cloud”. This is undoubtedly true.

Implications for Citrix — For a long time, Citrix has provided tools to turn IT into a utility — the Citrix Cloud Center ( will provide the same functionality in a world where IT assets live both inside and outside the datacenter. This forms part of the armory for IT organizations (and companies in general) to continue the inexorable cost reduction forced by IT becoming ‘just’ a cost of business.

‘Cloud’ is best understood as a shorthand for the changes wrought by the internet and by IT surpassing the core needs of business. It is a label for a range of new technologies, capabilities, and uses of the same.

Cloud is NOT a technology nor an end in itself.


[post updated to reflect twitter conv with Simon Wardley]

Here’s a blog post from Simon on the issue: