IT@Intel Blog

5 Posts tagged with the client_architecture tag
2

I have just returned from the Intel sponsored Eco-Technology Great Debates where I was slotted into the topic of Thin vs. Thick Client Energy Efficiency. I had the opportunity to weigh in on the side of "Thick" clients as the most energy efficient. The bad news is that our team lost; the good news is that we didn't lose by much (29 to 24)! The best news is that all of the teams had some very strong arguments (and even several very entertaining exchanges).

Being a simple data center guy, I learned a lot, especially as it relates to thin client architecture and energy impacts. No contest, thin clients consume less energy at the device level than do thick clients (PCs and Laptops). But is that really the energy efficient answer?

For thin clients, compute and storage are necessarily displaced to the data center. Data centers with thier concentrated IT equipment are typically inefficient to power and cool relative to laptops and PCs which are distributed by nature and cooled by ambient air. Generally data centers require 1 watt of power for cooling and electrical distribution (house load) for 1 watt of IT load (newer data centers are more efficient but still incur additional power costs simply to power and cool). Therefore, every kW of power that is shifted from distributed thick client use to a data center causes more or less 2 kW of impact in the data center! Wow!

With the majority of the world's data centers facing power or cooling capacity constraints and some with no additional grid power available at all, total energy costs extend beyond the simple house load + IT load equation. Expansion and upgrade of facilities increases energy consumption, as well. There are too many areas to detail here but needless to say the total power consumption for extracting and manufacturing data center components, transporting them to a site and construction of new facilities is non-trivial and likely larger per unit of compute than for the typical laptop. This collateral consumption is not comprehended in any calculations of alternative client model power efficiencies of which I am aware..

I also have no specific data on the power efficiency of PCs or laptops to provide rigorous comparison to data center power utilization efficiency. The above arguments, however, do appear to be logical. More work needs to be done to collect the data and analyze these concepts in detail.....

If you want to see the instant replay of all of the debates (including the client debate, liquid vs. air cooling and ac power vs dc power in the data center), click on the web link above and look for the embedded webcast URL at the bottom of the resulting page. There are also a couple of links to other articles on the subject that are well worth reading.

TTFN!

2 Comments Permalink
3

Wouldn't it be great if we could buy an application and not have to worry about whether it was designed to run on Windows XP, Windows Vista, MAC OS X or some flavor of linux?

How about when you buy a personal computer you don't have to make a decison on whether it should come with Windows XP, Windows Vista, MAC OS X (don't you wish that was a choice today) or some flavor of linux - or nothing and you figure it out later?

What if every computer you bought came with a smal, highly efficient operating system that basically only acted similar to a virtual machine hypervisor, managing the allocation of resources to virtual machines (or applications). And by the way it was built into the "platform" supplied by the chip vendor and OEM's only aggregated components and added value where it counts - tools to better manage the virtual enviornments, as a peer process not as a "host" operating system.

This is the world that I would like to see evolve over the next couple of years (okay maybe 5).

