<?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>Mike Brittain</title>
	<atom:link href="http://www.mikebrittain.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mikebrittain.com/blog</link>
	<description>Internet, mobile applications, skiing, snowboarding, food... you know, whatever comes to mind.</description>
	<lastBuildDate>Wed, 24 Jun 2009 18:51:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tips on Selecting a CDN Vendor</title>
		<link>http://www.mikebrittain.com/blog/2009/06/24/selecting-a-cdn-vendor/</link>
		<comments>http://www.mikebrittain.com/blog/2009/06/24/selecting-a-cdn-vendor/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 18:51:11 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=368</guid>
		<description><![CDATA[There was interest after my talk at Velocity on which vendor is the best. Since I haven&#8217;t been exposed to many of the vendors on the market, it&#8217;s hard for me to answer that question.  I can, however, give some insight onto what you should look for when choosing a vendor for yourself.
1. Start with [...]]]></description>
			<content:encoded><![CDATA[<p>There was interest after my <a href="/blog/2009/06/24/slides-from-velocity-2009/">talk at Velocity</a> on which vendor is the best. Since I haven&#8217;t been exposed to many of the vendors on the market, it&#8217;s hard for me to answer that question.  I can, however, give some insight onto what you should look for when choosing a vendor for yourself.</p>
<p><strong>1. Start with price. </strong> There is a pretty wide variance in price among vendors in the industry.  This mostly correlates to how big of a fish they want to go after.  If you can push a lot of traffic over a CDN (I want to say maybe hundreds of terabytes in a month), then you&#8217;re likely to find that many CDNs are going to give you great pricing.  If you&#8217;re a small fish with a small budget, however, you&#8217;ll immediately be able to exclude some of the larger vendors from your shopping list.</p>
<p><strong>2. Setup a trial account.</strong> When you get down to three or four vendors, arrange a two week window for you to test their service.  You&#8217;ll need to have a little time to do basic configuration for the CDN, so plan for about half a day when you can work with vendors to iron out any unexpected issues with getting setup.</p>
<p>I give additional points to vendors who have a technical lead available to help setup your account and review your configuration.  Ask as many questions as possible and make sure you get answers, even if it means the sales team has to get their engineers involved.</p>
<p><strong>3. Use &#8220;origin pull&#8221;.</strong> I touched on this briefly in my talk, but I believe that this is a better solution than CDN storage.  It should become obvious while setting up your account that slipping a CDN in front of your origin servers is supposed to be easy.  If you&#8217;re spending a lot of time getting your account setup at this point, imagine the frustration you&#8217;re going to face if you CDN has an outage and you need to switch in another provider.</p>
<p><strong>4. Compare speeds from various locations.</strong> I used ab and http_load to do some basic speed tests on individual files being served from your CDN.  Run the same tests against your origin servers.  You should run these tests in a few different geographic locations. If you don&#8217;t have access to test locations of your own, talk to friends who may be able to run tests for you and send you results.</p>
<p>If you have access to tools like <a href="http://keynote.com/">Keynote</a> or <a href="http://gomez.com/">Gomez</a>, add those into your testing.  Let them monitor load speeds from the CDNs your testing.</p>
<p><strong>5. Test cold cache speeds.</strong> Response for objects that are in cache are supposed to be very fast, and you&#8217;ll probably find no problems there.  What you really should be concerned about is how slow the latency is for objects not already in cache &#8212; i.e. a full round-trip from end-user to origin by way of the CDN.  There&#8217;s no reason latency should be exceptionally high here, but if you find any surprises escalate them to the vendor.  It could be a problem with your configuration, or it could be that they are someone you shouldn&#8217;t be working with.</p>
<p><strong>6. Understand the support model. </strong> An outage is a really bad time to be figuring out how to reach support for the first time.  Find this out during the evaluation period.  Do you open trouble tickets with a phone call, an email, or a control panel?  Test this out.  Open a ticket to ask a few questions.  Become familiar with how tickets are resolved &#8212; do you get an immediate follow up, do you have visibility into the status of your ticket, or does your request go into a black hole?</p>
<p>Here&#8217;s a fun test for support: Intentionally set an invalid &#8220;cache-control&#8221; header for a test URL and tell support that you&#8217;re having trouble with caching that object.  Hopefully you get a quick, intelligent, and polite response.  If you&#8217;re missing any of those three characteristics, maybe you should reconsider whether you want to be working with this vendor.  Remember that the next time you&#8217;ll be opening a trouble ticket, you&#8217;re site may be on fire.</p>
<p><strong>7. Look for transparency in status.</strong> I&#8217;ve wrote a bit about transparency in operations earlier this year.  I haven&#8217;t seen this with most of the vendors I&#8217;ve evaluated myself, but I think it&#8217;s worth extra points to vendors who get this right.</p>
<p><strong>8. Look for the pretty pictures.</strong> Most vendors have pretty crappy reporting, but check it out an know what you&#8217;re going to get.  Run a light load against your test account for four or five days and then review the reports (reports without data aren&#8217;t very useful).</p>
<p><strong>9. Get close with a technical lead.</strong> Find the smartest technical guy on your vendor&#8217;s team and talk with him/her regularly.  Tell them what you&#8217;re up to, how you&#8217;re using the CDN, what is working and what is not.  This person can teach you a lot about the more subtle features of caching after you get past the initial setup.  Ask for new features, no matter how absurd they may seem.  Vendors are looking to differentiate themselves in a space where most look like commodity services, so use this to your advantage.</p>
<p>It&#8217;s really important, as with most vendors, to avoid getting locked-in too tightly.  If you&#8217;re using a new video steaming service that is only available through one provider, then you&#8217;re going to have to select a niche vendor. On the other hand, if you are just serving typical site assets (images, CSS, JavaScript, etc.) then you should keep things flexible enough where you can move from CDN to CDN when necessary.</p>
<p>Hopefully these tips are useful to you.  Please post additional suggestions in the comments below.  I&#8217;m specifically interested in hearing about additional monitoring or testing tools that you have found useful in evaluating a CDN yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/06/24/selecting-a-cdn-vendor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides from Velocity 2009</title>
		<link>http://www.mikebrittain.com/blog/2009/06/24/slides-from-velocity-2009/</link>
		<comments>http://www.mikebrittain.com/blog/2009/06/24/slides-from-velocity-2009/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 09:28:13 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=365</guid>
		<description><![CDATA[I&#8217;ve got my slides posted from Getting to Second Base with Your CDN, which I presented at Velocity 2009.  It was a much shortened talk than I hoped to give, but I think that some of this was still useful.  Good feedback so far.
Apparently I posted the deck that included some additional slides past the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got my slides posted from <a href="http://www.slideshare.net/mikebrittain/how-to-get-to-second-base-with-your-cdn">Getting to Second Base with Your CDN</a>, which I presented at Velocity 2009.  It was a much shortened talk than I hoped to give, but I think that some of this was still useful.  Good feedback so far.</p>
<p>Apparently I posted the deck that included some additional slides past the &#8220;thank you&#8221;, which were left in just in case there were questions that could have been addressed with some visual support.  So, enjoy those out-of-context extras.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/06/24/slides-from-velocity-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Manage Recipes on the Palm Pre</title>
		<link>http://www.mikebrittain.com/blog/2009/06/16/manage-recipes-on-the-palm-pre/</link>
		<comments>http://www.mikebrittain.com/blog/2009/06/16/manage-recipes-on-the-palm-pre/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 15:45:05 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[One tsp.]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[onetsp]]></category>
		<category><![CDATA[palm pre]]></category>
		<category><![CDATA[recipe manager]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=353</guid>
		<description><![CDATA[Yesterday I got some screen shots of One tsp. running on a Palm Pre.  The recipe manager is available for mobile phones at onetsp.mobi and it turns out that the Pre renders the web app just fine.  I&#8217;m serving the same interface to Pre users that I serve to iPhones.  Both are based on the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://onetsp.mobi/"><img class="alignright" style="border: 1px solid silver;" title="One tsp. screen shot on the Palm Pre" src="http://onetsp.com/images/palm_pre_one_tsp_recipes.jpg" alt="" width="176" height="264" /></a>Yesterday I got some screen shots of <a href="http://onetsp.com/">One tsp.</a> running on a <a href="http://www.palm.com/us/products/phones/pre/">Palm Pre</a>.  The recipe manager is available for mobile phones at <a title="Mobile phone recipe manager application" href="http://onetsp.mobi/">onetsp.mobi</a> and it turns out that the Pre renders the web app just fine.  I&#8217;m serving the same interface to Pre users that I serve to iPhones.  Both are based on the <a href="http://webkit.org/">webkit</a> browser so it makes sense that they would be compatible.</p>
<p>For users new to One tsp., the app runs in the web browser and registering for an account is free.  This is better than recipe software that you would install on your phone because you can also access and manage your recipes from your desktop computer or anywhere else you have access to a web browser.</p>
<p>Thanks for the screen shots, <a title="Anthony Lopez" href="http://anthonyl.us/">Anthony</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/06/16/manage-recipes-on-the-palm-pre/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhone 3G S with Stereo Bluetooth (A2DP)</title>
		<link>http://www.mikebrittain.com/blog/2009/06/12/iphone-3g-s-with-stereo-bluetooth-a2dp/</link>
		<comments>http://www.mikebrittain.com/blog/2009/06/12/iphone-3g-s-with-stereo-bluetooth-a2dp/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 23:52:15 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=351</guid>
		<description><![CDATA[I bluetooth audio this might be one of the most interesting features to me in the new iPhone&#8230; the ability to stream music using Bluetooth to an audio headset or car stereo.  Love this idea.  I&#8217;ve gone through two of those FM transmitters, which I think are a pain to use especially in a metropolitan [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://www.ilounge.com/index.php/articles/comments/16981/">bluetooth audio</a> this might be one of the most interesting features to me in the new iPhone&#8230; the ability to stream music using Bluetooth to an audio headset or car stereo.  Love this idea.  I&#8217;ve gone through two of those FM transmitters, which I think are a pain to use especially in a metropolitan area with only small areas of unused FM air space.</p>
<p>Last weekend I was looking at my stereo and thinking, &#8220;When was the last time I actually put a CD in this deck?&#8221;  I also thought, &#8220;Why does this stereo have a tape deck, anyway?&#8221; (it&#8217;s a 2003 model, by the way).</p>
<p>The article states a number of potential issues with it which I&#8217;m hoping will get cleared up.  Of course, I don&#8217;t have a bluetooth receiver for my car either, which could be a drawback.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/06/12/iphone-3g-s-with-stereo-bluetooth-a2dp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caching URLs with Query Strings</title>
		<link>http://www.mikebrittain.com/blog/2009/06/11/caching-urls-with-query-strings/</link>
		<comments>http://www.mikebrittain.com/blog/2009/06/11/caching-urls-with-query-strings/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 23:56:44 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[WWW]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[querystring]]></category>
		<category><![CDATA[urls]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=347</guid>
		<description><![CDATA[A common method for breaking a cached object, or for specifying a version of an object, is to put a version number into a query string or some other part of the file name.  I&#8217;ve been wary of using query strings in URLs of static assets that I cache, either in browser cache or on [...]]]></description>
			<content:encoded><![CDATA[<p>A common method for breaking a cached object, or for specifying a version of an object, is to put a version number into a query string or some other part of the file name.  I&#8217;ve been wary of using query strings in URLs of static assets that I cache, either in browser cache or on a CDN.  I hadn&#8217;t seen much hard evidence, but generally felt query strings provide another area of uncertainty in a network path that you already have little control over.</p>
<p>Today, I just found Google&#8217;s recommendation for <a href="http://code.google.com/speed/page-speed/docs/caching.html#LeverageProxyCaching">leveraging proxy caches</a>, which states, &#8220;to enable proxy caching for these resources, remove query strings from references to static resources, and instead encode the parameters into the file names themselves.&#8221;</p>
<p>What is a good alternative?  One method I like is to use a version number that is part of the URL path:</p>
<pre>  /12345/css/site.css</pre>
<p>The &#8220;12345&#8243; is prepended in your page templates using a variable.  The value can be taken from anywhere you want&#8230; it could be part of a timestamp, a revision number in your source control, or maybe even manually changed in a constants file anytime your are updating files in your &#8220;css&#8221; directory.  If you&#8217;re using Apache, this portion of the path can be easily stripped off the request using mod_rewrite.</p>
<pre>  RewriteEngine On
  RewriteRule ^/\d{5,}(/.+)$ $1</pre>
<p>With this method, you&#8217;re not literally using directories with version number in them.  Rather, you just use your regular old /htdocs/css directory. The same can be applied to JavaScript, images, or other directories with static assets.</p>
<p>What you gain is the ability to break your cached versions of files when necessary, but to also set long-term cache times on these assets (while they&#8217;re not changing) and expect cache servers between you and your users to properly store these objects.</p>
<h3>More to come&#8230;</h3>
<p>I&#8217;ll be speaking at <a href="http://en.oreilly.com/velocity2009">Velocity</a> in two weeks about how to optimize caching with your CDN.  I have a lot of content that I&#8217;d like to present, but only 20 minutes to do it.  Over the coming weeks I&#8217;ll be writing a number of posts covering topics that don&#8217;t make it into the presentation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/06/11/caching-urls-with-query-strings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fragility of the Cloud</title>
		<link>http://www.mikebrittain.com/blog/2009/06/11/fragility-of-the-cloud/</link>
		<comments>http://www.mikebrittain.com/blog/2009/06/11/fragility-of-the-cloud/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:04:26 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[outage]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=345</guid>
		<description><![CDATA[A lightning strike causes EC2 outages and Om Malik blames the &#8220;fragility of the cloud,&#8221; rather than recognizing that all tech suffers failures.  I&#8217;ll say it again, this could have happened to my own servers, or my own data center, and I would have been much further up the creek than if Amazon team was [...]]]></description>
			<content:encoded><![CDATA[<p>A lightning strike causes EC2 outages and Om Malik blames the &#8220;<a href="http://gigaom.com/2009/06/10/amazons-ec2-service-suffers-outage/">fragility of the cloud</a>,&#8221; rather than recognizing that all tech suffers failures.  I&#8217;ll say it again, this could have happened to my own servers, or my own data center, and I would have been much further up the creek than if Amazon team was taking care of it.  Besides, one of the most important lessons I have learned from working with AWS is that servers/services <em>should</em> fail, and fail gracefully.  It shouldn&#8217;t matter whether that service is &#8220;in the cloud&#8221; or in your data center.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/06/11/fragility-of-the-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Case Against Using Symlinks For Code Promotion</title>
		<link>http://www.mikebrittain.com/blog/2009/05/12/case-against-using-symlinks-for-code-promotion/</link>
		<comments>http://www.mikebrittain.com/blog/2009/05/12/case-against-using-symlinks-for-code-promotion/#comments</comments>
		<pubDate>Wed, 13 May 2009 03:03:57 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[WWW]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operations]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=335</guid>
		<description><![CDATA[I&#8217;ve read and argued a lot about the case for using symlinks in managing code promotion. I&#8217;ve talked about this a lot with my pal, John Goulah, and he also noted this approach in a post he wrote about deploying code.
My general approach goes something like this:

Point your document root at a static location, such [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve read and argued a lot about the case for using symlinks in managing code promotion. I&#8217;ve talked about this a lot with my pal, <a href="http://blog.johngoulah.com/">John Goulah</a>, and he also noted this approach in a post he wrote about <a href="http://blog.johngoulah.com/2009/03/code-deployment-techniques/">deploying code</a>.</p>
<p>My general approach goes something like this:</p>
<ol>
<li>Point your document root at a static location, such as /var/www/html/prod.</li>
<li>Promote new code (from stage, dev, what have you) to a versioned directory on your prod server, such as /var/www/html/release_12345.</li>
<li>Use a symlink, &#8220;prod&#8221; in this case, to point at a specific release (e.g. prod -&gt; release_12345).</li>
</ol>
<p>The goal here is that you have a handful of versions on your prod servers that make it very quick to revert to a previous version.  You <em>can</em> revert your code, right?  (I&#8217;ll admit that only after a number of years I&#8217;ve finally gotten reverts working quickly and consistently.)  Our build process is not too involved, but it takes about two minutes to get code out to all of our servers and then flip over the symlinks to make the new code live.  The flip only takes one or two seconds, so all of the web servers we are deploying to remain consistent.</p>
<p>We have used a similar technique for nearly the last year in our build process at <a href="http://www.cafemom.com/">CafeMom</a>.  I stress the word <em>used</em>, because we just got rid of the symlinks.</p>
<p>It turns out that we ran into an issue with the way that Apache handles symlinks while under load.  At the point when we would flip our symlinks to a new release version, files (especially PHP) from the previous release were still being executed or served by Apache.  It seems that Apache caches the real path to a file after determining where the symlink is pointing, and doesn&#8217;t necessarily re-check the symlink.  I don&#8217;t know how long this occurs, or whether it is specific to individual Apache children, but I do know that it has been a regular pain in the ass (PHP fatals, blank white pages, yuck).</p>
<p>To be clear about details, we also run <a href="http://us.php.net/apc/">APC</a> on our servers to speed things up in our PHP processing.  When we promote a new version of code we also flush the PHP cache, thinking that this would help clear out cached versions of files.  The only thing that would absolutely clear up this issue was to cycle Apache, which we would prefer not to do on every deployment.</p>
<p>What now?  Rather than repointing a symlink, we move entire directories.  Something like this:</p>
<ol>
<li>Sync code out to a new versioned directory on our prod servers, say release_12346.</li>
<li>Switch release directories doing something like this: &#8220;mv prod release_12345; mv release_12346 prod&#8221;.  (We use a state file to keep track of where &#8220;prod&#8221; originally lived, in case you&#8217;re wondering where release_12345 came from.)</li>
</ol>
<p>Renaming these directories takes about the same time as swapping the old symlink we were using.  The Apache virtual host configurations (document roots) don&#8217;t need to be updated, either.  Looking at our APC dashboard and the affect on our site, it seems like this approach is working much more smoothly.</p>
<p>If you&#8217;ve got questions, alternative suggestions, or if you know what the root issue is with Apache caching our symlinks, sound off in the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/05/12/case-against-using-symlinks-for-code-promotion/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>High Traffic Sites on EC2</title>
		<link>http://www.mikebrittain.com/blog/2009/04/08/327/</link>
		<comments>http://www.mikebrittain.com/blog/2009/04/08/327/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 20:36:49 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[haproxy]]></category>
		<category><![CDATA[rrdns]]></category>
		<category><![CDATA[scalability]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=327</guid>
		<description><![CDATA[Grig Gheorghiu wrote up a nice article on handling high traffic sites on EC2.  It&#8217;s definitely worth a read for some high-level concepts about multi-tier architectures.  It doesn&#8217;t talk deeply on details of EC2 (would have liked to see something mentioned about availability zones for MySQL and load balancers).  One thing I really liked was [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://agiletesting.blogspot.com/">Grig Gheorghiu</a> wrote up a nice article on handling <a href="http://agiletesting.blogspot.com/2009/04/experiences-deploying-large-scale.html">high traffic sites on EC2</a>.  It&#8217;s definitely worth a read for some high-level concepts about multi-tier architectures.  It doesn&#8217;t talk deeply on details of EC2 (would have liked to see something mentioned about availability zones for MySQL and load balancers).  One thing I really liked was the concept of using multiple load balancers with round-robin DNS pointing at them.  I&#8217;ve been considering this as an option and have played around with <a href="http://haproxy.1wt.eu/">HAProxy</a> already.  It&#8217;s likely a future step for our new image service at <a href="http://www.cafemom.com/">CafeMom</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/04/08/327/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Velocity Schedule</title>
		<link>http://www.mikebrittain.com/blog/2009/04/08/velocity-schedule/</link>
		<comments>http://www.mikebrittain.com/blog/2009/04/08/velocity-schedule/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 12:09:57 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[velocity2009]]></category>
		<category><![CDATA[velocityconf]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=324</guid>
		<description><![CDATA[
I&#8217;ll be speaking at Velocity on how to improve service with your CDN.  The talk is part of the web performance track.  A detailed outline of the talk is available on their site.  I&#8217;m pretty excited to share some of the tricks I&#8217;ve learned over the last 3 years with CDNs.  There&#8217;s also a great [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.oreilly.com/velocity2009"><br />
<img style="float:right; margin-left: 15px;" title="Velocity 2009" src="http://assets.en.oreilly.com/1/event/29/velocity2009_banner_speaking_125x125.gif" border="0" alt="Velocity 2009" width="125" height="125" /></a>I&#8217;ll be speaking at <a href="http://en.oreilly.com/velocity2009">Velocity</a> on how to <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/7521">improve service with your CDN</a>.  The talk is part of the web performance track.  A detailed outline of the talk is available on their site.  I&#8217;m pretty excited to share some of the tricks I&#8217;ve learned over the last 3 years with CDNs.  There&#8217;s also a great <a href="http://en.oreilly.com/velocity2009/public/schedule/full">roster of speakers</a> who I&#8217;m looking forward to seeing there.  Early registration is now open.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/04/08/velocity-schedule/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Status Pages Provide Transparency for Operations</title>
		<link>http://www.mikebrittain.com/blog/2009/03/31/status-pages-operations-transparency/</link>
		<comments>http://www.mikebrittain.com/blog/2009/03/31/status-pages-operations-transparency/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 12:29:24 +0000</pubDate>
		<dc:creator>Mike Brittain</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.mikebrittain.com/blog/?p=321</guid>
		<description><![CDATA[These days, I find it&#8217;s a requirement for vendors to provide operational status pages on their services.  I say this because I know there are many companies who aren&#8217;t yet on-board.  Status pages give your customers an immediate answer to the question, &#8220;What&#8217;s going on with X site?&#8221; or &#8220;Why does Y service seem slow [...]]]></description>
			<content:encoded><![CDATA[<p>These days, I find it&#8217;s a requirement for vendors to provide operational status pages on their services.  I say this because I know there are many companies who aren&#8217;t yet on-board.  Status pages give your customers an immediate answer to the question, &#8220;What&#8217;s going on with X site?&#8221; or &#8220;Why does Y service seem slow today?&#8221;</p>
<p>A status page could be as simple as some of the third-party magic eight balls out there like <a href="http://www.downforeveryoneorjustme.com/">Down For Everyone Or Just Me</a>.  But an effective status page will give more information than &#8220;yes&#8221; or &#8220;no&#8221;, and will communicate:</p>
<ul>
<li>Is the service or site down?</li>
<li>How long has it been down?</li>
<li>What is being done to fix it?</li>
<li>When is the service expected to be back up?</li>
</ul>
<p>Oh, and it probably warrants stating that you shouldn&#8217;t run these status pages on the same infrastructure that runs your site/service.  If your servers, network, etc. go out of service, you want to be sure that your customers can still reach your status page.</p>
<p>Let&#8217;s get on to some examples:</p>
<h3><a href="http://status.aws.amazon.com/">status.aws.amazon.com</a></h3>
<p>Status page for Amazon&#8217;s Web Services which shows a separate status display for each of their infrastructure services.  There are RSS feeds available for each service allowing you to subscribe to monitor service outages.  One thing I like about this page is the &#8220;report an issue&#8221; link on the page, especially since it doesn&#8217;t require to to have your login credentials to quickly note an issue.</p>
<h3><a href="http://www.google.com/appsstatus#">www.google.com/appsstatus</a></h3>
<p>Similar in format to Amazon&#8217;s status page, this one also includes a running history of when the last issues occurred.</p>
<h3><a href="http://status.mosso.com/">status.mosso.com</a> and <a href="http://status.dreamhost.com/">status.dreamhost.com</a></h3>
<p>Status pages for Mosso and Dreamhost are fairly similar, they are both simple blogs.  Support techs post issues when they arise and follow up with time-stamped messages when services are diagnosed and fixed.</p>
<p>This is by no means an exhaustive list but I think it highlights a few good examples.  Why is this important?  As much as I hate to use the phrase &#8220;controlling the message,&#8221; it is really important that your customers know that you&#8217;re on top of things&#8230; especially when <em>they are paying you</em>.</p>
<p>Besides, in this day and age if you don&#8217;t tell your customers what&#8217;s going on, <a href="http://search.twitter.com/search?q=%22anyone+having%22+trouble+OR+issues">somebody else will</a>, and you never know what they are going to <a href="http://search.twitter.com/search?q=%22customer+service%22+OR+%22tech+support%22+sucks">say about you</a>.</p>
<p><strong>If you know of other good status pages</strong>, please feel free to add them to the comments below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mikebrittain.com/blog/2009/03/31/status-pages-operations-transparency/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
