<?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>Think Vitamin &#187; Hosting</title>
	<atom:link href="http://thinkvitamin.com/category/dev/hosting/feed/" rel="self" type="application/rss+xml" />
	<link>http://thinkvitamin.com</link>
	<description>A blog about the web</description>
	<lastBuildDate>Thu, 09 Sep 2010 01:38:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Future of Cloud Computing</title>
		<link>http://thinkvitamin.com/web-apps/the-future-of-cloud-computing/</link>
		<comments>http://thinkvitamin.com/web-apps/the-future-of-cloud-computing/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 09:23:41 +0000</pubDate>
		<dc:creator>Simon Wardley</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Web Apps]]></category>

		<guid isPermaLink="false">http://carsonified.com/?p=3590</guid>
		<description><![CDATA[By <strong>Simon Wardley</strong><br />In this talk at The Future of Web Apps London, Simon gave clever insight into where cloud hosting and computing is headed, and what it means for your web app. He also talks about &#8216;Private Clouds&#8217; and interoperability between cloud computing solutions. Based on Twitter feedback, it was one of the most entertaining and interesting [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthinkvitamin.com%2Fweb-apps%2Fthe-future-of-cloud-computing%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthinkvitamin.com%2Fweb-apps%2Fthe-future-of-cloud-computing%2F&amp;source=thinkvitamin&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>In this talk at <a href="http://events.carsonified.com/fowa/2009/london">The Future of Web Apps London</a>, Simon gave clever insight into where cloud hosting and computing is headed, and what it means for your web app. He also talks about &#8216;Private Clouds&#8217; and interoperability between cloud computing solutions.</p>
<p>Based on Twitter feedback, it was one of the most entertaining and interesting talks of the day, so we think you&#8217;ll enjoy it :)</p>
<p>You&#8217;ll learn &#8230;</p>
<ol>
<li>What &#8216;Private Clouds&#8217; are and how they&#8217;ll affect your web app</li>
<li>How standards in cloud computing will change the way your app is setup</li>
<li>Future developments in Cloud hosting and computing that you should be aware of</li>
</ol>
<p><em>Editor&#8217;s Note: You won&#8217;t want to miss Twitter, Mozilla, Mint.com, Reddit, Alex Payne, Fred Wilson, Gary Vaynerchuk, John Resig, Molly Holzschlag, Steve Huffman and Tara Hunt at <a href="http://events.carsonified.com/fowa/2010/miami">The Future of Web Apps Miami</a>.</em></p>
<p><span id="more-3590"></span></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="471" height="259" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=7160585&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=eb6f00&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="471" height="259" src="http://vimeo.com/moogaloop.swf?clip_id=7160585&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=eb6f00&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://thinkvitamin.com/?ak_action=api_record_view&id=3590&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://thinkvitamin.com/web-apps/the-future-of-cloud-computing/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Five Things That Will Kill Your Site</title>
		<link>http://thinkvitamin.com/web-apps/five-things-that-will-kill-your-site/</link>
		<comments>http://thinkvitamin.com/web-apps/five-things-that-will-kill-your-site/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 05:01:24 +0000</pubDate>
		<dc:creator>Jonathan Howell</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Web Apps]]></category>

		<guid isPermaLink="false">http://carsonified.com/?p=2715</guid>
		<description><![CDATA[By <strong>Jonathan Howell</strong><br />A high availability website: It&#8217;s all about expensive redundant hardware with top of the line load balancers and an enterprise class SAN, right? Well, not necessarily. There are several cheap or free steps you can take to ensure uptime before you splash your cash on lots of kit. If you&#8217;re not taking these steps you [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthinkvitamin.com%2Fweb-apps%2Ffive-things-that-will-kill-your-site%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthinkvitamin.com%2Fweb-apps%2Ffive-things-that-will-kill-your-site%2F&amp;source=thinkvitamin&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>A high availability website: It&#8217;s all about expensive redundant hardware with top of the line load balancers and an enterprise class SAN, right? Well, not necessarily.</p>
<p>There are several cheap or free steps you can take to ensure uptime before you splash your cash on lots of kit. If you&#8217;re <em>not</em> taking these steps you are wasting your money on your redundant hardware. Here are my top five things that bring sites down, in rough order of likeliness &#8230;</p>
<ol>
<li>Change</li>
<li>Unexpected load</li>
<li>Slow death</li>
<li>Time related issues</li>
<li>Hardware failure</li>
</ol>
<p>Starting from the top, here is my explanation of each of these categories, together with ways to minimise the chance of it happening to your site.</p>
<p><script>utmx_section("Beginning")</script><em>Editor&#8217;s Note: We&#8217;ll be covering &#8216;Practical Advice for Scaling your Web App&#8217; and &#8216;Advanced Web App Marketing Strategies&#8217; at <a href="http://events.carsonified.com/fowa/2009/london/">The Future of Web Apps</a>.</em></noscript></p>
<p><span id="more-2715"></span></p>
<h3>#1: Change</h3>
<p>This is <em>the biggest</em> category here. If your website was just fine yesterday, and today it&#8217;s bust, you probably changed something.</p>
<p>Maybe you just released a new version of your software? Upgraded a third party product? Or changed the network configuration? Even minor, apparently safe, changes can have unforeseen side effects. So the number one measure you can take to maximise your site uptime, is the unsexy, dull and constraining world of change control.</p>
<p>There are some very basic things to get right here: test your software before you release it. Test it properly even if you think it&#8217;s obvious it&#8217;s going to work. In fact you also need to test releasing it, which means you need development and test instances of your application, as well as your live one.</p>
<p>Develop your changes in the development environment, and work out the release plan &#8211; including how you would reverse the change if you needed to. Follow that release plan in the test environment and test the result. Test it really thoroughly because it&#8217;s much easier (not to mention much less stressful) to fix it here than once it&#8217;s live &#8211; you are not just testing the release, but also the release process itself, so the test environment should be as like the live one as possible.</p>
<p>This is pretty basic stuff, and there&#8217;s no excuse for not doing it, however small your company is, especially with virtualisation making it easy to run multiple environments on one physical server.</p>
<p>Change control is about three simple things:</p>
<ol>
<li>Giving some thought to changes you make to your live system and their potential risks</li>
<li>Making changes one at a time so if something breaks you know what the last change was</li>
<li>Writing down what you changed and why so that everyone can see.</li>
</ol>
<p>Get this under control and you will have avoided the vast majority of your potential outages.</p>
<h3>#2: Unexpected Load</h3>
<p>This is the Digg/TechCrunch effect. Someone writes something nice about your web app, the buzz spreads, and before you know it you have an order of magnitude more traffic to your website than you ever planned for and the whole thing melts.</p>
<p>So what can you do about it? Well of course you could buy racks of hardware just in case, but that&#8217;s not really practical. Here are some more realistic suggestions:</p>
<p><strong><em>Know your capacity.</em></strong> This involves performance testing your application in advance. Set a level for what you consider to be an acceptable response time, and ramp up simulated users carrying out typical tasks until you exceed that threshold. From here you can establish performance bottlenecks and tune your application to increase that capacity (how to do this is a massive subject in its own right), but even without this tuning, you will at least know what kind of spike in load you can support.</p>
<p>It is also worth investigating on-demand services such as Amazon EC2 to increase capacity at short notice either in anticipation of or in response to a big traffic spike.</p>
<p><strong><em>Spread your PR.</em></strong> A big bang PR launch of your new site could leave your reputation in tatters just as everyone’s eyes are on you. But is the big bang really necessary?</p>
<p>If you have developed a major upgrade to your web application, then it may well be very newsworthy and you may want to tell your entire userbase about it as soon as possible. But the last thing you want is every single registered user hitting your site in the hour following your newsletter, and if it is exciting news for your users today, it will still be exciting news for them tomorrow or the day after.</p>
<p>Segment your user base, tell them the exciting news a segment at a time, and use the early data to determine whether you need to speed up or slow down subsequent mailings. The same goes for initial launches of your site: look at options to make announcements in one geography at a time or launch to a limited initial user base.</p>
<p><strong><em>Degrade gracefully.</em></strong> It is better to give full service to a percentage of your users, and a helpful static message to the rest, than for your entire site to be entirely unresponsive. You&#8217;ll need to specifically code for this.</p>
<p>In general a production web application will be constrained on the number of requests that can be effectively processed at any one time – and you should have a good idea of what the upper limit is from following the “know you capacity” advice above.</p>
<p>For a fixed number of incoming requests per second, the number of requests in progress at any one time depends on how long they take to process: 10 requests a second that take 1 second each to process means that you will have 10 requests in progress at any one time. If it starts to take 2 seconds to process each, then you will have 20 requests in progress at any one time, which will probably make your requests take slightly longer still. This slowdown continues until you reach a tipping point where your service grinds to a halt, and any responses that do get returned take much longer than the browser timeout.</p>
<p>There are a few solutions to this, ranging from a simple restriction on simultaneous connections (pick the largest number you know you can handle) to queuing requesting for asynchronous processing rather than tying up a thread for each (detail of these is beyond the scope of this article). Do investigate and implement a suitable solution for your technology stack.</p>
<h3>#3: Slow Death</h3>
<p>This is the slow incremental use of a resource over time that goes unnoticed until one day you hit a critical limit. The obvious contenders here are disk space and memory (being eaten up over time by a slow memory leak).</p>
<p>This category of outage is easy to avoid with a little forward planning. You need to monitor, set alerts and watch trends. Have your system SMS you when available disk space gets below 20% for example.</p>
<p>In theory modern garbage collected languages like Java and C# make memory leaks much less likely than the direct memory allocation of C and C++, but they are still possible: watch for memory allocated by static classes, caches that are not cleared, or more traditional memory leaks in third party middleware.</p>
<p>Track memory usage and watch for trends. If you see issues then the short term solution is to restart the offending component, but in the long term you need to track down, isolate and fix the problem.</p>
<h3>#4: Time Related Problems</h3>
<p>If your website was working fine yesterday but is broken today, one thing that has definitely changed, and is most definitely outside your control to stop, is the date and time.</p>
<p>The biggest threat is daylight saving. You code your new feature in the winter, test it thoroughly and put it live, only to find problems when the clocks change in the spring. Most of the time the bugs this creates are not &#8216;site-down&#8217; problems (maybe time data in your app is out by an hour throughout), but I do remember one problem at lastminute.com where some badly written date calculation code went in to an endless loop every night between midnight and 1 am once daylight saving started, bringing the hotels search down.</p>
<p>The number one rule here is to make sure that your code never gets the current system date and time directly, but calls a mockable alternative, so the production implementation gets the date and time from the system clock, but you can write unit tests to test the behaviour for a sensible set of dates, times and times zones.</p>
<p>The other gotcha is licence expiry. Make sure you know when your crucial licences expire, and create a reminder in your task management system of choice to make sure you renew in plenty of time.</p>
<h3>#5: Hardware Failure</h3>
<p>Things with moving parts break, and in the server world that means primarily disks and fans. Disks hold your data so are kind of crucial, over and above mere uptime, so make sure you have RAID redundancy (and appropriate monitoring so you can replace a broken disk before a second one breaks), and backups at least daily with copies offsite.</p>
<p>If you&#8217;ve done everything else on this list, and have some money to spend to reduce the risk of hardware failure, then go for it in this sequence:</p>
<ol>
<li>Add a load balancer and scale out the web tier, to give you both increased capacity and redundancy.</li>
<li>Mirror or cluster your database on to a second DB server. Likewise for any critical files on the filesystem: use a SAN or replicate between servers.</li>
<li>Set up in a second data centre &#8211; either as a DR fallback or operate in active-active.</li>
</ol>
<p>Of course spending cash to ensure site availability is wasted if the failover doesn&#8217;t work when you need it, so plan carefully and test it. With redundant hardware in place, it will protect you from more than just hardware failure. It allows you to direct traffic away from an instance the seems to have locked up while you restart it, or perform operating systems upgrades that require a restart without site downtime.</p>
<h3>In Conclusion &#8230;</h3>
<p>This isn&#8217;t an exhaustive list of things that might break your site, but it represents a good summary of outages I have come across. (The big category I have not included here is failure of some service provided to you like power in your data centre). However, dig in to what caused a failure and it’s probably one of the items on this list, most likely someone changing something.</p>
<p>As I mentioned at the very beginning, hardware failure is last on my list, so do not jump straight in to spending money here until you have dealt with the other categories here, and <strong>the single most important thing you can do is control change</strong>.</p>
<p>In my days running online development at lastminute.com, I was talking to the head of technical operations over the Christmas period, and I happened to comment that the site had been remarkably stable. He quickly replied, &#8220;Yes, that&#8217;s because most of your guys are on holiday, so no one&#8217;s been meddling. If I sent my team on holiday too we&#8217;d have 100% uptime&#8221;.</p>
<p>It&#8217;s true: IT systems that no one touches don&#8217;t break very often. Not never, but not very often. That said, change is clearly a major part of a successful website, so make sure you are confident of the changes you make and how to undo them, and you will be on your way to having a stable site.</p>
<p>Please share any tips you have for keeping your site live, in the comments below. Thanks!</p>
<img src="http://thinkvitamin.com/?ak_action=api_record_view&id=2715&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://thinkvitamin.com/web-apps/five-things-that-will-kill-your-site/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Survive the digg effect with Amazon Web Services</title>
		<link>http://thinkvitamin.com/dev/survive-the-digg-effect-with-amazon-web-services/</link>
		<comments>http://thinkvitamin.com/dev/survive-the-digg-effect-with-amazon-web-services/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 08:00:58 +0000</pubDate>
		<dc:creator>Theron Parlin</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.thinkvitamin.com/features/webapps/survive-the-digg-effect-with-amazon-web-services</guid>
		<description><![CDATA[By <strong>Theron Parlin</strong><br />As the CTO for Geezeo &#8212; an online personal finance management application &#8212; I&#39;m asked a lot of questions about security. Ironically, I&#39;ve never personally had many concerns about security. Perhaps it&#39;s because I have such an extensive background in security. From installing authentication systems for major banks when I worked at RSA Data Security [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthinkvitamin.com%2Fdev%2Fsurvive-the-digg-effect-with-amazon-web-services%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthinkvitamin.com%2Fdev%2Fsurvive-the-digg-effect-with-amazon-web-services%2F&amp;source=thinkvitamin&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>As the <acronym title="Chief Technology Officer">CTO</acronym> for <a href="http://www.geezeo.com">Geezeo</a> &mdash; an online personal finance management application &mdash; I&#39;m asked a lot of questions about security. Ironically, I&#39;ve never personally had many concerns about security. Perhaps it&#39;s because I have such an extensive background in security. From installing authentication systems for major banks when I worked at RSA Data Security to writing the document purchasing code for Gartner&#39;s website to writing custom firewall solutions in Linux as a consultant for small to mid-sized companies, security has become less a concern for me and more a customary practice.</p>
<p>However, the second most popular set of questions I get from people about Geezeo &mdash; after security &mdash; are questions about <a href="http://aws.amazon.com">Amazon Web Services</a> (AWS). AWS is Amazon&#8217;s technology platform for hosting web applications, storage and more.</p>
<p>People generally want to know how it was that I came to choose AWS for Geezeo, what my opinion of AWS is, what the technical challenges (if any) associated with using AWS are, how well it performs and how much does it cost?</p>
<h3>AWS vs. everybody else</h3>
<p>So how did I come to choose AWS? We not only looked at, but tried, a few other hosting providers &mdash; including Media Temple&#8217;s popular <a href="http://www.mediatemple.net/webhosting/gs/">Grid-Service product</a>. But soon after getting set up we started having lots of problems and running into limitations.</p>
<p>For instance, server downtime was a big problem at Media Temple. And many hosting providers only offer one type of dedicated server (e.g. you are usually limited to using RedHat Fedora Core X for all your services). Virtual dedicated servers are even worse. Not only can you not change the operating system, but development environments are usually missing or running out-of-date system libraries. This makes it difficult and time-consuming to get third party applications compiled.</p>
<p>I decided it was time to get into something more reliable and flexible. As I was gathering quotes from some high-end hosting firms I started hearing a lot of really good things about Amazon&#8217;s Simple Storage Service (S3) and their resizable computing platform called the Elastic Compute Cloud (EC2). It was in closed beta at the time but one of our co-founders, Pete Glyman, emailed Amazon about gaining access to the beta and we were in the next day.</p>
<h3>The basics of EC2 and S3</h3>
<p style="text-align:center;"><img src="/images/articles/geezeo/geezeo_infrastructure.gif" alt="Geezeo Infrastructure" /></p>
<p>The idea of EC2 is simple &mdash; you first create a new server, then you modify the server to meet all your specifications, upload your website to it and get everything up and running. You can then create a disk image based on the server you just configured. What does that give you? Well, you now have a bootable image that you can use to boot as many new server instances as you desire.</p>
<p>This is the &ldquo;elastic&rdquo; part of the &ldquo;compute cloud&rdquo;. Whenever you need more juice, there it is, simply turn it up to 11. Then, when you no longer need it, no problem, you can turn it right back down again.</p>
<p>Amazon&#39;s S3 storage engine compliments this service perfectly, because just like having unlimited computing power, S3 gives you unlimited storage copacity. Used together with a reverse proxying load balancer &mdash; a service that sits in front of your website and routes web requests as they come in to your Amazon servers &mdash; you never have to worry about scaling your web site. Amazon has literally solved that problem for you.</p>
<h3>Security doesn&#39;t need a fancy acronym</h3>
<p>Another problem that EC2 solves for you is security. By default, all ports on an Amazon instance are closed. It&#39;s up to you to open the ports you need for your web application. This makes it more difficult for users to accidentally leave ports open. Amazon also allows you to create security groups &mdash; a set of instances that have the same security configuration &mdash; for easy and fast deploying. So you could have a web server group that has port 80 open, and a secure server group that has port 443 open. Then when you create new instances you simply choose which security group they will belong to.</p>
<h3>A small challenge</h3>
<p>The only real technical challenge with getting AWS set up was using it to host our database. The reason being because the data on a running EC2 instance isn&#39;t persistent. In other words, if your instance crashes, your data is gone.</p>
<p>So, in order to host a database on EC2 we replicate our data off to S3 every hour. This means the most we lose in the event of crash would be one hour&#39;s worth of data. And we&#8217;d be back up and running within minutes of a bad crash thanks to EC2&#8217;s ability to immediately start and run instances that are pre-configured with all of our software already running.</p>
<p>That&#39;s what makes AWS so great. Anytime you want or need to replicate your server, you simply run a new instance. Say your website gets &ldquo;dugg,&rdquo; you could literally, within minutes, add X number of servers to your environment to accommodate the traffic, then scale back down later if need be.</p>
<h3>Tools of the trade</h3>
<p>There have been some great tools built for using S3 and EC2. Most notably the Firefox plugin <a href="http://developer.amazonwebservices.com/connect/entry.jspa?entryID=609">EC2 UI</a>. It puts a user-friendly face on EC2 administration, which can really come in handy:</p>
<p style="text-align:center;"><img src="/images/articles/geezeo/ec2ui.gif" alt="EC2 UI" /></p>
<p>There&#39;s also a Firefox plugin called <a href="https://addons.mozilla.org/en-US/firefox/addon/3247">S3 Organizer</a> which does the same for, you guessed it, S3 organization:</p>
<p style="text-align:center;"><img src="/images/articles/geezeo/s3organizer.gif" alt="S3 Organizer" /></p>
<h3>Conclusion</h3>
<p>Many other companies have been using AWS but one of the bigger names is <a href="http://37signals.com/">37signals</a>. They&#39;re hosting over one terrabyte of data in Amazon&#39;s S3 for <a href="http://www.basecamphq.com/">Basecamp</a> and <a href="http://campfirenow.com/">Campfire</a> and estimate that they&#8217;re saving thousands upon <a href="http://www.amazon.com/gp/browse.html?node=325812011">thousands of dollars per year</a>.</p>
<p>As for Geezeo, we&#39;ve probably saved two or three thousand dollars in just the few short months that we&#39;ve been using AWS.</p>
<p>Using AWS isn&#39;t for the faint of heart. You need to have a very good understanding of Unix, you need to be able to install a Java runtime environment on your local computer in order to use the Amazon command line tools and you need to do a good amount of reading in order to get things initially setup.</p>
<p>But if you&#8217;re up for the challenge and want a reliable, flexible and secure infrastructure &mdash; it&#8217;s certainly the way to go.</p>
<p><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>
<img src="http://thinkvitamin.com/?ak_action=api_record_view&id=1749&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://thinkvitamin.com/dev/survive-the-digg-effect-with-amazon-web-services/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
