<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Virtualization – Good or Bad?</title>
	<atom:link href="http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/feed/" rel="self" type="application/rss+xml" />
	<link>http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/</link>
	<description>Closed weekends and holidays.</description>
	<pubDate>Sat, 05 Jul 2008 04:41:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: Dom De Vitto</title>
		<link>http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/#comment-598</link>
		<dc:creator>Dom De Vitto</dc:creator>
		<pubDate>Tue, 07 Nov 2006 23:25:46 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/#comment-598</guid>
		<description>Hmmm, I agree and disagree - some things will change, like datacentres being a lot less kit.  Other things, like development environments, will have the same challenges. e.g. that 'all-in-one' virtual server image won'tbe the same as production, because the CPU, IO/memory latency, and the other weirdisms that differentiate a virtual server on one host server against a virtual server on another.

Potentially it may be worse - because the constraints (IO bandwidth, IO latencency etc.) are now dynamically contended, but previously these were static constraints.  e.g. a flash load on the web server could cause the database journal log to be exhausted.  Over two physical systems, disk IO bandwidth is possibly lower than a beefy server, but it is much easier to capacity manage and understand spikes and simultaneous flash loads.

One thing that virtualisation will bring is proper understanding of resource utilisation - in effect profiling beyond the application and into the OS and the hardware itself.  This &lt;i&gt;will&lt;/i&gt; impact development significantly - as the exact characteristics of not only CPU use and memory, but memory bandwidth, disk, network, working set cache sizes etc. etc. .

Developers could also previously pretty much leave system config to the sysadmin - as scalability demanded.  Now they need to ensure that their application will not hog CPU/memory/IO/network or other resources - because they may be over-contended on that physical server's between multiple virtual servers.

So, though we've a whole new Information Processing 'medicine' to cure some problems, we also have a new, bigger needle and we are not experienced in exactly where to shove it !

Overall, I see a move to a 'tool-per-server' approach, because it's simply more development efficient, but like a good DB admin can make/break an application, we now will rely on good virtualisation admins.
Their immediate challenge is that virtualisation products don't have much in the way of tunability.  Ideally you would want a VS config that gives you exactly the reserved resource of a particular physical server (e.g. Compaq DL320-G3 2x3ghz, 2gb ram etc).  Then you could at least start with a system that is initially uncondended, and then monitor peak use and judge how much overcontention you can risk.

At the moment, it's the reverse situation: cost saving drivers are pushing massive, unengineered, overcontention ,  which is much more risky.
Oh, and you may be trapped in (addicted to) virtualisation: virtualisation permits brief dedicated intense resource use - but a smaller physical servers don't have the same ability to cope with a high flash resource requirement.  Anyone that's ever seen what happens when an application expects more physical RAM than is available, and thrashes, knows this is a world of pain.

