<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AlertSleep</title>
    <description>The latest articles on DEV Community by AlertSleep (@alertsleep).</description>
    <link>https://dev.to/alertsleep</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3874455%2F06d4940f-5627-4c2f-bd12-38a107141c3c.png</url>
      <title>DEV Community: AlertSleep</title>
      <link>https://dev.to/alertsleep</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alertsleep"/>
    <language>en</language>
    <item>
      <title>What 99.9% Uptime Actually Means: 8.7 Hours of Downtime Per Year</title>
      <dc:creator>AlertSleep</dc:creator>
      <pubDate>Sun, 12 Apr 2026 06:07:48 +0000</pubDate>
      <link>https://dev.to/alertsleep/what-999-uptime-actually-means-87-hours-of-downtime-per-year-33k</link>
      <guid>https://dev.to/alertsleep/what-999-uptime-actually-means-87-hours-of-downtime-per-year-33k</guid>
      <description>&lt;p&gt;You've seen it everywhere. On hosting pages, SaaS pricing tables, cloud provider dashboards:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"99.9% uptime guaranteed"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sounds impressive. Almost perfect. Like, what's 0.1%?&lt;/p&gt;

&lt;p&gt;A lot, actually. Let me show you the math — and more importantly, what it means for your users, your revenue, and your sleep schedule.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Math Nobody Does
&lt;/h2&gt;

&lt;p&gt;99.9% uptime means your service is &lt;strong&gt;unavailable for 0.1% of the time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here's what 0.1% looks like across different time windows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Time Period&lt;/th&gt;
&lt;th&gt;Allowed Downtime&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Per day&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1 minute 26 seconds&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per week&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10 minutes 4 seconds&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per month&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;43 minutes 49 seconds&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per year&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8 hours 45 minutes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last one is the one that should make you pause. &lt;strong&gt;8 hours and 45 minutes of downtime per year&lt;/strong&gt; — and your SLA is technically fine the whole time.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Full SLA Cheat Sheet
&lt;/h2&gt;

&lt;p&gt;Most people only know the "three nines" (99.9%). Here's the complete picture:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SLA&lt;/th&gt;
&lt;th&gt;Downtime/Year&lt;/th&gt;
&lt;th&gt;Downtime/Month&lt;/th&gt;
&lt;th&gt;Downtime/Day&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;99%&lt;/td&gt;
&lt;td&gt;3 days 15 hrs&lt;/td&gt;
&lt;td&gt;7 hrs 18 min&lt;/td&gt;
&lt;td&gt;14 min 24 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.5%&lt;/td&gt;
&lt;td&gt;1 day 19 hrs&lt;/td&gt;
&lt;td&gt;3 hrs 39 min&lt;/td&gt;
&lt;td&gt;7 min 12 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8 hrs 45 min&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;43 min 49 sec&lt;/td&gt;
&lt;td&gt;1 min 26 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.95%&lt;/td&gt;
&lt;td&gt;4 hrs 22 min&lt;/td&gt;
&lt;td&gt;21 min 54 sec&lt;/td&gt;
&lt;td&gt;43 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.99%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;52 min 35 sec&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4 min 22 sec&lt;/td&gt;
&lt;td&gt;8.6 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;99.999%&lt;/td&gt;
&lt;td&gt;5 min 15 sec&lt;/td&gt;
&lt;td&gt;26 sec&lt;/td&gt;
&lt;td&gt;0.86 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The jump from 99.9% to 99.99% — one extra "9" — reduces your annual downtime budget from &lt;strong&gt;8.7 hours to 52 minutes&lt;/strong&gt;. That's a 10x difference.&lt;/p&gt;




&lt;h2&gt;
  
  
  Calculate Your Own Uptime
&lt;/h2&gt;

&lt;p&gt;The formula is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Downtime = Total Time × (1 - Uptime %)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, a year has &lt;code&gt;365.25 × 24 = 8,766 hours&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;At 99.9%:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8,766 hours × 0.001 = 8.766 hours ≈ 8 hrs 45 min
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or in JavaScript, if you want to build it yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateDowntime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;uptimePercent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;periodHours&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;downtimeRatio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;uptimePercent&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;downtimeHours&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;periodHours&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;downtimeRatio&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;downtimeMinutes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;downtimeHours&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;downtimeSeconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;downtimeMinutes&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;hours&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;downtimeHours&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;minutes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;downtimeMinutes&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;seconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;downtimeSeconds&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// 99.9% uptime over a year (8766 hours)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;calculateDowntime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;99.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8766&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// → { hours: 8, minutes: 45, seconds: 46 }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you'd rather skip the math, tools like &lt;a href="https://alertsleep.com/tools/uptime-calculator" rel="noopener noreferrer"&gt;AlertSleep's uptime calculator&lt;/a&gt; let you punch in any percentage and get the breakdown instantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  "But Our SLA Excludes Planned Maintenance"
&lt;/h2&gt;

