<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux2Go &#187; Cloud computing</title>
	<atom:link href="http://blog.linux2go.dk/category/cloud-computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.linux2go.dk</link>
	<description>The blog of Soren Hansen (not the golfer)</description>
	<lastBuildDate>Tue, 17 Jan 2012 15:09:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Another week of Openstack stabilisation</title>
		<link>http://blog.linux2go.dk/2011/02/21/another-week-of-openstack-stabilisation/</link>
		<comments>http://blog.linux2go.dk/2011/02/21/another-week-of-openstack-stabilisation/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 13:04:33 +0000</pubDate>
		<dc:creator>Soren</dc:creator>
				<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[planetopenstack]]></category>
		<category><![CDATA[PlanetUbuntu]]></category>

		<guid isPermaLink="false">http://blog.linux2go.dk/?p=655</guid>
		<description><![CDATA[I got good feedback on last week&#8217;s post about the stuff I&#8217;d achieved in Openstack, so I figured I&#8217;d do the same this week. We left the hero of our tale (that would be me (it&#8217;s my blog, I can entitle myself however I please)) last Friday somewhat bleary eyed, hacking on a mountall patch [...]]]></description>
			<content:encoded><![CDATA[<p>I got good feedback on last week&#8217;s post about the stuff I&#8217;d achieved in Openstack, so I figured I&#8217;d do the same this week.</p>
<p>We left the hero of our tale (that would be me (it&#8217;s my blog, I can entitle myself however I please)) last Friday somewhat bleary eyed, hacking on a mountall patch that would more gracefully handle SIGPIPE caused by Plymouth going the way of the SIGSEGV. I got the ever awesome Scott James Remnant to review it and he (rightfully) told me to fix it in Plymouth instead. My suggested patch was much more of a workaround than a fix, but I wasn&#8217;t really in the mood to deal with Plymouth. Somehow, I had just gotten it into my head that fixing it in Plymouth would be extremely complicated. That probably had to do with the fact that I&#8217;d forgotten about MSG_NOSIGNAL for a little bit, and I imagined fixing this problem without MSG_NOSIGNAL would probably mean rewriting a bunch of I/O routines which I certainly didn&#8217;t have the brain power for at the time. Nevertheless,  a few attempts later, <a title="Plymouth MSG_NOSIGNAL patch" href="http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/natty/plymouth/natty/view/1372/debian/patches/avoid-sigpipe.patch">I got it worked out</a>. I sent it upstream, but it seems to be stuck in the moderation queue for now.</p>
<p>I spent almost a day and a half wondering why some of our unit tests were failing &#8220;randomly&#8221;. It only happened every once in a while, and every time I tried running it under e.g. strace, it worked. It had &#8220;race condition&#8221; written all over it. After a lot of swearing, rude gestures and attempts to nail down the race condition, I finally noticed that it only failed if a randomly generated security group name in the test case sorted earlier than &#8220;default&#8221;, which it would do about 20% of the time. We had recently fixed DescribeSecurityGroups to return an ordered resultset which broke an assumption in this test case. Extremely annoying. My initial proposed fix was a <a title="meh" href="http://bazaar.launchpad.net/~hudson-openstack/nova/trunk/revision/671.2.1">mere 10 characters</a>, but it <a title="fix for the sporadically failing unit tests" href="https://code.launchpad.net/~soren/nova/fix-unittest/+merge/49788">ended up slightly larger</a>, but the resulting code was easier on the eyes.</p>
<p>Log file handling has been a bit of an eye sore in Nova since The Big Eventlet Merge﻿﻿™. Since then, the Ubuntu packages have simply piped stdout and stderr to a log file and restartet the workers when the log files needed rotating. I finally got fed up with this and <a title="logdir merge" href="https://code.launchpad.net/~soren/nova/logdir/+merge/49722">resurrected the logdir option</a> and after <a title="switch to RotatingFileHandler" href="https://code.launchpad.net/~soren/nova/logrotate/+merge/49723">one futile attempt</a>, I got the <a title="..and then switch to WatchedFiledHandler" href="https://code.launchpad.net/~soren/nova/logrotate/+merge/50292">log files to rotate without even reloading the workers</a>. Sanity restored.</p>
<p>With all this done, I could now realiably run all the instances I wanted. However, I&#8217;d noticed that they&#8217;d all be run sequentially. Our workers, while built on top of eventlet, were single-threaded. They could only handle one RPC call at a time. This meant that if the compute worker was handling a long request (e.g. one that involved downloading a large image, and postprocessing it with copy-on-write disabled), another user just wanting to look at their instance&#8217;s console output might have to wait minutes for that request to be served. This was causing my tests to take forever to run, <a title="RPC threadpool" href="https://code.launchpad.net/~soren/nova/rpc-threadpool/+merge/49896">so a&#8217;fixin&#8217; I went</a>. This means that each worker can now (theoretically) handle 1024 (or any other number you choose) requests at a time.</p>
<p>To test this, I cranked up the concurrency of my tests so that up to 6 instances could started at the same time on each host. This worked about 80% of the time. The remaining 20% instances would entirely fail to be spawned. As could have been predicted, this was a new race condition that was uncovered because we suddenly had actual concurrency in the RPC workers. This time, iptables-restore would fail when trying to run multiple instances at the exact same time. I&#8217;ve been wanting to rework our iptables handling for a looong time anyway, so this was a great reason to get to work on that. By 2 AM between Friday and Saturday, I still wasn&#8217;t quite happy with it, so you&#8217;ll have to read the next post in this series to know how it all worked out.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux2go.dk/2011/02/21/another-week-of-openstack-stabilisation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A week into OpenStack&#8217;s third release cycle&#8230;</title>
		<link>http://blog.linux2go.dk/2011/02/11/a-week-into-openstacks-third-release-cycle/</link>
		<comments>http://blog.linux2go.dk/2011/02/11/a-week-into-openstacks-third-release-cycle/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 22:49:25 +0000</pubDate>
		<dc:creator>Soren</dc:creator>
				<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[planetopenstack]]></category>
		<category><![CDATA[PlanetUbuntu]]></category>

		<guid isPermaLink="false">http://blog.linux2go.dk/?p=649</guid>
		<description><![CDATA[With OpenStack&#8217;s second release safely out the door last week, we&#8217;re now well on our way towards the next release, due out in April. This release will be focusing on stability and deployability. To this end, I&#8217;ve set up a HudsonJenkins box that runs a bunch of tests for me. I&#8217;ve used Jenkins before, but [...]]]></description>
			<content:encoded><![CDATA[<p>With OpenStack&#8217;s second release safely out the door last week, we&#8217;re now well on our way towards the next release, due out in April. This release will be focusing on stability and deployability.</p>
<p>To this end, I&#8217;ve set up a HudsonJenkins box that runs a bunch of tests for me. I&#8217;ve used Jenkins before, but never in this (unintentional TDD) sort of way and I&#8217;d like to share how it&#8217;s been useful to me.</p>
<p>I have three physical hosts. One runs Lucid, one runs Maverick, and one runs Natty. I&#8217;ve set them up as slaves of my Hudson server (which runs separately on a cloud server at Rackspace).</p>
<p>I started out by adding a simple install job. It would blow away existing configuration and install afresh from our trunk PPA, create an admin user, download the Natty UEC image and upload it to the &#8220;cloud&#8221;. This went reasonably smoothly.</p>
<p>Then I started exercising various parts of the EC2 API (which happens to be what I&#8217;m most fluent in). I would:</p>
<ol>
<li>create a keypair (euca-create-keypair),</li>
<li>find the image id (euca-describe-images with a bit of grep),</li>
<li>run an instance (euca-run-instances),</li>
<li>wait for it to go into the &#8220;running&#8221; state (euca-describe-instances),</li>
<li>open up port 22 in the default security group (euca-authorize),</li>
<li>find the ip (euca-describe-instances),</li>
<li>connect to the guest and run a command (ssh),</li>
<li>terminate the instance (euca-terminate-instances),</li>
<li>close port 22 in the security group again (euca-revoke),</li>
<li>delete the keypair (euca-delete-keypair),</li>
</ol>
<p>I was using SQLite as the data store (the default in the packages) and it was known to have concurrency issues (it would timeout attempting to lock the DB), so I wrapped all euca-* commands in a retry loop that would try everything up to 10 times. This was good enough to get me started.</p>
<p>So, pretty soon I would see instances failing to start. However, once Jenkins was done with them, it would terminate them, and I didn&#8217;t have anything left to use for debugging. I decided to add the console log to the Jenkins output, so I just added a call to euca-get-console-output. They revealed that every so often, they&#8217;d fail to get an IP from dnsmasq. The syslog had a lot of entries from dnsmasq refusing to hand out the IP that Nova asked it to, because it already belonged to someone else. Clearly, <a href="https://launchpad.net/bugs/714577">Nova was recycling IP&#8217;s too quickly</a>. It read through the code that was supposed to handle this several times, and it looked great. I tried drawing it on my whiteboard to see where it would fall through the cracks. Nothing. Then I tried logging the SQL for that specific operation, and it looked just fine. It wasn&#8217;t until I actually copied the sql from the logs and ran it in sqlite3&#8242;s CLI that I realised it would recycle IP&#8217;s that had just been leased. It took me hours to realise that sqlite didn&#8217;t compare these as timestamps, but as strings. They were formatted slightly differently, so it would almost always match. ﻿<a title="An 11 character patch" href="https://code.launchpad.net/~soren/nova/lp714577/+merge/49127">An 11 character patch later</a>, this problem was solved. 1½ days of work. -11 characters. That&#8217;s about -1 character an hour. Rackspace is clearly getting their money&#8217;s worth having me work for them. I could do this all day!</p>
<p>That got me a bit further. Instances would now reliably come up, one at a time. I expanded out a bit, trying to run two instances at a time. This quickly  <a title="RPC concurrency problems" href="https://bugs.launchpad.net/nova/+bug/716427">blew up in my face</a>. This time I made do with a <a title="RPC connection recycle patch (part 1)." href="https://code.launchpad.net/~soren/nova/lp716427/+merge/49230">4 character patch</a>. Awesome.</p>
<p>At this point, I&#8217;d had too many problems with sqlite locking that I got fed up. I was close to just replacing it with MySQL to get it over with, but then I decided that it just didn&#8217;t make sense. Sure, it&#8217;s a single file and we&#8217;re using it from different threads and different processes, but we&#8217;re not pounding on it. They really ought to be able to take turns. It took quite a bit of Googling and wondering, but eventually I came up with a (counting effectively changed lines of code) <a title="SQLite locking fix" href="https://code.launchpad.net/~soren/nova/sqlite-locking/+merge/49234">4 line patch</a> that would tell SQLAlchemy to don&#8217;t hold connections to sqlite open. Ever. That totally solved it. I was rather surprised, to be honest. I could now remove all the retry loops, and it&#8217;s worked perfectly ever since.</p>
<p>So far, so good. Then I decided to try to go even more agressive. I would let the three boxes all target a single one, so they&#8217;d all three run as clients against the same single-box &#8220;cloud&#8221;. I realised that because I used private addressing, I had to expand my tests and use floating ip&#8217;s to be able to reach VM&#8217;s from another box. Having done so, I realised that this <a title="Local floating ip's don't work" href="https://launchpad.net/bugs/716414">didn&#8217;t work on the box itself</a>. A <a title="Fix floating IP's on network nodes." href="https://code.launchpad.net/~soren/nova/lp716414/+merge/49231">4 line patch</a> (really only 2 lines, but I had to split them for pep8 compliance) later, and I was ready to rock and roll.</p>
<p>It quickly turned out that, as I had suspected, my 4 character patch earlier wasn&#8217;t broad enough, so I expanded <a title="Always use fresh rpc connections" href="https://code.launchpad.net/~soren/nova/rpc-call-concurrency/+merge/49373">a bit on that</a> (4 lines modified).</p>
<p>Today, though, I found that surprising amount of VM&#8217;s were failing to boot, ending up with the dreaded:</p>
<blockquote>
<pre>General error mounting filesystems.
A maintenance shell will now be started.
CONTROL-D will terminate this shell and reboot the system.
Give root password for maintenance
(or type Control-D to continue):</pre>
</blockquote>
<p>I tried changing the block device type (we use virtio by default, so I tried ide and scsi), I tried not using copy-on-write images, I tried disabling any code that would touch the images. Nothing worked. I blamed the kernel, I blamed qemu, everything.  I replaced everything, piece by piece, and it still failed quite often. After a long day of debugging, I ended looking at mountall. It seems Plymouth often segfaults in these settings (where the only console is a serial port), and when it does, mountall dies, killed by SIGPIPE. A  <a title="sigpipe handler in mountall" href="https://code.launchpad.net/~soren/ubuntu/natty/mountall/sigpipe-handler/+merge/49401">5 line (plus a bunch of comments) patch</a> to mountall, that is still pending review, and I can now run hundreds of VM&#8217;s in a row and (5-10-ish) in parallel with no failures at all.</p>
<p>So, in the future, Jenkins will provide me with a great way to test drive and validate my changes, making sure that I don&#8217;t break anything, but right now, I&#8217;m extending the tests, discovering bugs and fixing them as I extend the test suite, very test-driven-development-y. It&#8217;s quite nice. At this rate, I should have pretty good test coverage pretty soon and be able to stay confident that things keep working.</p>
<p>It also think it&#8217;s kind of cool how much of a difference this week has made in terms of stability of the whole stack and only 19 lines of code have been touched. <img src='http://blog.linux2go.dk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux2go.dk/2011/02/11/a-week-into-openstacks-third-release-cycle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>It only took me 20 years..</title>
		<link>http://blog.linux2go.dk/2011/01/14/it-only-took-me-20-years/</link>
		<comments>http://blog.linux2go.dk/2011/01/14/it-only-took-me-20-years/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 16:54:44 +0000</pubDate>
		<dc:creator>Soren</dc:creator>
				<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[planetopenstack]]></category>
		<category><![CDATA[PlanetUbuntu]]></category>

		<guid isPermaLink="false">http://blog.linux2go.dk/?p=626</guid>
		<description><![CDATA[tl;dr: I now have daily backups of my laptop, powered by Rackspace Cloud Files (powered by Openstack), Deja-Dup, and Duplicity. I&#8217;ve been using computers for a long time. If memory serves, I got my first PC when I was 9, so that&#8217;s 20 years ago now. At various times, I&#8217;ve set up some sort of [...]]]></description>
			<content:encoded><![CDATA[<p>tl;dr: I now have daily backups of my laptop, powered by <a href="http://www.rackspacecloud.com/cloud_hosting_products/files/">Rackspace Cloud Files</a> (powered by <a href="http://wiki.openstack.org/">Openstack</a>), <a href="https://launchpad.net/deja-dup">Deja-Dup</a>, and <a href="http://duplicity.nongnu.org/">Duplicity</a>.</p>
<p>I&#8217;ve been using computers for a long time. If memory serves, I got my first PC when I was 9, so that&#8217;s 20 years ago now. At various times, I&#8217;ve set up some sort of backup system, but I always ended up
<ul>
<li>annoyed that I couldn&#8217;t acutally *use* the biggest drive I had, because it was reserved for backups,</li>
<li>annoyed because I had to go and connect the drive and do something active to get backups running, because having the disk always plugged into my system might mean the backup got toasted along with my active data when disaster struck,</li>
<li>and annoyed at a bunch of other things.</li>
</ul>
<p>Cloud storage solves the hardest part of this. With <a href="http://www.rackspacecloud.com/cloud_hosting_products/files/">Rackspace Cloud Files</a>, I have access to an infinite[1] amount of storage. I can just keep pushing data, Rackspace keep them safe, and I pay for exactly how much space I&#8217;m using. Awesome.</p>
<p>All I need is something that can actually make backups for me and upload them to Cloud Files. I&#8217;ve known about <a href="http://duplicity.nongnu.org/">Duplicity</a> for a long time, and I also knew that it&#8217;s been able to talk to Cloud Files for a while, but I never got into the habit of running it at regular intervals, and running it from cron was annoying, because maybe I didn&#8217;t have my laptop on when it wanted to run, and if I wasn&#8217;t logged in, by homedir would be encrypted anyway, etc. etc. Lots of chances for failure.</p>
<p>Enter <a href="https://launchpad.net/deja-dup">Deja-Dup</a>! Deja-dup is a project spearheaded by my awesome, former colleague at <a href="http://www.canonical.com/">Canonical</a>, <a href="http://mterry.name/log/">Mike Terry</a>. It uses Duplicity on the backend, and gives me a nice, <strong>really</strong> simple frontend to get it set up. It has its own timing mechanism that runs in my GNOME desktop session. This means it only runs when my laptop is on and I&#8217;m logged in. Every once in a while, it checks how long it&#8217;s been since my last backup. If it&#8217;s more than a day, an icon pops up in the notification area that offers to run a backup. I&#8217;ve only been using this for a day, so it&#8217;s only asked me once. I&#8217;m not sure if it starts on its own if I give it long enough.</p>
<p>A couple of caveats:</p>
<ul>
<li>Deja-dup needs a very fresh version of libnotify, which means you need to either be running Ubuntu Natty, use backported libraries, or patch Deja-dup to work with the version of libnotify in Maverick. I opted for the latter approach.</li>
<li>I have a lot of data. Around 100GB worth. Some of it is VM&#8217;s, some of it is code, some of it is various media files. Duplicity doesn&#8217;t support resuming a backup if it breaks halfway, and I &#8220;only&#8221; have 8 Mbit/s upstream bandwidth.. That meant I had to stay connected to the Internet for 28 hours straight (in a perfect world) and not have anything unexpected happen along the way. I wasn&#8217;t really interested in that, so I made my initial backup to an external drive and I&#8217;m now copying the contents of that to Rackspace at my own pace. I can stop and resume at will. The tricky part here was to get Deja-Dup to understand that the backup it thinks is on an external drive really is on Cloud Files. I&#8217;ll save that for a separate post.</li>
</ul>
<p>[1]: Maybe not <strong>actually</strong> infinite, but infinite enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux2go.dk/2011/01/14/it-only-took-me-20-years/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>OpenStack is open for business</title>
		<link>http://blog.linux2go.dk/2010/07/19/openstack-is-open-for-business/</link>
		<comments>http://blog.linux2go.dk/2010/07/19/openstack-is-open-for-business/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 05:00:03 +0000</pubDate>
		<dc:creator>Soren</dc:creator>
				<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[Rackspace]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[planetopenstack]]></category>
		<category><![CDATA[PlanetUbuntu]]></category>

		<guid isPermaLink="false">http://blog.warma.dk/?p=573</guid>
		<description><![CDATA[Moments ago Rackspace announced the OpenStack project. Not only is this awesome news in and of itself, it also means that I can finally blog about it The Rackspace&#8217;s IaaS offering consists of two parts: Cloud Servers and Cloud Files. Incidentally, OpenStack (so far, at least) has two main components to it: A &#8220;compute&#8221; compenent [...]]]></description>
			<content:encoded><![CDATA[<p>Moments ago Rackspace <a href="http://www.rackspace.com/information/mediacenter/release.php?id=8489">announced</a> the OpenStack project. Not only is this awesome news in and of itself, it also means that I can finally blog about it <img src='http://blog.linux2go.dk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The Rackspace&#8217;s IaaS offering consists of two parts: Cloud Servers and Cloud Files. Incidentally, OpenStack (so far, at least) has two main components to it: A &#8220;compute&#8221; compenent called &#8220;Nova&#8221; and a &#8220;storage&#8221; component called &#8220;Swift&#8221;. Swift is the software that runs Rackspace&#8217;s Cloud Files today. Nova was initially developed by NASA and is not currently in use at Rackspace, but will eventually replace the existing Cloud Servers platform.</p>
<p>Last week, we held a design summit in Austin, TX, USA, with a bunch of people from companies all around the world who all showed up to see what we were up to and to help out by giving requirements, designing the architecture or write patches. The amount of interest was astounding!</p>
<p>I&#8217;m sure others will be blogging at length about all that stuff, so I&#8217;d like to touch upon some of the ways in which Nova differs from the alternatives out there. I&#8217;ll leave it to someone else to talk about Swift.</p>
<ul>
<li>Nova is written in Python and uses Twisted.</li>
<li>Nova is completely open source. There&#8217;s no secret sauce. We won&#8217;t ever limit functionality or performance so that we can sell you an enterprise edition. It&#8217;s all released under the Apache license, so it&#8217;s conceivable that some company might write proprietary, for-pay extensions, but it won&#8217;t be coming from us. Ever. This is true for Swift as well, by the way.</li>
<li>Nova currently uses Redis for its key-value store.</li>
<li>Nova can use either LDAP or its key-value store for its user database.</li>
<li>Nova currently uses AMQP for messaging, which is the only mechanism with which the different components of Nova communicate.</li>
<li>The physical hosts that will run the virtual machines all have a component of Nova running on them. It takes care of setting up disk space and other parts of the virtual machine preparation.</li>
<li>It supports the EC2 query API.</li>
<li>The Rackspace API is in the works. I expect this will be the basis for the &#8220;canonical&#8221; API of Nova in the future, but any number of API&#8217;s could be supported.</li>
</ul>
<p>I cannot explain how excited I am about this. Let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux2go.dk/2010/07/19/openstack-is-open-for-business/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Cloud computing &#8211; Same old song?</title>
		<link>http://blog.linux2go.dk/2010/05/03/cloud-computing-same-old-song/</link>
		<comments>http://blog.linux2go.dk/2010/05/03/cloud-computing-same-old-song/#comments</comments>
		<pubDate>Mon, 03 May 2010 12:45:04 +0000</pubDate>
		<dc:creator>Soren</dc:creator>
				<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[PlanetUbuntu]]></category>

		<guid isPermaLink="false">http://blog.warma.dk/?p=519</guid>
		<description><![CDATA[I recently ended up in a conversation with a guy who turned out also to work in IT. When I mentioned I worked on cloud computing, he started talking about how it was just the same old song. Before I had a chance to reply, we were interrupted, but I haven&#8217;t really been able to [...]]]></description>
			<content:encoded><![CDATA[<p>I recently ended up in a conversation with a guy who turned out also to work in IT. When I mentioned I worked on cloud computing, he started talking about how it was just the same old song. Before I had a chance to reply, we were interrupted, but I haven&#8217;t really been able to push this aside, and I&#8217;d like to address this point of view, as it&#8217;s probably held by others as well.</p>
<p>He said that he found cloud computing to be &#8220;old wine in new bottles&#8221;. His arguments were almost exclusively about how outsourcing is a bad idea. The rest of the time he spent pointing out that for all the time he&#8217;d had an Amazon S3 account (I think he said 2-3 years) he hadn&#8217;t noticed a price reduction in spite of the price of self-hosted storage is ever decreasing.</p>
<p>Cloud computing certainly shares some characteristics with outsourcing. You are running services on someone else&#8217;s hardware, in their infrastucture, leaving a big chunk of responsibility with this provider. This is also true for cloud computing. It&#8217;s also true that you&#8217;re paying a premium for the hardware compared to what it would have cost if you had it in your own data center. The difference between CAPEX and OPEX seemed to be lost on him, along with the fact that you&#8217;re also freeing human ressources to work on more interesting things, but none of this is really the point.</p>
<p>Apart from sharing the benefits (and drawbacks!) of outsourcing, cloud computing offers a new level and type of dynamism and availability. If you&#8217;re just going to take your Exchange server (his example) or whatnot and put it on a statically allocated cloud server, then yes, it&#8217;s the same old outsourcing song. If you, however, design your service so that it can scale horizontally, the dynamism of cloud computing will let you scale both up and down to address changes in demand. This way you save money when your service is idling, yet you can scale up quickly to respond to rising demand. More ressources are (supposedly) always available and right at your fingertips. They&#8217;re a simple API call away. Leveraged properly, it&#8217;s very likely that you could not only save money running the same service in the cloud, but also be able to deal with fluctuations in service demand much better than you could in your own data center or in an old school outsourcing scenario.</p>
<p>As for his other point, about the prices never decreasing in spite of the cost of hosting these things yourself decreases over time.. That&#8217;s a good point. He thought that that was how the these providers were really expecting to make money. I wouldn&#8217;t go that far at all, though. What makes cloud computing a viable business is by and large the economy of scale. Hosting lots and lots and lots of virtual servers or petabyte upon petabyte of data is lots cheaper /per unit/ than hosting a few servers and a few terabytes of data, but I have to agree that it does seem that the price per GB of stored data should be decreasing over time in response to the decreasing cost of storage on the market.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux2go.dk/2010/05/03/cloud-computing-same-old-song/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