Just to cap fnish with more of my 'medicine' analogy: We've just not done any any proper clinical trials... :-(</description>
		<content:encoded><![CDATA[<p>Hmmm, I agree and disagree - some things will change, like datacentres being a lot less kit.  Other things, like development environments, will have the same challenges. e.g. that &#8216;all-in-one&#8217; virtual server image won&#8217;tbe the same as production, because the CPU, IO/memory latency, and the other weirdisms that differentiate a virtual server on one host server against a virtual server on another.</p>
<p>Potentially it may be worse - because the constraints (IO bandwidth, IO latencency etc.) are now dynamically contended, but previously these were static constraints.  e.g. a flash load on the web server could cause the database journal log to be exhausted.  Over two physical systems, disk IO bandwidth is possibly lower than a beefy server, but it is much easier to capacity manage and understand spikes and simultaneous flash loads.</p>
<p>One thing that virtualisation will bring is proper understanding of resource utilisation - in effect profiling beyond the application and into the OS and the hardware itself.  This <i>will</i> impact development significantly - as the exact characteristics of not only CPU use and memory, but memory bandwidth, disk, network, working set cache sizes etc. etc. .</p>
<p>Developers could also previously pretty much leave system config to the sysadmin - as scalability demanded.  Now they need to ensure that their application will not hog CPU/memory/IO/network or other resources - because they may be over-contended on that physical server&#8217;s between multiple virtual servers.</p>
<p>So, though we&#8217;ve a whole new Information Processing &#8216;medicine&#8217; to cure some problems, we also have a new, bigger needle and we are not experienced in exactly where to shove it !</p>
<p>Overall, I see a move to a &#8216;tool-per-server&#8217; approach, because it&#8217;s simply more development efficient, but like a good DB admin can make/break an application, we now will rely on good virtualisation admins.<br />
Their immediate challenge is that virtualisation products don&#8217;t have much in the way of tunability.  Ideally you would want a VS config that gives you exactly the reserved resource of a particular physical server (e.g. Compaq DL320-G3 2&#215;3ghz, 2gb ram etc).  Then you could at least start with a system that is initially uncondended, and then monitor peak use and judge how much overcontention you can risk.</p>
<p>At the moment, it&#8217;s the reverse situation: cost saving drivers are pushing massive, unengineered, overcontention ,  which is much more risky.<br />
Oh, and you may be trapped in (addicted to) virtualisation: virtualisation permits brief dedicated intense resource use - but a smaller physical servers don&#8217;t have the same ability to cope with a high flash resource requirement.  Anyone that&#8217;s ever seen what happens when an application expects more physical RAM than is available, and thrashes, knows this is a world of pain.</p>
<p>Just to cap fnish with more of my &#8216;medicine&#8217; analogy: We&#8217;ve just not done any any proper clinical trials&#8230; :-(</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Matthews</title>
		<link>http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/#comment-597</link>
		<dc:creator>Andrew Matthews</dc:creator>
		<pubDate>Tue, 07 Nov 2006 22:48:47 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/#comment-597</guid>
		<description>Yeah - The Hemingway style. I Like it.

Like I said, I was captivated by the possibilities. I am just thinking out loud about what it means for us developers. 

I understand that the physical separation of a system allows scale-out deployment IF you can identify what application logic or database activity is the performance bottleneck. In many cases DB activity is the issue, and we will need to separate out the DB for the sake of fail-over anyway. But in many systems that I've looked at the cost of &lt;i&gt;communications&lt;/i&gt; is a large fraction of the cost of page generation.

I just question whether the best use of these huge grunty machines is running simulations, and not web sites. I can see the way a VM server would reduce the capital expenditure of a hosting service, since they can pile on VMs to a big machine, and thus save space and provide enhanced services etc. They can also provide great facilities for disaster recovery. But do we care about that as designers? 

What I'm wondering is whether the application designers should be treating these machines as &lt;strong&gt;scaled up&lt;/strong&gt; or &lt;strong&gt;scaled out&lt;/strong&gt;. I don't think we're making good use of our resources if we scale out on a VM  - you are multiplying the housekeeping code that must be run. 

I assume that if you simulate a distributed system on VM, you will still have to simulate the whole TCP/IP stack down to the driver level before the VM can step in. This wastefulness be frowned upon even today. Why would we turn a blind eye? We acknowledge that we need performance enhancements for the purposes of scaling. Why not just use the machine?</description>
		<content:encoded><![CDATA[<p>Yeah - The Hemingway style. I Like it.</p>
<p>Like I said, I was captivated by the possibilities. I am just thinking out loud about what it means for us developers. </p>
<p>I understand that the physical separation of a system allows scale-out deployment IF you can identify what application logic or database activity is the performance bottleneck. In many cases DB activity is the issue, and we will need to separate out the DB for the sake of fail-over anyway. But in many systems that I&#8217;ve looked at the cost of <i>communications</i> is a large fraction of the cost of page generation.</p>
<p>I just question whether the best use of these huge grunty machines is running simulations, and not web sites. I can see the way a VM server would reduce the capital expenditure of a hosting service, since they can pile on VMs to a big machine, and thus save space and provide enhanced services etc. They can also provide great facilities for disaster recovery. But do we care about that as designers? </p>
<p>What I&#8217;m wondering is whether the application designers should be treating these machines as <strong>scaled up</strong> or <strong>scaled out</strong>. I don&#8217;t think we&#8217;re making good use of our resources if we scale out on a VM  - you are multiplying the housekeeping code that must be run. </p>
<p>I assume that if you simulate a distributed system on VM, you will still have to simulate the whole TCP/IP stack down to the driver level before the VM can step in. This wastefulness be frowned upon even today. Why would we turn a blind eye? We acknowledge that we need performance enhancements for the purposes of scaling. Why not just use the machine?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Stovell</title>
		<link>http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/#comment-594</link>
		<dc:creator>Paul Stovell</dc:creator>
		<pubDate>Tue, 07 Nov 2006 10:02:40 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2006/11/07/virtualization-%e2%80%93-good-or-bad/#comment-594</guid>
		<description>Hey Andrew, new site?

The thing that attracts me to using virtualization is the scalability. If you put the UI and application tier in one machine (physical or virtul), then decide you want them separated, that's a lot of change and downtime. If you put them as two seperate VM's on one server, as demand increased you could move one to another server. 

This is especially useful to small applications or businesses. You might run your website and SQL server on the same machine. But what if you decide to seperate? You have to get another box, install windows and SQL, configure all the network mumbo jumbo, take the application offline, then change the connection strings (assuming you put them in a config file :) ).

Alternatively, if they were two virtual machines on the same server, you'd just xcopy the VM image of your SQL server one night onto the other server, plugin a network cable and take the other offline.

It also means you can make better use of your resources. Consider putting an exchange server and a batch processing server (e.g., a spider?) on the same machine. Exchange is usually busy during the day but sleeps at night, while the batch server would be a night-only thing. You wouldn't want to install them both on the same Windows installation, it might be a much cheaper way to make full use of your resources. 

Of course you have to ask yourself whether the VM overhead is worth it, because as you said, in the case of many applications it really isn't.</description>
		<content:encoded><![CDATA[<p>Hey Andrew, new site?</p>
<p>The thing that attracts me to using virtualization is the scalability. If you put the UI and application tier in one machine (physical or virtul), then decide you want them separated, that&#8217;s a lot of change and downtime. If you put them as two seperate VM&#8217;s on one server, as demand increased you could move one to another server. </p>
<p>This is especially useful to small applications or businesses. You might run your website and SQL server on the same machine. But what if you decide to seperate? You have to get another box, install windows and SQL, configure all the network mumbo jumbo, take the application offline, then change the connection strings (assuming you put them in a config file :) ).</p>
<p>Alternatively, if they were two virtual machines on the same server, you&#8217;d just xcopy the VM image of your SQL server one night onto the other server, plugin a network cable and take the other offline.</p>
<p>It also means you can make better use of your resources. Consider putting an exchange server and a batch processing server (e.g., a spider?) on the same machine. Exchange is usually busy during the day but sleeps at night, while the batch server would be a night-only thing. You wouldn&#8217;t want to install them both on the same Windows installation, it might be a much cheaper way to make full use of your resources. </p>
<p>Of course you have to ask yourself whether the VM overhead is worth it, because as you said, in the case of many applications it really isn&#8217;t.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
