Files
nexus/sreweekly/articles/75/04-non-intuitive-downtime-and-possibly-not-lost-sales.html
2026-09-12 17:23:01 +08:00

220 lines
8.3 KiB
HTML

<!DOCTYPE HTML>
<html lang="en-us">
<head>
<meta charset="utf-8">
<title>Non-intuitive downtime and possibly not lost sales - UnixDaemon: In search of (a) life</title>
<meta name="author" content="map[name:Dean Wilson]">
<meta name="description" content="">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href='/index.xml' rel="alternate" title="UnixDaemon: In search of (a) life" type="application/atom+xml">
<link rel="canonical" href="https://www.unixdaemon.net/online/non-intuitive-downtime-and-possibly-not-lost-sales/">
<link href="https://www.unixdaemon.net/favicon.png" rel="shortcut icon">
<link href="https://www.unixdaemon.net/css/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="https://www.unixdaemon.net/css/font-awesome.min.css" media="screen" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Nunito:400,300,700' rel='stylesheet' type='text/css'>
<meta name="google-site-verification" content="xyisveClGOK3aUjA5QIPkeGjVV_TfExAxXhIh5yt5nU" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-46204499-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="container">
<div class="left-col">
<div class="intrude-less">
<header id="header" class="inner"><div class="profilepic">
</div>
<nav id="main-nav"><ul class="main">
<li><a href="https://www.unixdaemon.net/">Home</a></li>
<li><a href="https://www.unixdaemon.net/about/">About</a></li>
</ul>
</nav>
<nav id="sub-nav">
<div class="social">
<a class="twitter" href='https://twitter.com/unixdaemon' title="Twitter">Twitter</a>
<a class="github" href='https://github.com/deanwilson' title="GitHub">GitHub</a>
<a class="linkedin" href='https://www.linkedin.com/in/deanswilson' title="LinkedIn">LinkedIn</a>
<a class="rss" href='/index.xml' title="RSS">RSS</a>
</div>
<nav id="main-nav"><ul class="main">
<li><a href="https://www.unixdaemon.net/ansible/">/ansible/</a>
<a href="https://www.unixdaemon.net/books/">/books/</a></li>
<li><a href="https://www.unixdaemon.net/career/">/career/</a>
<a href="https://www.unixdaemon.net/cloud/">/cloud/</a></li>
<li><a href="https://www.unixdaemon.net/commandline/">/commandline/</a>
<a href="https://www.unixdaemon.net/events/">/events/</a></li>
<li><a href="https://www.unixdaemon.net/firefox/">/firefox/</a>
<a href="https://www.unixdaemon.net/geekstuff/">/geekstuff/</a></li>
<li><a href="https://www.unixdaemon.net/gui/">/gui/</a>
<a href="https://www.unixdaemon.net/linux/">/linux/</a></li>
<li><a href="https://www.unixdaemon.net/meta/">/meta/</a>
<a href="https://www.unixdaemon.net/misctech/">/misctech/</a></li>
<li><a href="https://www.unixdaemon.net/movies/">/movies/</a>
<a href="https://www.unixdaemon.net/network/">/network/</a></li>
<li><a href="https://www.unixdaemon.net/nottech/">/nottech/</a>
<a href="https://www.unixdaemon.net/online/">/online/</a></li>
<li><a href="https://www.unixdaemon.net/perl/">/perl/</a>
<a href="https://www.unixdaemon.net/programming/">/programming/</a></li>
<li><a href="https://www.unixdaemon.net/puppet/">/puppet/</a>
<a href="https://www.unixdaemon.net/security/">/security/</a></li>
<li><a href="https://www.unixdaemon.net/sites/">/sites/</a>
<a href="https://www.unixdaemon.net/sysadmin/">/sysadmin/</a></li>
<li><a href="https://www.unixdaemon.net/tools/">/tools/</a>
<a href="https://www.unixdaemon.net/unixdaemon/">/unixdaemon/</a></li>
</ul>
</nav>
</nav>
</header>
</div>
</div>
<div class="mid-col">
<div class="mid-col-container">
<div id="content" class="inner">
<div itemscope itemtype="http://schema.org/Blog">
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">
<h1 class="title" itemprop="name">Non-intuitive downtime and possibly not lost sales</h1>
<div class="date"><time datetime='Mon, May 29, 2017' data-updated="true" itemprop="datePublished">Mon, May 29, 2017</time>
</div>
<div class="tags">
<a href="https://www.unixdaemon.net/categories/online"> online </a>
</div>
<div class="entry-content" itemprop="articleBody"><p>One of the things you&rsquo;ll often read in web operation books is the idea
that while you&rsquo;re experiencing downtime your customers are fleeing in
droves and taking their orders to your competitors out of frustration.
However this isn&rsquo;t always the truism that people take it for.</p>
<p>If your outages are rare, and your site is normally performant and easy
to use (or has a monopoly), you&rsquo;ll find this behaviour a lot less common
than you&rsquo;ve been told. Most people have a small set of sites they are
comfortable using and have gradually built up trust and an order history
with. This is especially true if you operate in certain niches, such as
being <em>the</em> fashion site, or have a very strongly defined brand.</p>
<p>After a period of a few months of short but recurring outages we went
back over our traffic logs and ran some queries to see how badly we&rsquo;d
been impacted and help us create our business case for more resources.
The results were a little surprising for the more &lsquo;conventional wisdom&rsquo;
trusting members of the team.</p>
<p><img src="/images/blog/2017/05/what-we-expected.png" alt="Expected behaviour" title="Our expected traffic behaviour"></p>
<p>Instead of seeing a reverse hockey stick graph of our customers
deserting us in our hours of need before stabilising at a lower than before
constant we saw that while orders did drop off
during production outages, as you&rsquo;d expect from a dead system, as
long as recovery times stayed in the range of minutes, and very rarely a
small number of hours, we always saw the daily order volume and sales
totals bounce back to within a few percentages points of a normal day.
In some cases we even saw brief periods of higher than usual levels as
everyone finished their pending transactions as soon as we returned.</p>
<p><img src="/images/blog/2017/05/what-we-saw.png" alt="Actual behaviour" title="What we actually saw"></p>
<p>After witnessing this we had a few discussions and made some minor
changes while waiting for the larger issues to be resolved. For example
one aspect to consider is that if you can architect your failures to
help users preserve even some of their effort you heavily increase the
odds of them finishing. Keeping services like baskets and wishlists
active make it increasingly likely they&rsquo;ll return to complete their
transaction with you. Once they&rsquo;ve gone to the effort of finding their newest
&lsquo;must have&rsquo; you have a small amount of grace points to spend while you&rsquo;re
getting everything back to normal before they&rsquo;ll discard their own time
investment and move on.</p>
<p>It seems that as an industry we&rsquo;ve managed to train our users to accept
small amounts of failure, especially if your customers favour mobile
devices on cellular networks. While i don&rsquo;t want to try and convince you
that downtime has no impact I do think it&rsquo;s worth going over the numbers
after your incidents to see what the slightly longer term impact was and
how far away from a normal day your recovery curve gets you.</p>
<p>I should also note that this doesn&rsquo;t cover security issues. Those
have very different knock on effects and are typically orders of
magnitude worse.</p>
</div>
</article>
<div class="share">
<div class="addthis_toolbox addthis_default_style ">
</div>
</div>
</div>
</div>
</div>
<footer id="footer" class="inner">Copyright &copy; 2025
Dean Wilson
Design credit: <a href="http://shashankmehta.in/archive/2012/greyshade.html">Shashank Mehta</a>
</footer>
</div>
</div>
</body>
</html>