The state of stateless computing
It seems everywhere I look these days, people are talking about stateless computing. In just the past week, I’ve had 3 encounters with this phenomenon.
The first was at Microsoft Management Summit (MMS) in Las Vegas last week. We exhibited at the show and I had the opportunity to catch a couple of the keynote sessions. The most interesting one from a Desktone perspective was Brad Anderson’s session on the Dynamic Desktop, which I highly recommend. I was quite familiar with the content, much of which was developed by the team I was a member of during my year at Microsoft after the Softricity acquisition. It didn’t take long for Brad to start talking about the tight coupling of state between the hardware, OS, application and data layers and the user limitations and IT management challenges this causes with Windows clients.
The second encounter was at the airport on the way home from MMS, where I stumbled on a posting by Brian Madden about the annual Terminal Server MVP conference that recently took place. In the entry, Brian talks about the short and long term recommendations the MVPs presented to the TS team. And what do you know? The second core tenet of their long term vision is “Inherent separation of machine, OS, application, and user data”.
Finally, I come home to find an InformationWeek cover story about desktop virtualization with no less than 11 references to “stateless computing”.
So why all the buzz about stateless computing?
First, we need to define the term, which like any other complex IT concept means different things to different people. In addition, because stateless can be used in a broad sense (covering both desktops and servers as well as many different computing platforms), for the sake of this posting I’d like to confine my definition strictly to Windows client OS environments. With that said, to me, stateless computing means that there is no link between a specific user and a specific client device. That is, any user can use any relatively equivalent device (a PC and a Smartphone are not relatively equivalent) and access all of their data and personalization, including all application data and application/OS personalization. When they are done with a session, any state changes they made are stored on the network and the user is now free to roam to another device where they will have access to all that updated information.
This is what Microsoft (and Brad specifically in his keynote) is now calling “User-Centric” computing. It is clear that up until this point, Windows has been primarily designed around devices as opposed to users. But, of course, in the age of cloud-based services that are individually personalized and which inherently roam, the device-centric Windows legacy is showing its age and inflexibility.
There are two general ways to think about state separation for Windows clients. The first is state separation within the OS itself which involves fully decoupling the OS from the hardware, the applications from the OS and user data from applications and the OS. This is the stuff that Brad was talking about in his keynote and the same request that Brian and the MVPs had for their long term vision. And it is true: state separation within the OS is the nirvana we are all searching for. I know this first hand from my experience at Softricity. SoftGrid (now Microsoft Application Virtualization) allows Windows client applications to be state separated from the underlying OS and by doing so, solves a ton of application deployment and management headaches. In addition, there are many other innovations in the market that have been introduced to solve some aspect of state separation within Windows.
The problem is that state separation in Windows is really hard. Microsoft has been thinking about how to do this for some time and Windows Vista is the first OS where state separation was a genuine design goal. While some progress has been made, there is still a very long way to go and we are unlikely to see a fully state separated version of Windows anytime soon, if ever. As for 3rd party solutions, some of them are extremely powerful but they are all just band-aids to the problem we’ve been discussing. In addition, each has its own integration costs and limitations. At the end of the day, this is Microsoft’s problem and it needs to be solved by them.
This leads us to the other general form of state separation for Windows clients: decoupling the entire OS environment from the device layer and moving it into the data center. This, of course, is VDI or DaaS as Desktone envisions it, and while it’s not the nirvana of a truly state separated Windows OS, it is achievable today and does provide compelling value. By moving instances of Windows clients into a “cloud”, users are able to access them from anywhere they have a network connection with just about any device. So at the end of the day, this meets the definition of stateless computing I outlined early.
I truly hope that we get to a world where Windows client is properly state separated and the sooner the better. Desktone and all other players in the VDI space will greatly benefit from a client OS that has this kind of architecture. In the meantime, while we are waiting for paradise, Desktone is going to help customers figure out how to move their desktops into a service provider’s cloud and by doing so, help them achieve a form of the stateless computing and start realizing all the associated benefits.

Reader Comments (1)
Jeff well written blog post. Seperating the different layers of the user platform is the nirvana, but hard to do. For a lot of the technical reasons above, but also for all of the one off situations that happen where a user needs access to an app, and the organization does have it packaged, or the application needs kernal mode, etc. The beauty of VDI is that you don't actually have to solve the application/user/OS seperation all at once. Other approaches in the past such as Terminal Services did require you to seperate state, and sort out admin access, package all of the applications, etc. This is the reason that a Terminal services based solution never really got traction as a full fledged desktop replacement, and remains to point solution and niche user groups which you can completely lock down. VDI makes the first step toward stateless computing possible by liberating the device from the OS and combined with advances in multi-media, networking, etc makes it a legitimate desktop replacement. VDI can handle almost every situation thrown at it like a desktop. And ultimately the VDI design is great for as a service too, because you can clearly seperate out the roles and responsibilities of the service provider and the enterprise. The OS is the line of demarcation. With Application Service providers that line was and is very fuzzy.