&lt;p&gt;This is the clause that quietly turns "99.9%" into "something much lower."&lt;/p&gt;

&lt;p&gt;Many SLAs include language like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Uptime calculations exclude scheduled maintenance windows, force majeure events, and incidents caused by the customer."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In practice, this means a vendor can take their service down for a 4-hour maintenance window every month and still advertise "99.9% uptime" — because those hours simply don't count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Always check:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the SLA count maintenance windows as downtime?&lt;/li&gt;
&lt;li&gt;How much advance notice is required for scheduled maintenance?&lt;/li&gt;
&lt;li&gt;What's the compensation if they breach the SLA? (Hint: it's usually service credits, not money)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Does Downtime Actually Cost?
&lt;/h2&gt;

&lt;p&gt;Here's where it gets real. Abstract percentages become concrete when you map them to your business.&lt;/p&gt;

&lt;p&gt;A rough formula used by most reliability engineers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cost of Downtime = Lost Revenue/hr + Productivity Cost/hr + Reputation Damage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an e-commerce site doing $100k/day in revenue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Revenue per hour = $100,000 / 24 ≈ $4,166/hr

At 99.9% uptime → 8.75 hours of downtime/year
→ Lost revenue: 8.75 × $4,166 ≈ $36,000/year
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's before counting the customer support tickets, the social media complaints, and the users who never come back.&lt;/p&gt;




&lt;h2&gt;
  
  
  The "Five Nines" Problem
&lt;/h2&gt;

&lt;p&gt;You'll sometimes see "five nines" (99.999%) thrown around by cloud providers. It sounds incredible — only &lt;strong&gt;5 minutes of downtime per year&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But here's the uncomfortable truth: &lt;strong&gt;achieving five nines is mostly about architecture, not monitoring.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Five nines requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-region active-active deployments&lt;/li&gt;
&lt;li&gt;Zero-downtime deployments (blue/green or canary)&lt;/li&gt;
&lt;li&gt;Automatic failover with sub-second detection&lt;/li&gt;
&lt;li&gt;Chaos engineering to test failure scenarios&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most startups and even mid-size companies realistically operate at &lt;strong&gt;99.5% to 99.95%&lt;/strong&gt;. And that's fine — if you know it and plan for it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Difference Between Measured and Actual Uptime
&lt;/h2&gt;

&lt;p&gt;Here's a subtle but important distinction.&lt;/p&gt;

&lt;p&gt;Your hosting provider might achieve 99.99% uptime at the infrastructure level. But &lt;strong&gt;your application&lt;/strong&gt; might only hit 99.5% because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memory leaks that require weekly restarts&lt;/li&gt;
&lt;li&gt;Slow database queries that cause timeouts (HTTP 504 — is that "downtime"?)&lt;/li&gt;
&lt;li&gt;Third-party API dependencies that go down&lt;/li&gt;
&lt;li&gt;SSL certificate expiry (this kills more sites than you'd think)&lt;/li&gt;
&lt;li&gt;Your own deployment going wrong at 2am&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your uptime is only as good as the weakest link in the chain. And the only way to know your real uptime — not your provider's uptime — is to monitor from the outside.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to Actually Monitor
&lt;/h2&gt;

&lt;p&gt;Most developers start monitoring too late and measure too little. Here's a baseline:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimum viable monitoring:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] HTTP status check every 1-5 minutes&lt;/li&gt;
&lt;li&gt;[ ] Response time tracking (a 503 that takes 30s is worse than a fast 503)&lt;/li&gt;
&lt;li&gt;[ ] SSL certificate expiry alert (set to 30 days before)&lt;/li&gt;
&lt;li&gt;[ ] Domain expiration alert (set to 60 days before)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Level up:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Multi-region checks (your site might be down only in the US East)&lt;/li&gt;
&lt;li&gt;[ ] API endpoint monitoring (not just the homepage)&lt;/li&gt;
&lt;li&gt;[ ] Port monitoring for non-HTTP services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Alert channels that actually wake you up:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SMS/phone call for critical alerts (email is too easy to miss at 3am)&lt;/li&gt;
&lt;li&gt;Slack/Teams for the team&lt;/li&gt;
&lt;li&gt;Status page for your users so they know you know&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Real Takeaway
&lt;/h2&gt;

&lt;p&gt;99.9% uptime is &lt;strong&gt;not&lt;/strong&gt; "always online." It's a budget — a budget of how much downtime your users are willing to accept before they find an alternative.&lt;/p&gt;

&lt;p&gt;The question isn't "what SLA does my provider offer?" The question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What uptime does your business actually need — and how will you know when you're not hitting it?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first step is measuring. You can't improve what you can't see.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you're building something people depend on, set up external uptime monitoring today — not after the first outage. Tools like &lt;a href="https://alertsleep.com" rel="noopener noreferrer"&gt;AlertSleep&lt;/a&gt; start free and take about 2 minutes to configure.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What SLA does your app target? And are you actually measuring it? Drop it in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>sre</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
