<?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>Kitchen Soap &#187; Uncategorized</title>
	<atom:link href="http://www.kitchensoap.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kitchensoap.com</link>
	<description>Thoughts on capacity planning and web operations.</description>
	<lastBuildDate>Fri, 25 Jun 2010 04:05:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ops Meta-Metrics: Velocity 2010 Slides</title>
		<link>http://www.kitchensoap.com/2010/06/24/ops-meta-metrics-velocity-2010-slides/</link>
		<comments>http://www.kitchensoap.com/2010/06/24/ops-meta-metrics-velocity-2010-slides/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 04:05:16 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=483</guid>
		<description><![CDATA[As expected, Velocity was excellent this year. What an awesome time to be in this field.
Caveat for those who didn&#8217;t see/hear my talk: the graphs and numbers in the slides are, for the most part, made up. But they&#8217;re also in line with what I&#8217;ve seen at Flickr and Etsy.
Ops Meta-Metrics: The Currency You Pay [...]]]></description>
			<content:encoded><![CDATA[<p>As expected, Velocity was excellent this year. What an awesome time to be in this field.</p>
<p>Caveat for those who didn&#8217;t see/hear my talk: the graphs and numbers in the slides are, for the most part, made up. But they&#8217;re also in line with what I&#8217;ve seen at Flickr and Etsy.</p>
<div id="__ss_4608108" style="width: 425px;"><strong style="display:block;margin:12px 0 4px"><a title="Ops Meta-Metrics: The Currency You Pay For Change" href="http://www.slideshare.net/jallspaw/ops-metametrics-the-currency-you-pay-for-change">Ops Meta-Metrics: The Currency You Pay For Change</a></strong><object id="__sse4608108" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" 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://static.slidesharecdn.com/swf/ssplayer2.swf?doc=velocity2010-opsmetrics-100624184852-phpapp01&amp;stripped_title=ops-metametrics-the-currency-you-pay-for-change" /><param name="name" value="__sse4608108" /><param name="allowfullscreen" value="true" /><embed id="__sse4608108" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=velocity2010-opsmetrics-100624184852-phpapp01&amp;stripped_title=ops-metametrics-the-currency-you-pay-for-change" name="__sse4608108" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/jallspaw">John Allspaw</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2010/06/24/ops-meta-metrics-velocity-2010-slides/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Some WebOps Interview Questions</title>
		<link>http://www.kitchensoap.com/2010/05/26/some-webops-interview-questions/</link>
		<comments>http://www.kitchensoap.com/2010/05/26/some-webops-interview-questions/#comments</comments>
		<pubDate>Wed, 26 May 2010 14:34:31 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=476</guid>
		<description><![CDATA[It can be difficult to evaluate web ops candidates, for a couple of different reasons. One is that the breadth of knowledge needed for the field can be pretty wide, so spending too much time on any particular technical area can be a waste of time. Another reason is that it can be difficult to [...]]]></description>
			<content:encoded><![CDATA[<p>It can be difficult to evaluate <a title="Senior Operations Engineer" href="http://www.etsy.com/jobs/job_description.php?job_id=oFLiVfwn" target="_blank">web ops candidates</a>, for a couple of different reasons. One is that the breadth of knowledge needed for the field can be pretty wide, so spending too much time on any particular technical area can be a waste of time. Another reason is that it can be difficult to gauge how collaborative someone&#8217;s demeanor is in an interview. Collaboration is a <em>requirement</em> at Etsy. <img src='http://www.kitchensoap.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So in addition to the standard technical questions, I like to ask high-level questions where the answers can zoom in and out of a larger picture within the operations context.</p>
<ul>
<li>Diagram the current architecture you&#8217;re responsible for, and point  out where it&#8217;s not scalable or fault-tolerant.</li>
<li>What are some examples of how you might scale a <em><strong>read-heavy</strong></em> application? Why?</li>
<li>What are some examples of how you might scale a <em><strong>write-heavy</strong></em> application? Why?</li>
<li>Tell me how code gets deployed in your current gig, from developer&#8217;s brain to production.</li>
<li>Tell the story of the best-run outage you&#8217;ve been a part of, in as much detail as you can. What  made it &#8220;good&#8221;?</li>
<li>Tell the story of the worst-run outage you&#8217;ve been a part of, in as much detail as you can. What  made it &#8220;bad&#8221;?</li>
<li>What is the purpose of a post-mortem meeting?</li>
<li>How do you handle (and feel about) making changes (code/schema/network/etc.) in your current environment?</li>
</ul>
<p>These are purposefully open-ended questions meant to dig into what&#8217;s important to you as someone responsible for the performance and availability of a growing website.  This is just a snippet of what we normally ask, in addition to my (and <a title="Jesse Robbins" href="http://radar.oreilly.com/jesse/" target="_blank">Jesse</a>&#8217;s) favorite <a href="http://radar.oreilly.com/2009/05/velocity-conference-big-ideas.html" target="_blank">interview question</a>.</p>
<p>So: maybe you should take a look at the type of ops engineers we&#8217;re <a href="http://www.etsy.com/jobs/job_description.php?job_id=oFLiVfwn" target="_blank">looking for</a>, and apply? <img src='http://www.kitchensoap.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2010/05/26/some-webops-interview-questions/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>We&#8217;re hiring ops folks at Etsy!</title>
		<link>http://www.kitchensoap.com/2010/04/23/were-hiring-ops-folks-at-etsy/</link>
		<comments>http://www.kitchensoap.com/2010/04/23/were-hiring-ops-folks-at-etsy/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 00:13:51 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=424</guid>
		<description><![CDATA[We&#8217;re hiring web ops engineers at Etsy.  Here&#8217;s the gist of it&#8230;.
Responsibilities

 Building and maintaining Etsy&#8217;s infrastructure, from installed iron  to production
 Taking part in a 24&#215;7 on-call rotation
 Tightly cooperating and collaborating with development, product,  community and customer care

Requirements

 Experience with configuration management systems and concepts  (Chef, Puppet, Cfengine, etc.)
 Experience [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re <a href="http://bit.ly/bjDn8m" target="_blank">hiring web ops engineers</a> at Etsy.  Here&#8217;s the gist of it&#8230;.</p>
<blockquote><p><span style="text-decoration: underline;"><strong>Responsibilities</strong></span></p>
<ul>
<li> Building and maintaining Etsy&#8217;s infrastructure, from installed iron  to production</li>
<li> Taking part in a 24&#215;7 on-call rotation</li>
<li> Tightly cooperating and collaborating with development, product,  community and customer care</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Requirements</strong></span></p>
<ul>
<li> Experience with configuration management systems and concepts  (Chef, Puppet, Cfengine, etc.)</li>
<li> Experience in systems programming and general scripting tasks  (perl, bash, php, python, etc.)</li>
<li> Experience with high-volume web applications with social components</li>
<li> Experience with multi-datacenter architectures, global fault  tolerance, and CDNs</li>
<li> Experience with fault-tolerant replication strategies</li>
<li> Experience with mission-critical search and realtime database  architectures (Solr, Lucene, MySQL, Mongodb, Postgres, etc.)</li>
<li> Experience working with customizing network management systems and  monitoring tools (Nagios, Ganglia, Graphite, Cacti, etc.)</li>
<li> Strong understanding of web application architecture, including  TCP/IP and HTTP, and caching strategies at all layers</li>
<li> Support of software engineers and their development environment and  code repository (Subversion), including code deployment to production</li>
<li> Enterprise experience with internal core systems, such as but not  limited to DNS, LDAP, NTP</li>
<li> Experience with data center management, including strong knowledge  of power, space, and cooling issues</li>
<li> Experience with credit card gateways and PCI compliance issues</li>
<li> Excellent communication skills, both written and verbal</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Bonus</strong></span></p>
<ul>
<li> Experience in a &#8220;continuous deployment&#8221; environment</li>
<li>Experience in social networking or community-generated content</li>
<li>Experience with managing the infrastructure for a growing open API</li>
<li>Database query optimization</li>
<li>Hands-on network security tasks, including VPNs/firewalls  configuration</li>
<li>Network experience with BGP, EIGRP, OSPF, VLAN, PVLAN,Spanning-Tree,  MSTI</li>
<li>Knowledge of programming languages such as Python, PHP, JAVA, Ruby</li>
</ul>
</blockquote>
<p>This is a great place to work.  We work on <em>real</em> problems, and there&#8217;s plenty of juicy technology to sink your teeth into.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2010/04/23/were-hiring-ops-folks-at-etsy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pigz &#8211; parallel gzip OMG</title>
		<link>http://www.kitchensoap.com/2010/04/02/pigz-parallel-gzip-omg/</link>
		<comments>http://www.kitchensoap.com/2010/04/02/pigz-parallel-gzip-omg/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 21:53:02 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=414</guid>
		<description><![CDATA[Pigz is basically parallel gzip, to take advantage of multiple cores.  When you&#8217;ve got massive files, this can be a pretty big advantage, especially when you&#8217;ve got lots of cores sitting around.
Taking a 418m squid access log file, on a dual-quad Nehalem L5520  with HyperThreading turned on:
[jallspaw@server01 ~]$ ls -lh daemon.log.2; time gzip ./daemon.log.2 ; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zlib.net/pigz/" target="_blank">Pigz</a> is basically parallel gzip, to take advantage of multiple cores.  When you&#8217;ve got massive files, this can be a pretty big advantage, especially when you&#8217;ve got lots of cores sitting around.</p>
<p>Taking a 418m squid access log file, on a dual-quad Nehalem L5520  with HyperThreading turned on:</p>
<blockquote><p>[jallspaw@server01 ~]$ ls -lh daemon.log.2; time gzip ./daemon.log.2 ; ls -lh ./daemon.log.2.gz<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 418M Apr  2 19:18 daemon.log.2</p></blockquote>
<blockquote><p><strong><span style="color: #ff0000;">real    0m12.398s</span></strong><br />
user    0m12.107s<br />
sys     0m0.288s<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 45M Apr  2 19:18 ./daemon.log.2.gz</p></blockquote>
<p>&#8230;now gunziping it:</p>
<blockquote><p>[jallspaw@server01 ~]$ ls -lh daemon.log.2.gz; time gunzip ./daemon.log.2 ; ls -lh ./daemon.log.2<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 45M Apr  2 19:18 daemon.log.2.gz</p></blockquote>
<blockquote><p>real    0m3.245s<br />
user    0m2.693s<br />
sys     0m0.552s<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 418M Apr  2 19:18 ./daemon.log.2</p></blockquote>
<p>htop looks like this when this is happening:</p>
<div class="wp-caption alignnone" style="width: 500px">
	<a href="http://www.flickr.com/photos/allspaw/4484631099/in/photostream/"><img title="Gzip" src="http://farm3.static.flickr.com/2687/4484631099_bdfc81441d.jpg" alt="1 CPU core, 418mb file gzipped in 12.3 sec" width="500" height="400" /></a>
	<p class="wp-caption-text">1 CPU core, 418mb file gzipped in 12.3 sec</p>
</div>
<p>(Note the freeloading/lazy 15 cores sitting around watching its friend core #10 sweating)</p>
<p>&#8230;now pigz&#8217;ing it:</p>
<blockquote><p>[jallspaw@server01 ~]$ ls -lh daemon.log.2; time ./pigz-2.1.6/pigz ./daemon.log.2 ; ls -lh ./daemon.log.2.gz<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 418M Apr  2 19:18 daemon.log.2</p></blockquote>
<blockquote><p><strong><span style="color: #00ff00;">real    0m1.569s</span></strong><br />
user    0m23.092s<br />
sys     0m0.422s<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 45M Apr  2 19:18 ./daemon.log.2.gz</p></blockquote>
<p>&#8230;now unpigz&#8217;ing it:</p>
<blockquote><p>[jallspaw@server01 ~]$ ls -lh daemon.log.2.gz; time ./pigz-2.1.6/unpigz ./daemon.log.2.gz ; ls -lh ./daemon.log.2<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 45M Apr  2 19:18 daemon.log.2.gz</p></blockquote>
<blockquote><p>real    0m1.456s<br />
user    0m1.861s<br />
sys     0m0.867s<br />
-rw-r&#8212;&#8211; 1 jallspaw jallspaw 418M Apr  2 19:18 ./daemon.log.2</p></blockquote>
<p>and htop looks like this when it&#8217;s happening:</p>
<div class="wp-caption alignnone" style="width: 500px">
	<a href="http://www.flickr.com/photos/allspaw/4485281616/in/photostream/"><img title="Pigz" src="http://farm5.static.flickr.com/4053/4485281616_0ffe02982c.jpg" alt="16 CPU cores, 418mb pigzd in 1.5sec" width="500" height="400" /></a>
	<p class="wp-caption-text">16 CPU cores, 418mb pigz&#39;d in 1.5sec</p>
</div>
<p>which do you like better?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2010/04/02/pigz-parallel-gzip-omg/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Agile Executive Podcast</title>
		<link>http://www.kitchensoap.com/2010/02/12/agile-executive-podcast/</link>
		<comments>http://www.kitchensoap.com/2010/02/12/agile-executive-podcast/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 14:47:58 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=408</guid>
		<description><![CDATA[Yesterday I was on a podcast with Andrew Shafer and Michael Coté, and we talked about development and operations cooperation. I rambled a bit, like I tend to do.
Andrew brought up something that&#8217;s disturbing, and I&#8217;ve seen elsewhere, which is that after seeing our presentation last year at Velocity, some folks decided that we somehow [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was on a <a href="http://www.redmonk.com/cote/2010/02/11/agileexec008/" target="_blank">podcast</a> with <a href="http://stochasticresonance.wordpress.com/" target="_blank">Andrew Shafer</a> and <a href="http://www.redmonk.com/cote/" target="_blank">Michael Coté</a>, and we talked about development and operations cooperation. I rambled a bit, like I tend to do.</p>
<p>Andrew brought up something that&#8217;s disturbing, and I&#8217;ve seen <a href="http://news.ycombinator.com/item?id=1068098" target="_blank">elsewhere</a>, which is that after seeing our presentation last year at Velocity, some folks decided that we somehow gave an endorsement to the idea of pushing your code whenever you want, and let the &#8216;ops guys&#8217; deal with whatever comes as a result. Which isn&#8217;t at all what we suggested, and pretty much against the ideas of cooperation and communication between the dev and ops teams. I talk a bit about this in the podcast.</p>
<p>You have to <em>prove</em> that pushing whenever you want is an ok (safe, secure, etc.) thing to do. And the minute you can&#8217;t prove it, and you decide to continue that way&#8230;.IMHO: you&#8217;re doing it wrong. <img src='http://www.kitchensoap.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2010/02/12/agile-executive-podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Need some FUDforum consulting done</title>
		<link>http://www.kitchensoap.com/2010/02/09/need-some-fudforum-consulting-done/</link>
		<comments>http://www.kitchensoap.com/2010/02/09/need-some-fudforum-consulting-done/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 13:41:40 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=406</guid>
		<description><![CDATA[I&#8217;ve been helping out a friend for some years with running a decent-size discussion forum. It&#8217;s running on a little (512mb of RAM) dedicated server and it&#8217;s outgrown the box it&#8217;s on. It needs to move to a new machine, which is all ready to take it.
Problem is, it&#8217;s in a twisty-maze of dependencies. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been helping out a friend for some years with running a decent-size discussion forum. It&#8217;s running on a little (512mb of RAM) dedicated server and it&#8217;s outgrown the box it&#8217;s on. It needs to move to a new machine, which is all ready to take it.</p>
<p>Problem is, it&#8217;s in a twisty-maze of dependencies. It&#8217;s running FUDforum <span>2.6.4RC1, on MySQL 3.23, on RedHat 9 (!). It needs to somehow get backed up, moved, and upgraded to latest FUDforum (3.0.0) and MySQL 5, on the new machine.</span></p>
<p><span>It&#8217;s not 100% straightforward, needs someone who&#8217;s done this before, and someone who isn&#8217;t me, because of the new job and all. </span></p>
<p><span>If you know someone who can help out, please email me where my email address is jallspaw which is located on a server whose domain name is yahoo.com.</span></p>
<p><span>Thanks!</span></p>
<p><span><strong>UPDATE: I found a guy.  And he&#8217;s great with FUDForum. Excellent!  Thanks all those who emailed!</strong><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2010/02/09/need-some-fudforum-consulting-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployment is just a part of dev/ops cooperation, not the whole thing</title>
		<link>http://www.kitchensoap.com/2009/12/12/devops-cooperation-doesnt-just-happen-with-deployment/</link>
		<comments>http://www.kitchensoap.com/2009/12/12/devops-cooperation-doesnt-just-happen-with-deployment/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 03:14:41 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=372</guid>
		<description><![CDATA[Dev/Ops is what some people are calling the renewed cross-interest in development and operations collaboration. Hammond and I spoke about it, and there was even a conference in Europe dedicated to it. While I do think that there&#8217;s still a lot more that is to be discussed around this idea of cooperation and mixing of [...]]]></description>
			<content:encoded><![CDATA[<p>Dev/Ops is what some people are calling the renewed cross-interest in development and operations collaboration. Hammond and I spoke about it, and there was even a <a href="devopsdays.org" target="_blank">conference in Europe dedicated to it</a>. While I do think that there&#8217;s still a lot more that is to be discussed around this idea of cooperation and mixing of approaches, this is a Very Good Thing™.</p>
<p>In what <a href="http://stochasticresonance.wordpress.com/" target="_blank">Andrew</a> has called &#8216;<a href="http://www.slideshare.net/littleidea/agile-infra-agileroots-2009" target="_blank">boundary objects</a>&#8216;, deployment of new code has been a rallying point for the devops crowd, and I think that&#8217;s great. Deployment is definitely one of the places where the rubber meets the road. In some organizations, deployment of new code can be the single-most stressful and dividing parts of their work. People get fired or quit because of the emotional baggage that can come with an event that in the worst case, is nothing more than a planned outage disguised as progress and a followup finger-pointing session. Some groups have such dysfunction that they might as well just not even deploy the code.  Just skip that part, head into a conference room, and fight bareknuckle. Toxic would be the nice way of describing those environments.</p>
<p>So it&#8217;s no wonder that a lot of the emphasis in this growing &#8220;devops&#8221; community is on deployment. Whether it&#8217;s providing confidence in changes with rigorous testing, deploying small changes often, dark launching, feature flags, or building a one-button deploy system &#8211; any effort to reduce the risk of change should be considered mandatory, IMHO.</p>
<p>But at the same time, deployment is only just a  <em>part</em> of what really makes a great environment for development and operations to collaborate. Really. It&#8217;s not just about developers collaborating on deployment and releases. It&#8217;s about both teams understanding each other&#8217;s responsibilities <strong>after </strong>code is deployed to production, and collaborating along the areas of their expertise in a way that&#8217;s constructive.</p>
<p>Good Operations teams already write code, just not usually user-facing code. They spend a good deal of their time writing code to gather information from the infrastructure and act on it with short, medium, or long-term goals, usually aimed at performance and availability.</p>
<p>I&#8217;ll say that things like:</p>
<ul>
<li>metrics collection</li>
<li>monitoring and associated thresholds</li>
<li>load-feedback behavior</li>
<li>instrumentation</li>
<li>fault tolerance</li>
</ul>
<p>should also be considered boundary objects between development and ops.</p>
<p>This is some of what I mean by that:</p>
<p><strong>Metrics collection</strong></p>
<p>I&#8217;ve said this before, but <a href="http://www.kitchensoap.com/2009/05/10/context-and-operational-metrics/" target="_blank">context is absolutely everything</a>. Application-level or feature-level metrics is what gives the missing context to in-the-box resource usage like CPU, disk, memory, or network. At Flickr, the ops group maintains a number of different platforms for gathering metrics, like ganglia. To make it easy to add metrics, some of our backend applications will just write a temp file with key value pairs that we want to have squirted into ganglia.  Like:</p>
<blockquote><p>image_processed=30</p>
<p>image_processing_time=5</p></blockquote>
<p>and ganglia&#8217;s gmetric cron job will pick that up every minute with the key as the metric name, and the value as, well, the value.</p>
<p>This means that all developers have to do is drop that file into an expected location and it will do the right thing. No tickets for making a new metric, no need for writing yet another script to gather a single metric, no need to understand the intricacies of whatever metrics collection system you have.</p>
<p>That&#8217;s an example of technical collaboration between the two groups. The missing piece is the cultural bits, which is the developer communicating their motivation behind getting these in-app metrics gathered and put on a graph. This gives the metric context, and might give ops some ideas on how they could use the metric for monitoring, capacity, or other purposes.</p>
<p><strong>Monitoring</strong></p>
<p>Involving development in designing your monitoring system can help provide a great perspective on failure modes. Peer code reviews are common in software development, so why shouldn&#8217;t monitors be reviewed? It&#8217;s still code, and it&#8217;s going to provide your humans (and maybe machines) with the data needed to fail gracefully, heal itself, or inform developers on what their constraints are when building new things. Your monitoring system is just like your code in that it should always be evolving, alongside your growth.</p>
<p>Remember all the <a href="http://www.watchingwebsites.com/archives/google-analytics-alerts-the-start-of-a-complete-view" target="_blank">raves</a> about Google Analytics adding &#8220;intelligence&#8221; and alerts? Having some notion of thresholds isn&#8217;t just for people answering pages from nagios, it&#8217;s for everyone. How else can you gauge your expectations and guide future modifications to your code with respect to resource usage?</p>
<p><strong>Load feedback behavior</strong></p>
<p>Like a lot of smart web infrastructures, we&#8217;ve built an <a href="http://code.flickr.com/blog/2008/09/26/flickr-engineers-do-it-offline/" target="_blank">offline tasks system</a>, which will asyncronously run jobs on our data that don&#8217;t have to be real-time.  If you haven&#8217;t read <a href="http://code.flickr.com/blog/2008/09/26/flickr-engineers-do-it-offline/" target="_blank">Myles&#8217; post</a> on it, you really should. It&#8217;s a huge part of our strategy to avoid pretty common scalability pitfalls.</p>
<p>Anyway, these tasks, which can be relatively hard on the databases (which is one of the reasons why we do them asyncronously in the first place) have some built-in feedback mechanisms: they&#8217;ll check if there&#8217;s an unreasonably high number of concurrent MySQL connections, or if the database shard master-master pair doesn&#8217;t have both servers in production, or otherwise can detect that either what it&#8217;s trying to do on the database is too harsh at the moment. Whether it&#8217;s because of current live traffic being high, or a loss of redundancy, the offline task system will stop what it&#8217;s doing and re-queue it for later. This is a great (and safe) way of schmearing out heavy loads over a longer time period, reducing their risk.</p>
<p>Throw in some metrics collection about the size of those queues, and monitor alerts to do something for low or high-water mark thresholds, and then you&#8217;re cookin&#8217; with gas.</p>
<p><strong>Instrumentation</strong></p>
<p>Through the magic of <a href="http://php.net/manual/en/function.apache-note.php" target="_blank">apache notes</a>, developers can send extremely useful bits from within php code to the access and error logs. At Flickr, we&#8217;ve got some pretty simple notes set to help track things down when there are issues. For example. when I load the page for my photostream, the log line looks something like:</p>
<blockquote><p>www394 123.456.789.012 <span style="color: #ff0000;">5555</span> 173663 [14/Dec/2009:04:08:21 +0000] &#8220;GET /photos/allspaw HTTP/1.1&#8243; &#8211; 200 18233 &#8220;-&#8221; &#8220;Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3&#8243; &#8211; -</p></blockquote>
<p>where <span style="color: #ff0000;">5555</span> is my user id. Since php knows you&#8217;re logged in when you view a certain page, there&#8217;s no reason why we shouldn&#8217;t just log that in the request, so if there are any user-specific issues, it&#8217;s not a needle in a haystack.</p>
<p>Another example are API requests. We&#8217;ll log the api key making the call along with the authenticated user id, even in POST requests. Being able to trace a bullet through the entire request and response via logs is obviously handy. Putting user ids, API methods, and API key specific info into log lines is hugely helpful when troubleshooting issues, especially if you&#8217;re running one of the <a href="http://www.programmableweb.com/apis/directory/1?sort=mashups" target="_blank">most popular APIs on the web</a>.</p>
<p><strong>Fault Tolerance</strong></p>
<p>Ross blogged about how we do <a href="http://code.flickr.com/blog/2009/12/02/flipping-out/" target="_blank">feature flipping</a> last week. He goes over how important (and awesome) this is to our development process, but another one of the advantages of this approach is how it affects operations.</p>
<p>This is an example of development taking an active role in not only deployment, but the time and effort to <em>operationalize</em> features and pieces of code so that in cases of degradation or failure, these individual pieces can be forced to fail gracefully. Our talk at Velocity last year went over some of this, but it&#8217;s still one of the reasons why we can push code thousands of times a year and still have an extremely low MTTR whenever there&#8217;s an issue.</p>
<blockquote><p>New code causing degradation? There&#8217;s an app for that! (it&#8217;s called a feature flag)</p></blockquote>
<p>Anyway, my point is that deployment is only a small part of how development and operations should collaborate and communicate. In fact, dev and ops is only the most obvious starting point for getting along and working together on problems.</p>
<p>Product and community management also have important boundary objects with operations as well, but that&#8217;s for another blog post. <img src='http://www.kitchensoap.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2009/12/12/devops-cooperation-doesnt-just-happen-with-deployment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>From one door to another</title>
		<link>http://www.kitchensoap.com/2009/11/18/from-one-door-to-another/</link>
		<comments>http://www.kitchensoap.com/2009/11/18/from-one-door-to-another/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 05:21:32 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=336</guid>
		<description><![CDATA[Last week I gave 2 month&#8217;s notice &#8211; I&#8217;ll be leaving Flickr in January.
When Stew and Cat asked me to join Flickr in January of 2005, I felt like it was time to go and do something different, so I said yes.
Five years (and four billion photos) later, it&#8217;s again time to go and do [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I gave 2 month&#8217;s notice &#8211; I&#8217;ll be leaving Flickr in January.</p>
<p>When Stew and Cat asked me to join Flickr in January of 2005, I felt like it was time to go and do something different, so I said yes.</p>
<p>Five years (and four billion photos) later, it&#8217;s again time to go and do something different. It&#8217;s hard for me to describe what a blast this has been. Our <a href="http://ludicorp.com/about.php" target="_blank">goal</a> was to kick ass, and I think we did. Flickr has served as the  backdrop of some of the largest changes in my life, and the work I&#8217;ve done there is essentially tied to those events in my memory.</p>
<p>During my time here at Flickr, I:</p>
<ul>
<li>moved house</li>
<li>saw the company get <a href="http://blog.flickr.net/en/2005/03/20/yahoo-actually-does-acquire-flickr/" target="_blank">bought</a> by Yahoo!, and worked out that whole transition thing</li>
<li>got <a href="http://www.flickr.com/photos/eekaroo/14650744/in/set-358128/" target="_blank">married</a></li>
<li>had a <a href="http://www.flickr.com/photos/allspaw/sets/72157594173557758/" target="_blank">daughter</a></li>
<li>co-invented a pretty <a href="http://faceball.org/press/" target="_blank">well-received</a> <a href="http://faceball.org/" target="_blank">office sport</a></li>
<li>wrote a <a href="http://www.amazon.com/Art-Capacity-Planning-Scaling-Resources/dp/0596518579" target="_blank">book</a></li>
<li>had a <a href="http://www.flickr.com/photos/allspaw/sets/72157607504797325/" target="_blank">son</a></li>
</ul>
<p>In addition to building, scaling, evolving, and generally being as loud and fast as we could possibly be with the original <a href="http://ludicorp.com/" target="_blank">Ludicorp</a> team, I had the absolute privilege to hire and work in the trenches with some of the greatest people on the web. I also had the chance to work with some of the smartest people at Yahoo, who I&#8217;ll continue to have relationships with even after I leave. Yahoo has treated me well, and I&#8217;ve learned more here than I have at any other company.</p>
<p>The reason I stayed here for five years wasn&#8217;t for the accolades (or the vesting). It was because I worked with people who <strong><em>care</em></strong> about building something that people <em><strong>care</strong></em> about.</p>
<p>This also happens to be the same reason why I chose my next step: <a href="http://www.etsy.com" target="_blank">Etsy</a>. They care, and it shows.</p>
<p style="text-align: left;">I still have a little more time here at Flickr to rock a bit more, but I&#8217;m excited to work with my friend <a href="http://www.chaddickerson.com/about.html" target="_blank">Chad</a> again on <a href="http://radar.oreilly.com/2009/01/work-on-stuff-that-matters-fir.html" target="_blank">something that matters</a>. I&#8217;ll be running the Ops group there, where they&#8217;ve already got superstars.</p>
<p style="text-align: left;">Chad wrote some more about it <a href="http://www.etsy.com/storque/etsy-news/john-allspaw-joins-the-etsy-team-6183/" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2009/11/18/from-one-door-to-another/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>When you deploy: your internal monologue</title>
		<link>http://www.kitchensoap.com/2009/10/07/when-you-deploy-your-internal-monologue/</link>
		<comments>http://www.kitchensoap.com/2009/10/07/when-you-deploy-your-internal-monologue/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 22:22:33 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=318</guid>
		<description><![CDATA[The minimum cycle of questions you should be asking yourself. As brought up by @debuggist and @benjaminblack.

]]></description>
			<content:encoded><![CDATA[<p>The minimum cycle of questions you should be asking yourself. As brought up by <a href="http://twitter.com/debuggist" target="_blank">@debuggist</a> and <a href="http://twitter.com/benjaminblack" target="_blank">@benjaminblack</a>.</p>
<p><a href="http://www.kitchensoap.com/wp-content/uploads/2009/10/InternalMonologue.png"><img class="alignnone size-full wp-image-319" style="border: 1px solid black;" title="What you might want to ask yourself before you deploy changes to production?" src="http://www.kitchensoap.com/wp-content/uploads/2009/10/InternalMonologue.png" alt="What you might want to ask yourself before you deploy changes to production?" width="724" height="547" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2009/10/07/when-you-deploy-your-internal-monologue/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebOps: Good prep for becoming a new parent?</title>
		<link>http://www.kitchensoap.com/2009/09/29/webops-good-prep-for-becoming-a-new-parent/</link>
		<comments>http://www.kitchensoap.com/2009/09/29/webops-good-prep-for-becoming-a-new-parent/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 04:23:36 +0000</pubDate>
		<dc:creator>allspaw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kitchensoap.com/?p=281</guid>
		<description><![CDATA[I think I&#8217;ve said before somewhere that working in the field of web operations prepared me somewhat for being a parent. I thought the other day that I should write down some of this reasoning, because it&#8217;s pretty often that I&#8217;m reminded of similarities:
High availability
Having redundant infrastructure is WebOps 101. For my kids&#8217; most prized [...]]]></description>
			<content:encoded><![CDATA[<p>I think I&#8217;ve said before somewhere that working in the field of web operations prepared me somewhat for being a parent. I thought the other day that I should write down some of this reasoning, because it&#8217;s pretty often that I&#8217;m reminded of similarities:</p>
<p><em><strong>High availability</strong></em></p>
<p>Having redundant infrastructure is WebOps 101. For my kids&#8217; most prized possessions, their sleeping  <a title="Dollies" href="http://www.flickr.com/photos/eekaroo/3361150569/" target="_blank">&#8216;loveys&#8217; </a>there is no reason to have a <a title="Single Point of Failure" href="http://en.wikipedia.org/wiki/Single_Point_of_Failure" target="_blank">SPOF</a>, under any circumstances. We have at least 4 backups for each on any trip that we go on, as well as a couple of trusted stuffed animals who might meet unfortunate fates.</p>
<p><em><strong>Capacity planning</strong></em></p>
<p>This applies to both disposable diapers (a.k.a.<em> consumable capacity</em>) and episodes of the few TV shows we allow them to watch, on the Tivo. My daughter, at 3 and a half, knows every detail from every of the 49 episodes of <a title="The Backyardigans" href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;url=http%3A%2F%2Fwww.nickjr.com%2Fshows%2Fbackyardigans%2Findex.jhtml&amp;ei=LNjCSoypKZOCsgOQqPTuAg&amp;usg=AFQjCNFUuMBPdoxeunE6pvhpJtEtG1WSSw&amp;sig2=x2bYLViPeXoS70pEK6shww" target="_blank">The Backyardigans.</a> Having some of them on ipods and iphones can make a 6 hour drive to L.A. feel like 4, not 12.</p>
<p><em><strong>Documentation</strong></em></p>
<p>Since I&#8217;m already used to writing down observations and techniques learned &#8216;in the field&#8217;, then I was totally prepared:</p>
<div class="wp-caption alignnone" style="width: 500px">
	<a href="http://www.flickr.com/photos/allspaw/2592579909/"><img title="Allspaw Baby Soothing Method, v1" src="http://farm4.static.flickr.com/3205/2592579909_a5d8b25bb9.jpg" alt="Allspaw Baby Soothing Method, v1" width="500" height="327" /></a>
	<p class="wp-caption-text">Allspaw Baby Soothing Method, v1</p>
</div>
<p>and in case I ever forgot what my most successful swaddling method was:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=de8c6a5027&amp;photo_id=2554081561&amp;flickr_show_info_box=true" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/video/stewart.swf?v=71377" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=de8c6a5027&amp;photo_id=2554081561&amp;flickr_show_info_box=true"></embed></object><br />
<em><strong></strong></em></p>
<p><em><strong>Architecture and design</strong></em></p>
<p>It&#8217;s unfortunate that I was so sleep-deprived that I never got a photo of the RadioShack remote-control truck that I turned into a cam-driven <a title="Moses basket" href="http://www.flickr.com/photos/nathanleland/2596474846/" target="_blank">Moses basket</a> automatic rocker mechanism. But you <a href="http://boingboing.net/2009/08/26/scripting-a-pc-cd-tr.html">understand what I&#8217;m talking about</a>.</p>
<p>There is one other thing that I learned from working at Flickr which turned out to be useful new parent advice: expect the unexpected, and never rely on past behaviors as an indication of what can happen in the future. They&#8217;re kids, not applications. <img src='http://www.kitchensoap.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kitchensoap.com/2009/09/29/webops-good-prep-for-becoming-a-new-parent/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.805 seconds -->