Applications are compiled with the operating system extensions (purchased from today or tomorrow's operating system vendors) and sold as one package that runs on top of the thin/efficient operating system mentioned above. This way we as the consumers can worry about selecting applications and functionality and get out of the business of worrying about which operating system to buy - or worrying about which operating sytem the application will run on. We just buy the application!!! What a concept!!!

A nice extension to this would be to allow the ability to still have a more traditional "container" of applications for secure, managed interaction between applications and for providing a policy managed environment. But the applications should still be the same apps I buy to run independently - So how about an install option - standalone or in a "container" or ???

Now that would be cool.

3 Comments Permalink
2

Some general thoughts and ramblings on application streaming - where it is better than web applications and where it might not be.

Application streaming is an interesting technology - you can create a client rich application with sophisticated graphics and processing and yet have a high degree of security and the benefits of server side manageability. In my mind this is the best of two worlds. On the one hand you can leverage the full strength of the latest processors and graphics cabilities and on the other you can manage security and upgrades quickly and efficiently.

The application doesn't go through an install process on the client so you eliminate some of the problems associated with different people installing the same application differently. The installation can be "isolated" to protect against conflicts (in some cases this provides backwards compatibility) which also raises some challanges, although this also provides some "challenges" for the integration of mulitple applications on the same device.

Upgrades are simple and guaranteed - since you only upgrade the server and anyone using that application gets the update at next use, true for security patches as well. For those that are using the applications offline (which you can do, try that with a web app) they will get the update the next time they connect to the network.

Streaming (some products anyway) provides a means for license management, so perhaps you don't need to own as many licenses as you thought by tracking concurrent usage and preventing over subscribing. This is can be important for some expensive purchased applications.

Streaming applications are also not subject to the multitude of exploits that are written to attach web browsers and web applications. I believe that for corporate applications they are safer and easier to protect. That alone may be reason enough to justify moving in this direction.

One area where web based applications COULD be better is if they are written to work on multiple platforms with multiple browsers (such as Windows and OS X). However in practice this seems to be seldom done, most apps are still written for one environment or the other and it's more of chance that the application works in the other environments. This could be a big plus if developers would truly develop for the heterogenous world we live in.

Another is that with client rich applications there is often more database traffic being routed over the network between the client and the server infrastructure whereas in a web application the database traffic can be kept between the application server and the database server. This puts the onus on the application developer to take this into account when architecting their application. It can be done efficiently but it does raise that "old" argument and problem.

So perhaps it is time to look at how we develop applications and rather than swinging the pendelum back to all client rich applications, maybe we should be looking at a better balance of applications leveraging the best technology for the requirements.

Just a thought

2 Comments Permalink
2

The old axiom "work expands to fill time" seems to parallel a truth about client computing: capabilities expand to consume available resources. As an Enterprise Services Architect responsible for Intel's IT client architecture, I have seen first hand how IT shops, software vendors, and users manage to throw everything but the kitchen sink into client systems only to be surprised by the resulting hit on performance. Let's face it: at most companies, client performance is an after-thought that becomes important when people start screaming. Making matters worse, everybody wants to dictate what needs to be on the client, including business, productivity, communication and collaboration applications, security & manageability agents, connectivity managers, backup clients, personal user applications, and more recently virtualization applications.

It's time to break free of reactive performance management "tiger teams" and get serious about addressing client performance in a more proactive way. Intel IT has begun to take a much more comprehensive view of client performance and has instituted a new framework for client performance management. Here are ten key learnings that you may be able to use at your company.

1. Form a client performance virtual team (v-team).
This step is first on the list for a reason. Client performance cannot be approached from only one perspective, otherwise it wouldn't be such a difficult problem. Form a virtual team consisting of at least one person from each of the following areas: client platform engineering, security & manageability engineering, client support (helpdesk), release management, human factors engineering, and enterprise architecture. To keep us on task, our client performance v-team has the mission "to drive an intentional approach to client performance management".

2. Develop a process and identify tools to measure performance, establish benchmarks, and set performance targets.
This is a discipline that needs to be baked into your client engineering processes. In order to determine what performance should be expected for any generation of client in your environment, you first need a baseline for comparison. The best time to develop this baseline is when your next generation client is ready for deployment and performance has been optimized. Industry and/or third-party benchmarking tools can be used to form part of the "performance profile" for you latest release. The choice of benchmarking tool(s) is less important than that you pick at least one and begin documenting the baseline performance of your clients. Data collected in a pilot under real-word conditions will also be useful in the baseline profile. The goal is to end up with something that can be used in the future as a yardstick for performance troubleshooting on the same generation of clients and for setting targets for the next generation client.

3. Develop a process and identify tools for tracking and reporting platform performance on the installed base of clients.
This is related but different from the last one and more difficult to pull off without further impacting performance. Benchmarks and performance targets are important, but those are established in lab conditions or in controlled tests and created only occasionally. Here we need to actually instrument the client and provide supporting infrastructure to actually collect data from our live clients. To do this, you are probably going to need some sort of agent running on the client. The results from this data collection and aggregation ought to correlate with the feedback you are getting from the helpdesk regarding their top performance issues. One related idea we are considering is to deploy a tool that allows the user check a performance status indicator on their desktop and/or allows them to push a button that sends a snapshot of their system status to the helpdesk when they are experiencing a performance issue.

4. Dedicate resources to forward engineering of performance enhancing capabilities.
There are a number of emerging technologies and capabilities that can actually deliver improved performance on the client, mostly under the general heading of QoS. For example, there are some third party products that will help with resource and process prioritization. There are also new capabilities baked into Vista that can be leveraged to improve performance including i/o prioritization and client-side policy-based network QoS.

5. Establish and maintain a strategic client performance capability roadmap.
A strategic capability roadmap for client performance will help by defining targets and setting context for engineering activities. Many of these capabilities we've discussed above, including those that enable performance management and those that enhance performance. Such a roadmap can also be used to drive application vendors to improve the performance of their applications.

6. Continuously validate platform performance against established benchmarks.
Modify your client release management process so that a comparative analysis can be done between your performance benchmarks/targets and the actual performance of the new client platform. You'll need to ensure that the benchmarking methodology you developed earlier can be exactly reused by the QA team.

7. Institute an ongoing continuous improvement process.
Establish a rhythm for taking what's learned about performance from PCs in the wild and incorporate the fixes, BKMs, enhancements, and optimizations into the client build engineering process for future releases.

8. Don't play chicken with your PC refresh cycle!
You know how people still do things that they know they're going to regret? Exactly. If you know what the right PC refresh cadence is for your environment, don't mess with it! The school of hard knocks has taught us that when we stretch the lifetime of our PC fleet, we end up paying for it in the end with spikes in helpdesk call volumes, above average failure rates, and complaints of performance degradation. The temptation is great to put off spending for a quarter or two or hold off to intercept a new version of an OS or new hardware platform, but this is a losing strategy that will probably land you in tiger team **** and will end up costing more in the long run.

9. Map out the client ecosystem and figure out where you can eliminate redundancy.
Take a fresh look at all the capabilities and products that are either installed on your client or that exist in the infrastructure that impact the client. This way you can identify where you may have redundancy that can be streamlined. For example, do you have two or more manageability agents with overlapping functions? Can you live with one even if it means giving up a feature or two? Don't forget infrastructure services that impact clients from afar. "Agentless" performance data collectors, for example, still have a performance impact on the client.

10. Establish client integration standards.
Assuming you have a healthy governance process, standards can act as both sword and shield to protect your client platform from being overrun by the barbarians. Like your city's building codes, these policies and related guidance can set a bar for application owners and service providers so they understand what is required and expected of them before they try to land anything on the client. Some IT shops have developed a "minimum security specification" that stakes out the absolute bottom line security controls that must be implemented in a given solution. Consider establishing a "minimum performance specification" to help educate application developers & vendors about performance optimization on your clients.

2 Comments Permalink
1

As this is my first post in this forum, let me start by introducing myself. My name is John Dunlop and I am an IT Enterprise Service Architect responsible for Intel's IT client solution architecture. I've had this role for less than a year, having previously been responsible for some of our identity & access management services, as well as other backend core services. What an exciting time to have made the shift to the client side of IT! To say that there have been considerable and accelerating advancements in client usage models and application delivery models is truly an understatement.

Historically the most interesting and divisive discussions of client architecture have revolved around the debate over thin versus thick clients. Both models have their advantages and disadvantages, of course, but ultimately (as all IT architects know) it's all about enabling the business to have their cake and eat it too. We need to provide a client that is robust enough to survive network connectivity or performance issues, enable an increasingly mobile workforce, support data center consolidation, and satisfy the consumerization and personalization trends that are forcing IT to make more and more compromises to keep customers happy. On the other hand, competitive pressures drive IT budgets ever lower, keeping manageability center stage for providing TCO reduction and making IT managers crave more and more control over the client. Neither thin nor thick clients ultimately deliver on all of their promises, partly because the world has never been that black and white and one size rarely fits all.

Enter virtualization. Now, some will point out that we've had "presentation layer" virtualization solutions for decades, but again, this shifts us squarely into the realm of thin clients which simply don't serve our mobility needs and shift costs to the infrastructure. The benefits of true, on-board virtualization capabilities were immediately apparent on the server, but client virtualization wasn't taken seriously (as scalable) by many until fairly recently. Sure, you could run a guest OS on a client host OS for training purposes, or to do some specific task that wasn't supported on the host OS, but there was substantial overhead from a performance standpoint, and let's face it, the average user was never going to be satisfied with all the complexity and effort of moving between host and guest. Ever notice how it always seemed to be IT people using a virtualized guest OS for some constructive end? Improvements in technology (e.g. dual core, Intel VT) have meant substantial mitigation of the performance concerns, and the competition to deliver more and more capabilities and transparency in software hypervisors is creating a virtual arms race for the virtual desktop. It is amazing to see how far we've come when when you can run apps in two different operating systems simultaneously as they float side by side on the same desktop, allow cross-registration of applications, and share file systems, task bars, paste buffers, etc., etc.

Here's where you get that cake. Rather than continuing to evolve that tightly-coupled fat client architecture you've built a career around (so when are you planning to upgrade to Vista?) or continuing to tell your users that mobility is overrated while you shift client support costs to the network and data center with your antiquated thin client strategy, let's think outside the box for a minute.

Virtualization is about abstraction, and there are several layers where you can exploit abstraction using existing virtualization technologies and products. The most obvious one is between the guest OS and the host OS or hypervisor. This abstraction layer may, for example, allow you to change your client hardware procurement or provisioning model. Even a decision made to leave those business processes alone can be made confident in the knowledge that changing that decision later doesn't require a complete redesign of your client solutions. Some companies are even thinking about discontinuing the practice of providing laptops to mobile workers, opting instead to give them an annual stipend to purchase their own systems with their own OEM support contracts and a host OS they can do with as they please.

Virtualizing the workspace, even if that remains a tightly-coupled OS and application solution stack for the time being, makes that workspace transportable across devices, easier to recover, even potentially resident on a thumb drive. Because the user has a host OS to horse around with, you can finally lock down that work environment like you've always wanted. And, now you can provide a variety of workspaces through virtualization, including productivity and collaboration, engineering, manufacturing/shop floor control, etc. Making the framework of your client more modular means greater agility for your business, and you can finally begin looking at the workspaces you provide as true services.

And what about the tight integration of those applications? Another abstraction layer is between the applications and the guest OS. New and old capabilities and techniques can be employed to virtualize those applications, albeit not without some elbow grease within the greater IT organization to stop developing and/or deplolying proprietary or OS-dependent apps to the client. New IT policies that promote standards and provide guidance about the most appropriate forms of application virtualization and application delivery would be an excellent start. Writing applications on Java VM for example, or at least not using proprietary browser extentions in web apps would go a long way toward making applications available across workspaces and operating systems. Even for natively installed applications, adherence to standard data object types and document formats will provide at least the look and feel of virtualization which may be good enough in some cases. I don't have time or space here to get into the merits of Software as a Service (SaaS), but there is a clear paradigm shift occurring in the application delivery space that can support cross-platform "virtualization" of applications, and new technologies are even allowing for the caching of streamed applications that can run even when disconnected from the network!

Finally, and this may be the hardest abstraction layer of all, there is the holy grail of data virtualization. Imagine thinking about data as being associated with users rather than devices. Why are we still thinking in terms of client backups? I want my data to be available no matter what device I use to run my workspace. If I have a problem with my device or workspace, and a new workspace is provisioned, streamed, or otherwise made available to me, my data should be there as well, protected by some network service responsible for managing my data and serving it up to me no matter what device or workspace I may be using. I must admit that I haven't looked into the options in this area much yet, but I fear this is an area that lacks maturity from a client mobility perspective.

Naturally, there are significant manageability and security implications for this type of architecture. Hey, I never said this was easy! Many products are coming to market, however, to complement virtualization products to fill these needs. Figuring out how to solve these challenges is worth some time and effort. Client virtualization is not a fad; rather it is an evolutionary step forward that will provide IT and the businesses they support with newfound agility and competitive advantage in terms of lower integration costs, faster turnaround time, and improved user experience.

1 Comments Permalink