SRE weekly 所有文章
This commit is contained in:
145
sreweekly/articles/63/01-ferd-ca-queues-don-t-fix-overload.html
Normal file
145
sreweekly/articles/63/01-ferd-ca-queues-don-t-fix-overload.html
Normal file
@@ -0,0 +1,145 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://ferd.ca/static/img/favicon.ico" type="image/x-icon"/>
|
||||
<title>Queues Don't Fix Overload</title>
|
||||
<link rel="stylesheet" href="https://ferd.ca/static/css/style.css?20250117" />
|
||||
<link href="https://ferd.ca/feed.rss" type="application/rss+xml" rel="alternate" title="ferd.ca newsfeed" />
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="row">
|
||||
<h1 class="nine columns"><a href="https://ferd.ca/" title="home"><span class="hilight">“</span>My bad opinions<span class="hilight">”</span></a></h1>
|
||||
<menu class="three columns">
|
||||
<li><a class="" href="https://ferd.ca/" title="deliberate writings and talk transcripts">blog</a></li>
|
||||
<li><a class="" href="https://ferd.ca/notes/" title="random writings, notes, quotes and paper summaries">notes</a></li>
|
||||
<li><a class="" href="https://ferd.ca/about.html" title="whose the hell is writing stuff">about</a></li>
|
||||
</menu>
|
||||
</header>
|
||||
|
||||
<article class="row">
|
||||
<div>
|
||||
|
||||
<span class="date">2014/11/19</span>
|
||||
|
||||
<h2>Queues Don't Fix Overload</h2>
|
||||
<div id="content">
|
||||
|
||||
|
||||
<p>OK, queues.</p>
|
||||
|
||||
<p>People misuse queues all the time. The most egregious case being to fix issues with slow apps, and consequently, with overload. But to say why, I'll need to take bits of talks and texts I have around the place, and content that I have written in more details about in <a href="http://www.erlang-in-anger.com">Erlang in Anger</a>.</p>
|
||||
|
||||
<p>To oversimplify things, most of the projects I end up working on can be visualized as a very large bathroom sink. User and data input are flowing from the faucet, down 'till the output of the system:</p>
|
||||
<img src="https://ferd.ca/static/img/sink1.png" width="534" height="309" />
|
||||
<p>So under normal operations, your system can handle all the data that comes in, and carry it out fine:</p>
|
||||
<img src="https://ferd.ca/static/img/sink2.png" width="479" height="307" />
|
||||
<p>Water goes in, water goes out, everyone's happy. However, from time to time, you'll see temporary overload on your system. If you do messaging, this is going to be around sporting events or events like New Year's Eve. If you're a news site, it's gonna be when a big thing happens (Elections in the US, Royal baby in the UK, someone says they dislike French as a language in Quebec).</p>
|
||||
|
||||
<p>During that time, you may experience that temporary overload:</p>
|
||||
<img src="https://ferd.ca/static/img/sink3.png" width="452" height="315" />
|
||||
<p>The data that comes out of the system is still limited, and input comes in faster and faster. Web people will use stuff like caches at that point to make it so the input and output required gets to be reduced. Other systems will use a huge buffer (a queue, or in this case, a sink) to hold the temporary data.</p>
|
||||
|
||||
<p>The problem comes when you inevitably encounter prolonged overload. It's when you look at your system load and go "oh crap", and it's not coming down ever. Turns out Obama doesn't want to turn in his birth certificate, the royal baby doesn't look like the father, and someone says Quebec should be better off with Parisian French, and the rumor mill is going for days and weeks at a time:</p>
|
||||
<img src="https://ferd.ca/static/img/sink4.png" width="449" height="303" />
|
||||
<p>All of a sudden, the buffers, queues, whatever, can't deal with it anymore. You're in a critical state where you can see smoke rising from your servers, or if in the cloud, things are as bad as usual, but more!</p>
|
||||
|
||||
<p>The system inevitably crashes:</p>
|
||||
<img src="https://ferd.ca/static/img/sink5.png" width="453" height="314" />
|
||||
<p>Woops, everyone is dead, you're in the office at 3am (who knew so many people in the US, disgusted with their "Kenyan" president, now want news on the royal baby, while Quebec people look up 'royale with cheese baby' for some reason) trying to keep things up.</p>
|
||||
|
||||
<p>You look at your stack traces, at your queue, at your DB slow queries, at the APIs you call. You spend weeks at a time optimizing every component, making sure it's always going to be good and solid. Things keeps crashing, but you hit the point where every time, it takes 2-3 days more.</p>
|
||||
|
||||
<p>At the end of it, you see a crapload of problems still happening, but they're a week apart between each failure, which slows down your optimizing in immense ways because it's incredibly hard to measure things when they take weeks to go bad.</p>
|
||||
|
||||
<p>You go "okay I'm all out of ideas, let's buy a bigger server." The system in the end looks like this, and it's still failing:</p>
|
||||
<img src="https://ferd.ca/static/img/sink6.png" width="476" height="315" />
|
||||
<p>Except now it's an unmaintainable piece of garbage full of dirty hacks to make it work that cost 5 times what it used to, and you've been paid for months optimizing it for no god damn reason because it still dies when overloaded.</p>
|
||||
|
||||
<p>The problem? That red arrow there. You're hitting some hard limit that even through all of your profiling, you didn't consider properly. This can be a database, an API to an external service, disk speed, bandwidth or general I/O limits, paging speed, CPU limits, whatever.</p>
|
||||
|
||||
<p>You've spent months optimizing your super service only to find out at some point in time, you went past its optimal speed without larger changes, and the day your system got to have an operational speed greater than this hard limit, you've doomed yourself to an everlasting series of system failures.</p>
|
||||
|
||||
<p>The disheartening part about it is that you discover that once your system is popular, has people using it and its APIs, and changing it to be better is very expensive and hard. Especially since you'll probably have to revisit assumptions you've made in its core design. Woops.</p>
|
||||
|
||||
<p>So what do you need? You'll need to pick <em>what has to give</em> whenever stuff goes bad. You'll have to pick between blocking on input (back-pressure), or dropping data on the floor (load-shedding). And that happens all the time in the real world, we just don't want to do it as developers, as if it were an admission of failure.</p>
|
||||
|
||||
<p>Bouncers in front of a club, water spillways to go around dams, the pressure mechanism that keeps you from putting more gas in a full tank, and so on. They're all there to impose a system-wide flow control to keep operations safe.</p>
|
||||
|
||||
<p>In [non-critical] software? Who cares! We never shed load because that makes stakeholders angry, and we never think about back-pressure. Usually the back-pressure in the system is implicit: 'tis slow.</p>
|
||||
|
||||
<p>A function/method call to something ends up taking longer? It's slow. Not enough people think of it as back-pressure making its way through your system. In fact, slow distributed systems are often the canary in the overload coal mine. The problem is that everyone just stands around and goes "durr why is everything so slow??" and devs go "I don't know! It just is! It's hard, okay!"</p>
|
||||
|
||||
<p>That's usually because somewhere in the system (possibly the network, or something that is nearly impossible to observe without proper tooling, such as <a href="https://www.snookles.com/slf-blog/slf-blog/2012/01/05/tcp-incast-what-is-it/">TCP incast</a>), something is clogged and everything else is pushing it back to the edge of your system, to the user.</p>
|
||||
|
||||
<p>And that back-pressure making the system slower? It slows down the rate at which users can input data. It's what is likely keeping your whole stack alive. And you know when people start using queues? Right there. When operations take too long and block stuff up, people introduce a freaking queue in the system.</p>
|
||||
|
||||
<p>And the effects are instant. The application that was sluggish is now fast again. Of course you need to redesign the whole interface and interactions and reporting mechanisms to become asynchronous, but man is it fast!</p>
|
||||
|
||||
<p>Except at some point the queue spills over, and you lose all of the data. There's a serious meeting that then takes place where everyone discusses how this could possibly have happened. Dev #3 suggests more workers are added, Dev #6 recommends the queue gets persistency so that when it crashes, no requests are lost.</p>
|
||||
|
||||
<p>"Cool," says everyone. Off to work. Except at some point, the system dies again. And the queue comes back up, but it's already full and uuugh. Dev #5 goes in and thinks "oh yeah, we could add more queues" (I swear I've seen this unfold back when I didn't know better). People say "oh yeah, that increases capacity" and off they go.</p>
|
||||
|
||||
<p>And then it dies again. And nobody ever thought of that sneaky red arrow there:</p>
|
||||
<img src="https://ferd.ca/static/img/sink6.png" width="476" height="315" />
|
||||
<p>Maybe they do it without knowing, and decide to go with MongoDB because it's "faster than Postgres" (heh). Who knows.</p>
|
||||
|
||||
<p>The real problem is that everyone involved used queues as an optimization mechanism. With them, new problems are now part of the system, which is a nightmare to maintain. Usually, these problems will come in the form of ruining the <a href="https://en.wikipedia.org/wiki/End-to-end_principle">end-to-end principle</a> by using a persistent queue as a fire-and-forget mechanisms or assuming tasks can't be replayed or lost. You have more places that can time out, require new ways to detect failures and communicate them back to users, and so on.</p>
|
||||
|
||||
<p>Those can be worked around, don't get me wrong. The issue is that they're being introduced as part of a solution that's not appropriate for the problem it's built to solve. All of this was just premature optimization. Even when everyone involved took measures, reacted to real failures in real pain points, etc. The issue is that nobody considered what the true, central business end of things is, and what its limits are. People considered these limits locally in each sub-component, more or less, and not always.</p>
|
||||
|
||||
<p>But someone should have picked what had to give: do you stop people from inputting stuff in the system, or do you shed load. Those are inescapable choices, where inaction leads to system failure.</p>
|
||||
|
||||
<p>And you know what's cool? If you identify these bottlenecks you have for real in your system, and you put them behind proper back-pressure mechanisms, your system won't even have the right to become slow.</p>
|
||||
|
||||
<p>Step 1. Identify the bottleneck. Step 2: ask the bottleneck for permission to pile more data in:</p>
|
||||
<img src="https://ferd.ca/static/img/sink7.png" width="387" height="259" /> <img src="https://ferd.ca/static/img/sink8.png" width="383" height="259" />
|
||||
<p>Depending on where you put your probe, you can optimize for different levels of latency and throughput, but what you're going to do is define proper operational limits of your system.</p>
|
||||
|
||||
<p>When people blindly apply a queue as a buffer, all they're doing is creating a bigger buffer to accumulate data that is in-flight, only to lose it sooner or later. You're making failures more rare, but you're making their magnitude worse.</p>
|
||||
|
||||
<p>When you shed load and define proper operational limits to your system, you don't have these. What you may have is customers that are as unhappy (because in either case, they can't do what your system promises right), but with proper back-pressure or load-shedding, you gain:</p>
|
||||
|
||||
<ul>
|
||||
<li>Proper metrics of your quality of service</li>
|
||||
<li>An API that will be designed with either in mind (back-pressure lets you know when you're in an overload situation, and when to retry or whatever, and load-shedding lets the user know that some data was lost so they can work around that)</li>
|
||||
<li>Fewer night pages</li>
|
||||
<li>Fewer critical rushes to get everything fixed because it's dying all the time</li>
|
||||
<li>A way to monetize your services through varying account limits and priority lanes</li>
|
||||
<li>You act as a more reliable endpoint for everyone who depends on you</li>
|
||||
</ul>
|
||||
<p>To make stuff usable, a proper idempotent API with end-to-end principles in mind will make it so these instances of back-pressure and load shedding should rarely be a problem for your callers, because they can safely retry requests and know if they worked.</p>
|
||||
|
||||
<p>So when I rant about/against queues, it's because queues will often be (but not always) applied in ways that totally mess up end-to-end principles for no good reason. It's because of bad system engineering, where people are trying to make an 18-wheeler go through a straw and wondering why the hell things go bad. In the end the queue just makes things worse. And when it goes bad, it goes really bad, because everyone tried to close their eyes shut and ignore the fact they built a dam to solve flooding problems upstream of the dam.</p>
|
||||
|
||||
<p>And then of course, there's the use case where you use the queue as a messaging mechanism between front-end threads/processes (think PHP, Ruby, CGI apps in general, and so on) because your language doesn't support inter-process communications. It's marginally better than using a MySQL table (which I've seen done a few times and even took part in), but infinitely worse than picking a tool that supports the messaging mechanisms you need to implement your solution right.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<footer class="row">
|
||||
<div class="contact six columns">
|
||||
<ul>
|
||||
<li><a href="mailto:mononcqc+ferdca@ferd.ca">Fred Hebert</a></li>
|
||||
<li><a rel="me" href="https://hachyderm.io/@mononcqc">Mastodon</a>, <a rel="me" href="https://bsky.app/profile/ferd.ca">bsky</a></li>
|
||||
<li><a href="https://ferd.ca/feed.rss" type="application/rss+xml" rel="alternate">RSS</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="publications six columns">
|
||||
<ul>
|
||||
<li><a href="https://pragprog.com/titles/fhproper/property-based-testing-with-proper-erlang-and-elixir/">Property-Based Testing with PropEr</a></li>
|
||||
<li><a href="https://www.erlang-in-anger.com/">Erlang in Anger</a></li>
|
||||
<li><a href="https://learnyousomeerlang.com">Learn You Some Erlang</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,539 @@
|
||||
<!doctype html><!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en-us" > <![endif]--><!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en-us" > <![endif]--><!--[if IE 8]> <html class="no-js lt-ie9" lang="en-us" > <![endif]--><!--[if gt IE 8]><!--><html class="no-js" lang="en-us"><!--<![endif]--><head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="author" content="Techstrong Group, Inc. Home of DevOps.com, Security Boulevard, Cloud Native Now, Digital CxO, Techstrong.ai, Techstrong.it, Techstrong TV, Techstrong Learning, Platform Engineering, and more.">
|
||||
<meta name="description" content="Understanding the evolving role of context will differentiate your incident management abilities and prepare you for ongoing success. ">
|
||||
<meta name="generator" content="HubSpot">
|
||||
<title>Sandstorm or Significant: The evolving role of context in Incident Management</title>
|
||||
<link rel="shortcut icon" href="https://webinars.devops.com/hubfs/DO%20Favicon%2032x32px.png">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<script src="/hs/hsstatic/jquery-libs/static-1.4/jquery/jquery-1.11.2.js"></script>
|
||||
<script>hsjQuery = window['jQuery'];</script>
|
||||
<meta property="og:description" content="Understanding the evolving role of context will differentiate your incident management abilities and prepare you for ongoing success. ">
|
||||
<meta property="og:title" content="Sandstorm or Significant: The evolving role of context in Incident Management">
|
||||
<meta name="twitter:description" content="Understanding the evolving role of context will differentiate your incident management abilities and prepare you for ongoing success. ">
|
||||
<meta name="twitter:title" content="Sandstorm or Significant: The evolving role of context in Incident Management">
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
a.cta_button{-moz-box-sizing:content-box !important;-webkit-box-sizing:content-box !important;box-sizing:content-box !important;vertical-align:middle}.hs-breadcrumb-menu{list-style-type:none;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px}.hs-breadcrumb-menu-item{float:left;padding:10px 0px 10px 10px}.hs-breadcrumb-menu-divider:before{content:'›';padding-left:10px}.hs-featured-image-link{border:0}.hs-featured-image{float:right;margin:0 0 20px 20px;max-width:50%}@media (max-width: 568px){.hs-featured-image{float:none;margin:0;width:100%;max-width:100%}}.hs-screen-reader-text{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}
|
||||
</style>
|
||||
|
||||
<!-- Editor Styles -->
|
||||
<style id="hs_editor_style" type="text/css">
|
||||
#hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 { color: #f20505 !important; display: block !important; margin-top: 35px !important; text-align: center !important }
|
||||
#hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 p , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 li , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 span , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 label , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 h1 , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 h2 , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 h3 , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 h4 , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 h5 , #hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523 h6 { color: #f20505 !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 { background-color: #d1d1d1 !important; background-image: none !important; display: block !important; padding-bottom: 20px !important; padding-left: 20px !important; padding-right: 20px !important; padding-top: 20px !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 input[type="text"] { font-family: sans-serif !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 input[type="email"] { font-family: sans-serif !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 textarea { font-family: sans-serif !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 input[type="number"] { font-family: sans-serif !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 select { font-family: sans-serif !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 input[type="file"] { font-family: sans-serif !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 input[type="tel"] { font-family: sans-serif !important }
|
||||
#hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685 input[type="date"] { font-family: sans-serif !important }
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<!-- Added by GoogleTagManager integration -->
|
||||
<script>
|
||||
var _hsp = window._hsp = window._hsp || [];
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
|
||||
var useGoogleConsentModeV2 = true;
|
||||
var waitForUpdateMillis = 1000;
|
||||
|
||||
if (useGoogleConsentModeV2) {
|
||||
|
||||
gtag('set','developer_id.dZTQ1Zm',true);
|
||||
|
||||
gtag('consent', 'default', {
|
||||
'ad_storage': 'denied',
|
||||
'analytics_storage': 'denied',
|
||||
'ad_user_data': 'denied',
|
||||
'ad_personalization': 'denied',
|
||||
'wait_for_update': waitForUpdateMillis
|
||||
});
|
||||
}
|
||||
|
||||
var hsLoadGtm = function loadGtm() {
|
||||
if(window._hsGtmLoadOnce) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (useGoogleConsentModeV2) {
|
||||
_hsp.push(['useGoogleConsentModeV2'])
|
||||
}
|
||||
|
||||
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||
})(window,document,'script','dataLayer','GTM-NZLPNQS');
|
||||
|
||||
window._hsGtmLoadOnce = true;
|
||||
};
|
||||
|
||||
_hsp.push(['addPrivacyConsentListener', function(consent){
|
||||
if(consent.allowed || (consent.categories && consent.categories.analytics)){
|
||||
hsLoadGtm();
|
||||
}
|
||||
}]);
|
||||
|
||||
</script>
|
||||
|
||||
<!-- /Added by GoogleTagManager integration -->
|
||||
|
||||
<link rel="canonical" href="https://webinars.devops.com/incident-management-victorops1">
|
||||
|
||||
<!-- Start Alexa Certify Javascript -->
|
||||
<script type="text/javascript">
|
||||
_atrk_opts = { atrk_acct:"Zpb+p1uhUo20dG", domain:"devops.com",dynamic: true};
|
||||
(function() { var as = document.createElement('script'); as.type = 'text/javascript'; as.async = true; as.src = "https://certify-js.alexametrics.com/atrk.js"; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(as, s); })();
|
||||
</script>
|
||||
<noscript><img src="https://certify.alexametrics.com/atrk.gif?account=Zpb+p1uhUo20dG" style="display:none" height="1" width="1" alt=""></noscript>
|
||||
<!-- End Alexa Certify Javascript -->
|
||||
<meta property="og:url" content="https://webinars.devops.com/incident-management-victorops1">
|
||||
<meta name="twitter:card" content="summary">
|
||||
<meta http-equiv="content-language" content="en-us">
|
||||
<link rel="stylesheet" href="//7052064.fs1.hubspotusercontent-na1.net/hubfs/7052064/hub_generated/template_assets/DEFAULT_ASSET/1789059785555/template_layout.min.css">
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://webinars.devops.com/hubfs/hub_generated/template_assets/1/3499271215/1741465132164/template_Vast-style.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body class="landing-page two-column hs-content-id-4859582577 hs-landing-page hs-page " style="">
|
||||
<!-- Added by GoogleTagManager integration -->
|
||||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NZLPNQS" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
|
||||
<!-- /Added by GoogleTagManager integration -->
|
||||
|
||||
<div class="header-container-wrapper">
|
||||
<div class="header-container container-fluid">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-1 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-global_group " style="" data-widget-type="global_group" data-x="0" data-w="12">
|
||||
<div class="" data-global-widget-path="generated_global_groups/3499271350.html"><div class="row-fluid-wrapper row-depth-1 row-number-1 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span8 widget-span widget-type-linked_image " style="" data-widget-type="linked_image" data-x="0" data-w="8">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_14508083399253824" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_linked_image" style="" data-hs-cos-general-type="widget" data-hs-cos-type="linked_image"><a href="https://devops.com/webinars/" target="_blank" id="hs-link-module_14508083399253824" rel="noopener" style="border-width:0px;border:0px;"><img src="https://webinars.devops.com/hs-fs/hubfs/3404e1d2-1595-418b-bbf3-720d280279d0-21.png?width=600&name=3404e1d2-1595-418b-bbf3-720d280279d0-21.png" class="hs-image-widget " style="width:600px;border-width:0px;border:0px;" width="600" alt="3404e1d2-1595-418b-bbf3-720d280279d0-21.png" title="3404e1d2-1595-418b-bbf3-720d280279d0-21.png" srcset="https://webinars.devops.com/hs-fs/hubfs/3404e1d2-1595-418b-bbf3-720d280279d0-21.png?width=300&name=3404e1d2-1595-418b-bbf3-720d280279d0-21.png 300w, https://webinars.devops.com/hs-fs/hubfs/3404e1d2-1595-418b-bbf3-720d280279d0-21.png?width=600&name=3404e1d2-1595-418b-bbf3-720d280279d0-21.png 600w, https://webinars.devops.com/hs-fs/hubfs/3404e1d2-1595-418b-bbf3-720d280279d0-21.png?width=900&name=3404e1d2-1595-418b-bbf3-720d280279d0-21.png 900w, https://webinars.devops.com/hs-fs/hubfs/3404e1d2-1595-418b-bbf3-720d280279d0-21.png?width=1200&name=3404e1d2-1595-418b-bbf3-720d280279d0-21.png 1200w, https://webinars.devops.com/hs-fs/hubfs/3404e1d2-1595-418b-bbf3-720d280279d0-21.png?width=1500&name=3404e1d2-1595-418b-bbf3-720d280279d0-21.png 1500w, https://webinars.devops.com/hs-fs/hubfs/3404e1d2-1595-418b-bbf3-720d280279d0-21.png?width=1800&name=3404e1d2-1595-418b-bbf3-720d280279d0-21.png 1800w" sizes="(max-width: 600px) 100vw, 600px"></a></span></div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
<div class="span4 widget-span widget-type-simple_menu " style="font-size: 20px; padding-top: 30px;" data-widget-type="simple_menu" data-x="8" data-w="4">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_14508094826057845" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_simple_menu" style="" data-hs-cos-general-type="widget" data-hs-cos-type="simple_menu"><div id="hs_menu_wrapper_module_14508094826057845" class="hs-menu-wrapper active-branch flyouts hs-menu-flow-vertical" role="navigation" data-sitemap-name="" data-menu-id="" aria-label="Navigation Menu">
|
||||
<ul role="menu">
|
||||
<li class="hs-menu-item hs-menu-depth-1" role="none"><a href="http://devops.com" role="menuitem" target="_self">Home</a></li>
|
||||
<li class="hs-menu-item hs-menu-depth-1" role="none"><a href="http://devops.com/devops-events/webinars/" role="menuitem" target="_self">Webinars</a></li>
|
||||
</ul>
|
||||
</div></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
</div>
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end header -->
|
||||
</div><!--end header wrapper -->
|
||||
|
||||
<div class="body-container-wrapper">
|
||||
<div class="body-container container-fluid">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-1 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-cell title-background padding20tb" style="" data-widget-type="cell" data-x="0" data-w="12">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-2 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-cell page-center" style="" data-widget-type="cell" data-x="0" data-w="12">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-3 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-header " style="" data-widget-type="header" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_wizard_module_97911293476122524100917430107958585523" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_header" style="" data-hs-cos-general-type="widget" data-hs-cos-type="header"><h1>Sandstorm or Significant: <br>The evolving role of context in Incident Management</h1></span></div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-4 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-cell page-center content-wrapper padding60tb" style="" data-widget-type="cell" data-x="0" data-w="12">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-5 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span8 widget-span widget-type-cell main-content" style="" data-widget-type="cell" data-x="0" data-w="8">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-6 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-cell " style="" data-widget-type="cell" data-x="0" data-w="12">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-7 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-social_sharing " style="" data-widget-type="social_sharing" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_149323455681955" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_social_sharing" style="" data-hs-cos-general-type="widget" data-hs-cos-type="social_sharing"></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-8 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-rich_text " style="" data-widget-type="rich_text" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_149323454339653" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><h2>Something Powerful</h2>
|
||||
<h3>Tell The Reader More</h3>
|
||||
<p>The headline and subheader tells us what you're <a href="#">offering</a>, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.</p>
|
||||
<p>Remember:</p>
|
||||
<ul>
|
||||
<li>Bullets are great</li>
|
||||
<li>For spelling out <a href="#">benefits</a> and</li>
|
||||
<li>Turning visitors into leads.</li>
|
||||
</ul></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-9 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-cell " style="" data-widget-type="cell" data-x="0" data-w="12">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-10 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span4 widget-span widget-type-rich_text " style="" data-widget-type="rich_text" data-x="0" data-w="4">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_1486568150069443" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><h2><img src="https://webinars.devops.com/hs-fs/hubfs/alan_new_head_shot_200x200.png?width=200&height=200&name=alan_new_head_shot_200x200.png" alt="alan_new_head_shot_200x200.png" width="200" height="200" style="margin: 0px auto 10px; display: block;" srcset="https://webinars.devops.com/hs-fs/hubfs/alan_new_head_shot_200x200.png?width=100&height=100&name=alan_new_head_shot_200x200.png 100w, https://webinars.devops.com/hs-fs/hubfs/alan_new_head_shot_200x200.png?width=200&height=200&name=alan_new_head_shot_200x200.png 200w, https://webinars.devops.com/hs-fs/hubfs/alan_new_head_shot_200x200.png?width=300&height=300&name=alan_new_head_shot_200x200.png 300w, https://webinars.devops.com/hs-fs/hubfs/alan_new_head_shot_200x200.png?width=400&height=400&name=alan_new_head_shot_200x200.png 400w, https://webinars.devops.com/hs-fs/hubfs/alan_new_head_shot_200x200.png?width=500&height=500&name=alan_new_head_shot_200x200.png 500w, https://webinars.devops.com/hs-fs/hubfs/alan_new_head_shot_200x200.png?width=600&height=600&name=alan_new_head_shot_200x200.png 600w" sizes="(max-width: 200px) 100vw, 200px"></h2>
|
||||
<h2 style="text-align: left;">Alan Shimel</h2>
|
||||
<h2>Editor-in-Chief, DevOps.com</h2>
|
||||
<p dir="ltr">As Editor-in-chief of DevOps.com, Alan Shimel is attuned to the world of technology. Alan has founded and helped several technology ventures, including StillSecure, where he guided the company in bringing innovative and effective networking and security solutions to the marketplace. </p></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
<div class="span4 widget-span widget-type-rich_text " style="" data-widget-type="rich_text" data-x="4" data-w="4">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_1486568197193450" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><h2><img src="https://webinars.devops.com/hs-fs/hubfs/kyle.jpg?width=200&name=kyle.jpg" alt="kyle.jpg" width="200" style="width: 200px; display: block; margin-left: auto; margin-right: auto;" title="kyle.jpg" caption="false" data-constrained="true" srcset="https://webinars.devops.com/hs-fs/hubfs/kyle.jpg?width=100&name=kyle.jpg 100w, https://webinars.devops.com/hs-fs/hubfs/kyle.jpg?width=200&name=kyle.jpg 200w, https://webinars.devops.com/hs-fs/hubfs/kyle.jpg?width=300&name=kyle.jpg 300w, https://webinars.devops.com/hs-fs/hubfs/kyle.jpg?width=400&name=kyle.jpg 400w, https://webinars.devops.com/hs-fs/hubfs/kyle.jpg?width=500&name=kyle.jpg 500w, https://webinars.devops.com/hs-fs/hubfs/kyle.jpg?width=600&name=kyle.jpg 600w" sizes="(max-width: 200px) 100vw, 200px">Matthew Boeckman</h2>
|
||||
<h2>Technology Strategist, VictorOps</h2>
|
||||
<p dir="ltr"><span>Matthew is an 18 year veteran building infrastructure and leading engineering teams. Despite his heavy Ops background, Matthew has been a longtime friend of Developers and considers DevOps his primary passion and focus. Most recently VP of Infrastructure at Craftsy, Matthew is now a Developer Advocate with VictorOps - providing focused consulting and content for teams looking to expand their DevOps practice. </span></p></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
<div class="span4 widget-span widget-type-rich_text " style="" data-widget-type="rich_text" data-x="8" data-w="4">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_150573974002761" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><h2>Something Powerful</h2>
|
||||
<h3>Tell The Reader More</h3>
|
||||
<p>The headline and subheader tells us what you're <a href="#">offering</a>, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.</p>
|
||||
<p>Remember:</p>
|
||||
<ul>
|
||||
<li>Bullets are great</li>
|
||||
<li>For spelling out <a href="#">benefits</a> and</li>
|
||||
<li>Turning visitors into leads.</li>
|
||||
</ul></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-11 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-rich_text " style="" data-widget-type="rich_text" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_150539451857549" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><h2>Something Powerful</h2>
|
||||
<h3>Tell The Reader More</h3>
|
||||
<p>The headline and subheader tells us what you're <a href="#">offering</a>, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.</p>
|
||||
<p>Remember:</p>
|
||||
<ul>
|
||||
<li>Bullets are great</li>
|
||||
<li>For spelling out <a href="#">benefits</a> and</li>
|
||||
<li>Turning visitors into leads.</li>
|
||||
</ul></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
<div class="span4 widget-span widget-type-cell sidebar right" style="" data-widget-type="cell" data-x="8" data-w="4">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-12 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-form sidebar-form" style="" data-widget-type="form" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_form" style="" data-hs-cos-general-type="widget" data-hs-cos-type="form"><h3 id="hs_cos_wrapper_wizard_module_9818716207171313946259819182478846685_title" class="hs_cos_wrapper form-title" data-hs-cos-general-type="widget_field" data-hs-cos-type="text"></h3>
|
||||
|
||||
<div id="hs_form_target_wizard_module_9818716207171313946259819182478846685"></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-13 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-rich_text " style="" data-widget-type="rich_text" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_152467107448227" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><br>
|
||||
<p><span class="lpContentsItem formSpan">By clicking “Submit” you confirm you have read, understood and agree to our <strong><a href="http://devops.com/privacy-policy/">DevOps.com Privacy Policy</a></strong> and the use of cookies.</span></p></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end body -->
|
||||
</div><!--end body wrapper -->
|
||||
|
||||
<div class="footer-container-wrapper">
|
||||
<div class="footer-container container-fluid">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-1 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-global_group " style="" data-widget-type="global_group" data-x="0" data-w="12">
|
||||
<div class="" data-global-widget-path="generated_global_groups/3499271300.html"><div class="row-fluid-wrapper row-depth-1 row-number-1 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-cell footer-copyright" style="" data-widget-type="cell" data-x="0" data-w="12">
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-2 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-cell page-center" style="" data-widget-type="cell" data-x="0" data-w="12">
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-3 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-raw_html back-to-top" style="" data-widget-type="raw_html" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_wizard_module_139643640253247995015263916993921634840" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_raw_html" style="" data-hs-cos-general-type="widget" data-hs-cos-type="raw_html"><a href="#">[fa icon="chevron-up"]</a></span></div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-4 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-raw_jinja " style="" data-widget-type="raw_jinja" data-x="0" data-w="12">
|
||||
<!-- Main.js : all custom js -->
|
||||
<script type="text/javascript" src="//7052064.fs1.hubspotusercontent-na1.net/hubfs/7052064/hub_generated/template_assets/DEFAULT_ASSET/1789059774611/template_hubtheme-main.min.js"></script>
|
||||
|
||||
<!-- Theme Foundation Javascript Package -->
|
||||
<script type="text/javascript" src="//7052064.fs1.hubspotusercontent-na1.net/hubfs/7052064/hub_generated/template_assets/DEFAULT_ASSET/1789059792330/template_theme-foundation-v1-0.min.js"></script></div><!--end widget-span -->
|
||||
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
</div>
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
<div class="row-fluid-wrapper row-depth-1 row-number-2 ">
|
||||
<div class="row-fluid ">
|
||||
<div class="span12 widget-span widget-type-rich_text " style="" data-widget-type="rich_text" data-x="0" data-w="12">
|
||||
<div class="cell-wrapper layout-widget-wrapper">
|
||||
<span id="hs_cos_wrapper_module_150573977576462" class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_rich_text" style="" data-hs-cos-general-type="widget" data-hs-cos-type="rich_text"><h2>Something Powerful</h2>
|
||||
<h3>Tell The Reader More</h3>
|
||||
<p>The headline and subheader tells us what you're <a href="#">offering</a>, and the form header closes the deal. Over here you can explain why your offer is so great it's worth filling out a form for.</p>
|
||||
<p>Remember:</p>
|
||||
<ul>
|
||||
<li>Bullets are great</li>
|
||||
<li>For spelling out <a href="#">benefits</a> and</li>
|
||||
<li>Turning visitors into leads.</li>
|
||||
</ul></span>
|
||||
</div><!--end layout-widget-wrapper -->
|
||||
</div><!--end widget-span -->
|
||||
</div><!--end row-->
|
||||
</div><!--end row-wrapper -->
|
||||
|
||||
</div><!--end footer -->
|
||||
</div><!--end footer wrapper -->
|
||||
|
||||
|
||||
<!-- HubSpot performance collection script -->
|
||||
<script defer src="/hs/hsstatic/content-cwv-embed/static-1.1293/embed.js"></script>
|
||||
|
||||
<!--[if lte IE 8]>
|
||||
<script charset="utf-8" src="https://js.hsforms.net/forms/v2-legacy.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<script data-hs-allowed="true" src="/_hcms/forms/v2.js"></script>
|
||||
|
||||
<script data-hs-allowed="true">
|
||||
var options = {
|
||||
portalId: '1628905',
|
||||
formId: 'ecc0912d-90bc-4bd4-8df1-f4abf6bc5f5d',
|
||||
formInstanceId: '5420',
|
||||
|
||||
pageId: '4859582577',
|
||||
|
||||
region: 'na1',
|
||||
|
||||
|
||||
|
||||
|
||||
pageName: "Sandstorm or Significant: The evolving role of context in Incident Management",
|
||||
|
||||
|
||||
|
||||
inlineMessage: "<span style=\"background-color: #ffff00;\">Thank you, you are now registered for this webinar! Your confirmation has been sent to the email you provided.<\/span>",
|
||||
|
||||
|
||||
rawInlineMessage: "<span style=\"background-color: #ffff00;\">Thank you, you are now registered for this webinar! Your confirmation has been sent to the email you provided.<\/span>",
|
||||
|
||||
|
||||
hsFormKey: "78ad5a2032c99c949b7edbe4f52d6a5b",
|
||||
|
||||
|
||||
css: '',
|
||||
target: '#hs_form_target_wizard_module_9818716207171313946259819182478846685',
|
||||
|
||||
|
||||
|
||||
goToWebinarWebinarKey: "770230266672033793",
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
contentType: "landing-page",
|
||||
|
||||
|
||||
|
||||
formsBaseUrl: '/_hcms/forms/',
|
||||
|
||||
|
||||
|
||||
formData: {
|
||||
cssClass: 'hs-form stacked hs-custom-form'
|
||||
}
|
||||
};
|
||||
|
||||
options.getExtraMetaDataBeforeSubmit = function() {
|
||||
var metadata = {};
|
||||
|
||||
|
||||
if (hbspt.targetedContentMetadata) {
|
||||
var count = hbspt.targetedContentMetadata.length;
|
||||
var targetedContentData = [];
|
||||
for (var i = 0; i < count; i++) {
|
||||
var tc = hbspt.targetedContentMetadata[i];
|
||||
if ( tc.length !== 3) {
|
||||
continue;
|
||||
}
|
||||
targetedContentData.push({
|
||||
definitionId: tc[0],
|
||||
criterionId: tc[1],
|
||||
smartTypeId: tc[2]
|
||||
});
|
||||
}
|
||||
metadata["targetedContentMetadata"] = JSON.stringify(targetedContentData);
|
||||
}
|
||||
|
||||
return metadata;
|
||||
};
|
||||
|
||||
hbspt.forms.create(options);
|
||||
</script>
|
||||
|
||||
|
||||
<!-- Start of HubSpot Analytics Code -->
|
||||
<script type="text/javascript">
|
||||
var _hsq = _hsq || [];
|
||||
_hsq.push(["setContentType", "landing-page"]);
|
||||
_hsq.push(["setCanonicalUrl", "https:\/\/webinars.devops.com\/incident-management-victorops1"]);
|
||||
_hsq.push(["setPageId", "4859582577"]);
|
||||
_hsq.push(["setContentMetadata", {
|
||||
"contentPageId": 4859582577,
|
||||
"legacyPageId": "4859582577",
|
||||
"contentFolderId": null,
|
||||
"contentGroupId": null,
|
||||
"abTestId": null,
|
||||
"languageVariantId": 4859582577,
|
||||
"languageCode": "en-us",
|
||||
|
||||
|
||||
}]);
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" id="hs-script-loader" async defer src="/hs/scriptloader/1628905.js"></script>
|
||||
<!-- End of HubSpot Analytics Code -->
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
var hsVars = {
|
||||
render_id: "46b8babf-383e-42d9-964e-f40997e2a1f9",
|
||||
ticks: 1789095443257,
|
||||
page_id: 4859582577,
|
||||
|
||||
content_group_id: 0,
|
||||
portal_id: 1628905,
|
||||
app_hs_base_url: "https://app.hubspot.com",
|
||||
cp_hs_base_url: "https://cp.hubspot.com",
|
||||
language: "en-us",
|
||||
analytics_page_type: "landing-page",
|
||||
scp_content_type: "",
|
||||
|
||||
analytics_page_id: "4859582577",
|
||||
category_id: 1,
|
||||
folder_id: 0,
|
||||
is_hubspot_user: false
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<script defer src="/hs/hsstatic/HubspotToolsMenu/static-1.640/js/index.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Generated by the HubSpot Template Builder - template version 1.03 -->
|
||||
|
||||
</body></html>
|
||||
26
sreweekly/articles/63/index.json
Normal file
26
sreweekly/articles/63/index.json
Normal file
@@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"idx": 1,
|
||||
"url": "http://ferd.ca/queues-don-t-fix-overload.html",
|
||||
"ok": true,
|
||||
"error": null
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"url": "https://medium.com/@jerub/tenets-of-sre-8af6238ae8a8#.xay7qdifr",
|
||||
"ok": false,
|
||||
"error": "HTTP 403"
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"url": "https://www.forbes.com/sites/davidmarquet/2017/03/10/avoid-an-oscar-epicfail-4-practices-for-high-reliability/",
|
||||
"ok": false,
|
||||
"error": "HTTP 403"
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"url": "http://webinars.devops.com/incident-management-victorops1?portalId=1628905&hsFormKey=bf85b34b2275531f28092b7da6a63600&submissionGuid=375796e6-deee-473d-8bba-eaffb37f64ec#wizard_module_9818716207171313946259819182478846685",
|
||||
"ok": true,
|
||||
"error": null
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user