Files
nexus/sreweekly/articles/527/07-when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-wi.html
2026-09-11 08:58:08 +08:00

2798 lines
192 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en-US">
<head >
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<link rel="preconnect" href="https://www.googletagmanager.com">
<link rel="preconnect" href="https://securepubads.g.doubleclick.net">
<link rel="preconnect" href="https://cdn-cookieyes.com">
<link rel="preconnect" href="https://js.hs-scripts.com">
<link rel="preconnect" href="https://player.vimeo.com">
<link rel="dns-prefetch" href="https://pagead2.googlesyndication.com">
<link rel="dns-prefetch" href="https://www.googletagservices.com">
<link rel="dns-prefetch" href="https://region1.google-analytics.com">
<link rel="dns-prefetch" href="https://static.addtoany.com">
<link rel="dns-prefetch" href="https://www.google-analytics.com">
<link rel="dns-prefetch" href="https://www.youtube.com">
<link rel="dns-prefetch" href="https://i.ytimg.com">
<link rel="dns-prefetch" href="https://i.vimeocdn.com">
<link rel="dns-prefetch" href="https://f.vimeocdn.com">
<link rel="dns-prefetch" href="https://track.hubspot.com">
<link rel="dns-prefetch" href="https://forms.hubspot.com">
<script id="cookie-law-info-gcm-var-js">
var _ckyGcm = {"status":true,"default_settings":[{"analytics":"denied","advertisement":"denied","functional":"denied","necessary":"granted","ad_user_data":"denied","ad_personalization":"denied","regions":"All"}],"wait_for_update":2000,"url_passthrough":true,"ads_data_redaction":false}</script>
<script id="cookie-law-info-gcm-js" type="text/javascript" src="https://devops.com/wp-content/plugins/cookie-law-info/lite/frontend/js/gcm.min.js"></script> <script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/0353c8e0e69e6c84de693280/script.js"></script>
<!-- Google Tag Manager for WordPress by gtm4wp.com -->
<script data-cfasync="false" data-pagespeed-no-defer>
var gtm4wp_datalayer_name = "dataLayer";
var dataLayer = dataLayer || [];
</script>
<!-- End Google Tag Manager for WordPress by gtm4wp.com -->
<!-- This site is optimized with the Yoast SEO Premium plugin v28.2 (Yoast SEO v28.2) - https://yoast.com/product/yoast-seo-premium-wordpress/ -->
<title>When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling - DevOps.com</title>
<meta name="description" content="How Wheely replaced an unreliable RabbitMQ workflow with a MongoDB polling queue and centralized Go service to scale notification delivery." />
<link rel="canonical" href="https://devops.com/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling/" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content="When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling - DevOps.com" />
<meta property="og:description" content="How Wheely replaced an unreliable RabbitMQ workflow with a MongoDB polling queue and centralized Go service to scale notification delivery." />
<meta property="og:url" content="https://devops.com/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling/" />
<meta property="og:site_name" content="DevOps.com" />
<meta property="article:publisher" content="https://www.facebook.com/devopscom" />
<meta property="article:published_time" content="2026-07-24T05:01:45+00:00" />
<meta property="og:image" content="https://devops.com/wp-content/uploads/2026/07/mongodb_notification_architecture_770x330.jpg" />
<meta property="og:image:width" content="770" />
<meta property="og:image:height" content="330" />
<meta property="og:image:type" content="image/jpeg" />
<meta name="author" content="Pavel Zavialov" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:creator" content="@devopsdotcom" />
<meta name="twitter:site" content="@devopsdotcom" />
<meta name="twitter:label1" content="Written by" />
<meta name="twitter:data1" content="Pavel Zavialov" />
<meta name="twitter:label2" content="Est. reading time" />
<meta name="twitter:data2" content="10 minutes" />
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/#article","isPartOf":{"@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/"},"author":{"name":"Pavel Zavialov","@id":"https:\/\/devops.com\/#\/schema\/person\/5b8c3bd1c652a62737ac1fcb2f4d84dd","url":"https:\/\/devops.com\/author\/pavel-zavialov\/"},"headline":"When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling","datePublished":"2026-07-24T05:01:45+00:00","mainEntityOfPage":{"@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/"},"wordCount":2040,"publisher":{"@id":"https:\/\/devops.com\/#organization"},"image":{"@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/#primaryimage"},"thumbnailUrl":"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/mongodb_notification_architecture_770x330.jpg","keywords":["asynchronous processing","atomic task claiming","backend engineering","database-backed queue","dead-letter queue","distributed systems","Go microservices","idempotency","message broker alternative","microservices architecture","MongoDB performance","MongoDB polling queue","notification architecture","notification service","push notifications","RabbitMQ scaling","retry strategy","Ruby monolith","SMS delivery","Wheely engineering"],"articleSection":["Business of DevOps","Contributed Content"],"inLanguage":"en-US","copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/devops.com\/#organization"},"dateModified":"2026-07-24T05:01:45-04:00","speakable":{"@type":"SpeakableSpecification","cssSelector":[".article-key-takeaways__content","h1.entry-title","h1",".entry-content > p:first-of-type"]},"abstract":"Wheely extracted push, SMS and status notifications from its Ruby monolith into a centralized, stateless Go service after fragmented delivery logic became difficult to scale and manage. When its shared RabbitMQ cluster struggled with large campaign spikes, the team used MongoDB as a persistent polling queue with atomic task claiming, retries, exponential backoff, idempotency and dead-letter handling. The new architecture handled several times the previous peak volume without broker-related…"},{"@type":"WebPage","@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/","url":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/","name":"When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling - DevOps.com","isPartOf":{"@id":"https:\/\/devops.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/#primaryimage"},"image":{"@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/#primaryimage"},"thumbnailUrl":"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/mongodb_notification_architecture_770x330.jpg","datePublished":"2026-07-24T05:01:45+00:00","description":"How Wheely replaced an unreliable RabbitMQ workflow with a MongoDB polling queue and centralized Go service to scale notification delivery.","breadcrumb":{"@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/"]}],"author":{"@id":"https:\/\/devops.com\/#\/schema\/person\/5b8c3bd1c652a62737ac1fcb2f4d84dd"}},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/#primaryimage","url":"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/mongodb_notification_architecture_770x330.jpg","contentUrl":"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/mongodb_notification_architecture_770x330.jpg","width":770,"height":330},{"@type":"BreadcrumbList","@id":"https:\/\/devops.com\/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Contributed Content","item":"https:\/\/devops.com\/category\/contributed-content\/"},{"@type":"ListItem","position":2,"name":"When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling"}]},{"@type":"WebSite","@id":"https:\/\/devops.com\/#website","url":"https:\/\/devops.com\/","name":"DevOps.com","description":"Where the world meets DevOps","publisher":{"@id":"https:\/\/devops.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devops.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","NewsMediaOrganization"],"@id":"https:\/\/devops.com\/#organization","name":"DevOps.com","url":"https:\/\/devops.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devops.com\/#\/schema\/logo\/image\/","url":"https:\/\/devops.com\/wp-content\/uploads\/2026\/06\/NEW_Devops-aFuturum-Company-blue2.png","contentUrl":"https:\/\/devops.com\/wp-content\/uploads\/2026\/06\/NEW_Devops-aFuturum-Company-blue2.png","width":600,"height":600,"caption":"DevOps.com"},"image":{"@id":"https:\/\/devops.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/devopscom","https:\/\/x.com\/devopsdotcom","https:\/\/www.linkedin.com\/company\/devops-com\/","https:\/\/www.youtube.com\/c\/Devopsdotcom","https:\/\/devops.com\/about\/"],"description":"About DevOps.com DevOps.com: A Division of Techstrong Group, Inc. Launched in 2014, DevOps.com has established itself as an indispensable resource for DevOps education and community building. We make it our mission to cover all aspects of DevOps—philosophy, tools, business impact, best practices and more."},{"@type":"Person","@id":"https:\/\/devops.com\/#\/schema\/person\/5b8c3bd1c652a62737ac1fcb2f4d84dd","name":"Pavel Zavialov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/1673451735387-1.jpgc1713a3c083bc2317a07c11ba022456d","url":"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/1673451735387-1.jpg","contentUrl":"https:\/\/devops.com\/wp-content\/uploads\/2026\/07\/1673451735387-1.jpg","caption":"Pavel Zavialov"},"description":"Pavel Zavialov is a Software Engineer specializing in high-load backend infrastructure, distributed systems, and API performance. With over eight years of experience, he has designed and scaled data pipelines and microservices in Go for major tech companies including Wheely, VK.com,","url":"https:\/\/devops.com\/author\/pavel-zavialov\/","worksFor":{"@id":"https:\/\/techstronggroup.com\/#organization"},"knowsAbout":["asynchronous processing","atomic task claiming","backend engineering","Business of DevOps","Contributed Content","database-backed queue","dead-letter queue","distributed systems","Go microservices"]},{"@type":["Organization","NewsMediaOrganization"],"@id":"https:\/\/techstronggroup.com\/#organization","name":"Techstrong Group","url":"https:\/\/techstronggroup.com\/","sameAs":["https:\/\/www.linkedin.com\/company\/techstrong-group\/","https:\/\/x.com\/TechstrongGroup"]}]}</script>
<!-- / Yoast SEO Premium plugin. -->
<link rel='dns-prefetch' href='//static.addtoany.com' />
<link rel='dns-prefetch' href='//js.hs-scripts.com' />
<link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; Feed" href="https://devops.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; Comments Feed" href="https://devops.com/comments/feed/" />
<link rel="alternate" type="text/calendar" title="DevOps.com &raquo; iCal Feed" href="https://devops.com/webinars/?ical=1" />
<link rel="alternate" type="application/rss+xml" title="DevOps.com &raquo; When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling Comments Feed" href="https://devops.com/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling/feed/" />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://devops.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://devops.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&#038;format=xml" />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<link rel='stylesheet' id='wpra-lightbox-css' href='https://devops.com/wp-content/plugins/wp-rss-aggregator/core/css/jquery-colorbox.css' media='all' />
<link rel='stylesheet' id='pt-cv-public-style-css' href='https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/public/assets/css/cv.css' media='all' />
<link rel='stylesheet' id='pt-cv-public-pro-style-css' href='https://devops.com/wp-content/plugins/pt-content-views-pro/public/assets/css/cvpro.min.css' media='all' />
<link rel='stylesheet' id='tribe-events-pro-mini-calendar-block-styles-css' href='https://devops.com/wp-content/plugins/events-calendar-pro/src/resources/css/tribe-events-pro-mini-calendar-block.min.css' media='all' />
<link rel='stylesheet' id='devops-css' href='https://devops.com/wp-content/themes/genesis-devops/style.css' media='all' />
<style id="wp-emoji-styles-inline-css">
img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://devops.com/wp-includes/css/dist/block-library/style.min.css' media='all' />
<style id="classic-theme-styles-inline-css">
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>
<style id="feedzy-rss-feeds-loop-style-inline-css">
.wp-block-feedzy-rss-feeds-loop{display:grid;gap:24px;grid-template-columns:repeat(1,1fr)}@media(min-width:782px){.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-2,.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-3,.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-4,.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-5{grid-template-columns:repeat(2,1fr)}}@media(min-width:960px){.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-2{grid-template-columns:repeat(2,1fr)}.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-3{grid-template-columns:repeat(3,1fr)}.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-4{grid-template-columns:repeat(4,1fr)}.wp-block-feedzy-rss-feeds-loop.feedzy-loop-columns-5{grid-template-columns:repeat(5,1fr)}}.wp-block-feedzy-rss-feeds-loop .wp-block-image.is-style-rounded img{border-radius:9999px}.wp-block-feedzy-rss-feeds-loop .wp-block-image:has(:is(img:not([src]),img[src=""])){display:none}
/*# sourceURL=https://devops.com/wp-content/plugins/feedzy-rss-feeds/build/loop/style-index.css */
</style>
<link rel='stylesheet' id='wpra-displays-css' href='https://devops.com/wp-content/plugins/wp-rss-aggregator/core/css/displays.css' media='all' />
<style id="global-styles-inline-css">
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:root :where(.wp-block-icon svg){width: 24px;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
/*# sourceURL=global-styles-inline-css */
</style>
<link rel='stylesheet' id='chain-wire-css' href='https://devops.com/wp-content/plugins/chainwire-integration/public/css/chainwire-public.css' media='all' />
<link rel='stylesheet' id='owl-css-css' href='https://devops.com/wp-content/plugins/devops_core/assets/owl.carousel.min.css' media='all' />
<link rel='stylesheet' id='owl-theme-css-css' href='https://devops.com/wp-content/plugins/devops_core/assets/owl.theme.default.min.css' media='all' />
<link rel='stylesheet' id='wppopups-pro-css' href='https://devops.com/wp-content/plugins/wppopups/pro/assets/css/wppopups.css' media='all' />
<link rel='stylesheet' id='megamenu-css' href='https://devops.com/wp-content/uploads/maxmegamenu/style.css' media='all' />
<link rel='stylesheet' id='dashicons-css' href='https://devops.com/wp-includes/css/dashicons.min.css' media='all' />
<style type="text/css" id="megamenu-google-fonts-css" media="all">@font-face {font-family:'Raleway';font-style:normal;font-weight:400;src:url(/cf-fonts/s/raleway/5.2.8/latin-ext/400/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:400;src:url(/cf-fonts/s/raleway/5.2.8/latin/400/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:400;src:url(/cf-fonts/s/raleway/5.2.8/vietnamese/400/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:400;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic-ext/400/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:400;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic/400/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/vietnamese/700/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic/700/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic-ext/700/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/latin/700/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/latin-ext/700/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}</style>
<link rel='stylesheet' id='megamenu-fontawesome6-css' href='https://devops.com/wp-content/plugins/megamenu-pro/icons/fontawesome6/css/all.min.css' media='all' />
<link rel='stylesheet' id='wppopups-base-css' href='https://devops.com/wp-content/plugins/wppopups/src/assets/css/wppopups-base.css' media='all' />
<link rel='stylesheet' id='my-theme-extra-style-css' href='https://devops.com/wp-content/themes/genesis-devops/extrastyle.css' media='all' />
<link rel='stylesheet' id='genesis-webinars-style-css' href='https://devops.com/wp-content/themes/genesis-devops/webinars.css' media='all' />
<link rel='stylesheet' id='genesis-any-style-css' href='https://devops.com/wp-content/themes/genesis-devops/js/slider/any/css/anythingslider.css' media='all' />
<link rel='stylesheet' id='meks-ads-widget-css' href='https://devops.com/wp-content/plugins/meks-easy-ads-widget/css/style.css' media='all' />
<link rel='stylesheet' id='relevanssi-live-search-css' href='https://devops.com/wp-content/plugins/relevanssi-live-ajax-search/assets/styles/style.css' media='all' />
<link rel='stylesheet' id='addtoany-css' href='https://devops.com/wp-content/plugins/add-to-any/addtoany.min.css' media='all' />
<link rel='stylesheet' id='fontawesome-css' href='https://devops.com/wp-content/themes/genesis-devops/css/font-awesome.min.css' media='all' />
<style type="text/css" id="devops-google-fonts-css" media="all">@font-face {font-family:'Raleway';font-style:normal;font-weight:500;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic-ext/500/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:500;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic/500/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:500;src:url(/cf-fonts/s/raleway/5.2.8/latin-ext/500/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:500;src:url(/cf-fonts/s/raleway/5.2.8/latin/500/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:500;src:url(/cf-fonts/s/raleway/5.2.8/vietnamese/500/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:600;src:url(/cf-fonts/s/raleway/5.2.8/latin/600/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:600;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic-ext/600/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:600;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic/600/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:600;src:url(/cf-fonts/s/raleway/5.2.8/latin-ext/600/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:600;src:url(/cf-fonts/s/raleway/5.2.8/vietnamese/600/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/latin/700/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic-ext/700/normal.woff2);unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/vietnamese/700/normal.woff2);unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/latin-ext/700/normal.woff2);unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:'Raleway';font-style:normal;font-weight:700;src:url(/cf-fonts/s/raleway/5.2.8/cyrillic/700/normal.woff2);unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-display:swap;}</style>
<link rel='stylesheet' id='bdt-uikit-css' href='https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/css/bdt-uikit.css' media='all' />
<link rel='stylesheet' id='ep-helper-css' href='https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/css/ep-helper.css' media='all' />
<script id="jquery-core-js" src="https://devops.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
<script id="jquery-migrate-js" src="https://devops.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
<script id="wp-hooks-js" src="https://devops.com/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
<script id="addtoany-core-js-before">
window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={};
//# sourceURL=addtoany-core-js-before
</script>
<script id="addtoany-core-js" defer src="https://static.addtoany.com/menu/page.js"></script>
<script id="addtoany-jquery-js" defer src="https://devops.com/wp-content/plugins/add-to-any/addtoany.min.js?ver=1.1"></script>
<script id="list-min-js-js" src="https://devops.com/wp-content/plugins/devops_core/assets/list.min.js?ver=7c595869f5825518f39b22142cea17d5"></script>
<script id="owl-min-js-js" src="https://devops.com/wp-content/plugins/devops_core/assets/owl.carousel.min.js?ver=7c595869f5825518f39b22142cea17d5"></script>
<script id="isotope-js-js" src="https://devops.com/wp-content/plugins/devops_core/assets/isotope.pkgd.min.js?ver=7c595869f5825518f39b22142cea17d5"></script>
<script id="j-custom-js-js" src="https://devops.com/wp-content/plugins/devops_core/assets/custom.js?ver=7c595869f5825518f39b22142cea17d5"></script>
<script id="wppopups-pro-js-js-extra">
var wppopups_pro_vars = {"enable_stats":"1","m_id":"","data_sampling":"","post_id":"186658","l18n":{"wait":"Please wait","seconds":"seconds"}};
//# sourceURL=wppopups-pro-js-js-extra
</script>
<script id="wppopups-pro-js-js" src="https://devops.com/wp-content/plugins/wppopups/pro/assets/js/wppopups.js?ver=2.2.0.3"></script>
<script id="devops-js-js" src="https://devops.com/wp-content/themes/genesis-devops/js/scripts.js?ver=1.0.7"></script>
<script id="devops-sticky-menu-js" src="https://devops.com/wp-content/themes/genesis-devops/js/sticky-menu.js?ver=1.0.7"></script>
<script id="devops-responsive-menu-js" src="https://devops.com/wp-content/themes/genesis-devops/js/responsive-menu.js?ver=1.0.7"></script>
<link rel="https://api.w.org/" href="https://devops.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://devops.com/wp-json/wp/v2/posts/186658" /><link rel='shortlink' href='https://devops.com/?p=186658' />
<style type="text/css">
.feedzy-rss-link-icon:after {
content: url("https://devops.com/wp-content/plugins/feedzy-rss-feeds/img/external-link.png");
margin-left: 3px;
}
</style>
<!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.3.69-->
<script class="hsq-set-content-id" data-content-id="blog-post">
var _hsq = _hsq || [];
_hsq.push(["setContentType", "blog-post"]);
</script>
<!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin -->
<meta name="tec-api-version" content="v1"><meta name="tec-api-origin" content="https://devops.com"><link rel="alternate" href="https://devops.com/wp-json/tribe/events/v1/" />
<!-- Google Tag Manager for WordPress by gtm4wp.com -->
<!-- GTM Container placement set to footer -->
<script data-cfasync="false" data-pagespeed-no-defer>
var dataLayer_content = {"pageTitle":"When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling - DevOps.com","pagePostType":"post","pagePostType2":"single-post","pageCategory":["blogs","business-of-devops","contributed-content","social-facebook","social-linkedin","social-x"],"pageAttributes":["asynchronous-processing","atomic-task-claiming","backend-engineering","database-backed-queue","dead-letter-queue","distributed-systems","go-microservices","idempotency","message-broker-alternative","microservices-architecture","mongodb-performance","mongodb-polling-queue","notification-architecture","notification-service","push-notifications","rabbitmq-scaling","retry-strategy","ruby-monolith","sms-delivery","wheely-engineering"],"pagePostAuthor":"Pavel Zavialov","pagePostDate":"July 24, 2026","pagePostDateYear":2026,"pagePostDateMonth":7,"pagePostDateDay":24,"pagePostDateDayName":"Friday","pagePostDateHour":1,"pagePostDateMinute":1,"pagePostDateIso":"2026-07-24T01:01:45-04:00","pagePostDateUnix":1784854905};
dataLayer.push( dataLayer_content );
</script>
<script data-cfasync="false" data-pagespeed-no-defer>
(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=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NZLPNQS');
</script>
<!-- End Google Tag Manager for WordPress by gtm4wp.com --><link rel="pingback" href="https://devops.com/xmlrpc.php" />
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/80877830/DO_Article-Medium-2', [300, 250], 'div-gpt-ad-1759256361146-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script><style type="text/css">.site-title a { background: url(https://devops.com/wp-content/uploads/2025/02/cropped-devops-logo.png) no-repeat !important; }</style>
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
</script>
<script>
googletag.cmd.push(function() {
var mapb=googletag.sizeMapping().
addSize([770, 0], [728, 90]).
addSize([0, 0], [320, 50]).
build();
var desk=googletag.sizeMapping().
addSize([1450, 0], [160, 600]).
addSize([0, 0], [0, 0]).
build();
//googletag.defineSlot('/80877830/DO_after-entry', [[728, 90], [320, 50]], 'div-gpt-ad-1494536589535-0').defineSizeMapping(mapb).addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_Article-Medium-1', [300, 250], 'div-gpt-ad-1494536589535-1').addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_Article-Medium-2', [300, 250], 'div-gpt-ad-1494536589535-2').addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_Home_Bottom_Ad', [[728, 90], [320, 50]], 'div-gpt-ad-1494536589535-3').defineSizeMapping(mapb).addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_Home-Medium', [300, 250], 'div-gpt-ad-1494536589535-4').addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_header-right', [[728, 90], [320, 50]], 'div-gpt-ad-1494599233432-0').defineSizeMapping(mapb).addService(googletag.pubads());
googletag.defineOutOfPageSlot('/80877830/DevOps.com_OOP', 'div-gpt-ad-1494947147258-0').addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_Home_Bottom_Ad_2', [728, 90], 'div-gpt-ad-1519910493553-0').defineSizeMapping(mapb).addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_SkyScraper_Left', [160, 600], 'div-gpt-ad-1542202470575-0').defineSizeMapping(desk).addService(googletag.pubads());
googletag.defineSlot('/80877830/DO_SkyScraper_Right', [160, 600], 'div-gpt-ad-1542202633557-0').defineSizeMapping(desk).addService(googletag.pubads());
googletag.pubads().setTargeting("category", ["blogs", "business-of-devops", "contributed-content", "social-facebook", "social-linkedin", "social-x"]);
googletag.pubads().setTargeting("homepage","no");
googletag.pubads().setTargeting("test", "");
googletag.pubads().setTargeting("articleID", "186658");
googletag.enableServices();
});
</script>
<meta name="generator" content="Elementor 4.2.3; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto">
<style>
.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
background-image: none !important;
}
@media screen and (max-height: 1024px) {
.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
background-image: none !important;
}
}
@media screen and (max-height: 640px) {
.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
background-image: none !important;
}
}
</style>
<style id="devops-article-tldr-faq-styles">
.article-key-takeaways,
.article-faq {
margin: 2rem 0;
}
.article-key-takeaways {
padding: 1.5rem 1.75rem;
background: #f4f6f8;
border-left: 4px solid #DC2E2A;
}
.article-key-takeaways h2,
.article-faq h2 {
margin: 0 0 1rem;
font-size: 1.5rem;
line-height: 1.25;
}
.article-key-takeaways__content > :first-child,
.article-faq__answer > :first-child {
margin-top: 0;
}
.article-key-takeaways__content > :last-child,
.article-faq__answer > :last-child {
margin-bottom: 0;
}
.article-key-takeaways__content ul,
.article-key-takeaways__content ol {
margin-bottom: 0;
}
.article-faq__items {
border-top: 1px solid #d9dee3;
}
.article-faq__item {
margin: 0;
border-bottom: 1px solid #d9dee3;
}
.article-faq__question {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 1rem 0;
font-weight: 700;
line-height: 1.4;
cursor: pointer;
list-style: none;
}
.article-faq__question::-webkit-details-marker {
display: none;
}
.article-faq__question::marker {
display: none;
content: '';
}
.article-faq__icon {
position: relative;
flex: 0 0 1rem;
width: 1rem;
height: 1rem;
}
.article-faq__icon::before,
.article-faq__icon::after {
position: absolute;
top: 50%;
left: 50%;
width: 1rem;
height: 2px;
background: currentColor;
content: '';
transform: translate(-50%, -50%);
transition: transform 0.2s ease;
}
.article-faq__icon::after {
transform: translate(-50%, -50%) rotate(90deg);
}
.article-faq__item[open] .article-faq__icon::after {
transform: translate(-50%, -50%) rotate(0deg);
}
.article-faq__answer {
padding: 0 2rem 1rem 0;
}
@media (max-width: 600px) {
.article-key-takeaways {
padding: 1.25rem;
}
}
</style>
<style type="text/css" id="spu-css-174203" class="spu-css"> #spu-bg-174203 {
background-color: rgba(0,0,0,0.5);
}
#spu-174203 .spu-close {
font-size: 30px;
color: rgb(255, 255, 255);
text-shadow: 0 1px 0 #000;
}
#spu-174203 .spu-close:hover {
color: rgb(204, 204, 204);
}
#spu-174203 {
background-color: rgb(29, 29, 33);
max-width: 650px;
border-radius: 0px;
height: auto;
box-shadow: 0px 0px 0px 0px #ccc;
}
#spu-174203 .spu-container {
padding: 0px;
height: calc(100% - 0px);
}
.spu-content .hs-form {
display: flex;
align-items: flex-start;
justify-content: center;
padding-bottom: 20px;
}
.spu-content .hs_email {
width: 75%;
}
.spu-content .hs-input {
height: 46px;
}
.hs-error-msgs {
color: #fff;
}
.spu-content .hs_submit {
width: 20%;
} </style>
<link rel="icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-130x130.png" sizes="32x32" />
<link rel="icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-254x254.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1-254x254.png" />
<meta name="msapplication-TileImage" content="https://devops.com/wp-content/uploads/2021/10/android-chrome-256x256-1.png" />
<style type="text/css" id="pt-cv-custom-style-13e3d1fz4j">.pt-cv-social-buttons a{-webkit-filter:grayscale(0.9);filter:gray;filter:grayscale(0.9)}.pt-cv-social-buttons a:hover{-webkit-filter:grayscale(0);filter:gray;filter:grayscale(0)}
.pt-cv-meta-fields .avatar{width:30px;height:auto}
.pt-cv-meta-fields .screen-reader-text {display:none}
</style>
<style id="wp-custom-css">
.page-id-181664 h1{
display:none !important;}
.single #custom_html-92 {
display: none;
}
.home .wpra-item-list {
margin-left: 5px;
font-family: 'Noto Sans', 'Open Sans', sans-serif !important;
column-count: 2;
margin-top: 10px
}
.wpra-item {
list-style-type: none !important;
}
.wpra-item.feed-item a {
color: #555555 !important;
font-weight: 600 !important;
font-size: 15px;
}
.wprss-feed-meta {
font-size: 14px !important;
color: rgba(51,51,51,.6);
font-family: 'Noto Sans', 'Open Sans', sans-serif !important;
}
.feedzy-fc04908dea1f8626e988a94001cd7fb2 .feedzy-default {
column-count: 2;
padding: 0 20px;
}
.header-image .site-title a {
background: url(https://devops.com/wp-content/uploads/2025/02/cropped-devops-logo.png) no-repeat !important;
background-position-x: 0%;
background-position-y: 0%;
height: 92px;
}
#pt-cv-view-04fc8fd3b4 .pt-cv-content-item:first-child {
padding-right: 5px !important;
}
#pt-cv-view-04fc8fd3b4 .pt-cv-content-item:last-child {
padding-left: 5px !important;
}
#pt-cv-view-adef981o1p .pt-cv-oothers {
padding: 0;
}
.page-id-173698 {
font-family: "Inter";
}
.page-id-173698 #speaker-name {
margin-bottom: 0;
}
.page-id-173698 #speaker-title p {
margin: 0;
color: #747474;
}
.page-id-173698 #speaker-description {
font-size: 14px;
}
#pt-cv-view-ee38785r0s .pt-cv-content-item {
border-bottom: 1px solid #ddd !important;
margin-bottom: 20px;
}
#pt-cv-view-ee38785r0s .pt-cv-thumbnail {
object-fit: cover;
width: 100%;
}
.elementor-element-e999656 {
margin-bottom: 0 !important;
}
#pt-cv-view-adef981o1p {
margin-right: 0px !important;
margin-left: 0px !important;
}
#pt-cv-view-adef981o1p .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col {
padding: 0 !important;
}
#pt-cv-view-adef981o1p .pt-cv-thumbnail, #pt-cv-view-adef981o1p .pt-cv-thumbnail {
width: 100%;
}
#pt-cv-view-adef981o1p .pt-cv-content {
padding: 20px;
}
/* Gregs Page */
.page-id-172604 .site-header,
.page-id-172604 .nav-primary > .wrap {
display: none;
}
/*AWS Serverless On Demand Webinars*/
#pt-cv-view-1776e8aal6 {
margin: 0 !important;
}
#pt-cv-view-1776e8aal6 .pt-cv-1-col:first-child {
padding-left: 0;
}
#pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(2), #pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(4) {
padding-right: 0;
padding-left: 0;
}
#pt-cv-view-1776e8aal6 .pt-cv-1-col:nth-of-type(3) {
padding-left: 0;
}
#pt-cv-view-1776e8aal6 .pt-cv-1-col:last-child {
padding-left: 0;
}
.page-template-aws-builder-hub-partners .sgpb-popup-dialog-main-div-wrapper {
display: none;
}
@media (min-width: 768px) {
.elementor-161310 .elementor-element.elementor-element-44af0c3,
.elementor-161310 .elementor-element.elementor-element-c1d27f2,
.elementor-161310 .elementor-element.elementor-element-807b75f{
width: 26.653%;
}
}
@media (min-width: 768px) {
.elementor-161310 .elementor-element.elementor-element-0239c2e,
.elementor-161310 .elementor-element.elementor-element-92ac4b4,
.elementor-161310 .elementor-element.elementor-element-3e37e91{
width: 48.695%;
}
}
@media (min-width: 768px) {
.elementor-161310 .elementor-element.elementor-element-05c7d51,
.elementor-161310 .elementor-element.elementor-element-f8206b8,
.elementor-161310 .elementor-element.elementor-element-1228b53{
width: 24.316%;
}
}
.elementor-129505 .elementor-element.elementor-element-2fefd07 > .elementor-widget-container {
background-color: #333;
background-image: none !important;
}
.elementor-129505 .elementor-element.elementor-element-20c9085 > .elementor-widget-container {
background-color: #333;
background-image: none !important;
margin: 0 12px 0 1px;
padding: 5px;
}
.elementor-129505 .elementor-element.elementor-element-20c9085 .elementor-heading-title {
color: #fff;
text-shadow: 0 0 10px rgba(0,0,0,.3);
}
@media screen and (max-width: 480px) {
#tribe-events .webinars-heading {
margin-top: 30px;
}
}
.page-template-ecotech-insights .site-inner {
background: #fff;
padding-left: 0 !important;
}
@media screen and (min-width: 1024px) {
.elementor-160146 .elementor-element.elementor-element-5875a83 {
width: 80% !important;
}
.elementor-160146 .elementor-element.elementor-element-c5257e6 {
width: 18%;
}
}
/*
.gform_legacy_markup_wrapper table.gsurvey-likert th.gsurvey-likert-choice-label,
.gform_legacy_markup_wrapper table.gsurvey-likert tr:nth-child(2n+1) .gsurvey-likert-row-label, .gravity-theme table.gsurvey-likert tr:nth-child(2n+1) .gsurvey-likert-row-label,
.gform_legacy_markup_wrapper table.gsurvey-likert .gsurvey-likert-row-label, .gravity-theme table.gsurvey-likert .gsurvey-likert-row-label {
font-size: 10px;
}
.gravity-theme table.gsurvey-likert th.gsurvey-likert-choice-label {
font-size: 8px;
}
*/
.page-template-aws-builder-hub .marquee-outer-container {
display: none !important;
}
/*PODCAST SIDEBAR */
#text-89,
#text-89 p {
margin: 0;
padding: 0;
}
/* SPONSORED CONTENT SIDEBAR WIDGET */
.category-sponsored-content .content,
.category-analyst-corner .content {
width: 98% !important;
}
#featured-post-14 {
background: #333;
padding: 10px;
}
#featured-post-14 .entry {
background: #333 !important;
}
#featured-post-14 .widget-title {
margin-bottom: 10px !important;
background: #DC2E2A;
font-weight: 600;
text-transform: uppercase !important;
}
#featured-post-14 .entry-title {
margin-bottom: 3px !important;
line-height: 1em !important;
display: block;
}
#featured-post-14 .entry-title a {
color: #fff !important;
font-weight: 600 !important;
font-size: 15px;
text-transform: none;
line-height: 1em;
}
#featured-post-14 .entry-meta,
#featured-post-14 .entry-author-link {
color: rgba(255,255,255,.6);
float: none;
display: inline;
font-size: 13px;
text-transform: none;
}
.sponsored-content article {
padding: 0 15px !important;
}
.sponsored-content .content-sidebar-wrap,
.cyberwire .content-sidebar-wrap {
margin-top: 12px;
}
.elementor-129505 .elementor-element.elementor-element-ab012a6 > .elementor-widget-container {
margin: 0 10px 0 2px;
padding: 5px;
background-color: #333;
background-image: url(https://devops.com/wp-content/uploads/2019/04/DevOpsArrow_241.png);
background-position: center right;
background-repeat: no-repeat;
background-size: auto;
}
.elementor-129505 .elementor-element.elementor-element-ab012a6 .elementor-heading-title {
color: #fff;
text-shadow: 0 0 10px rgba(0,0,0,.3);
}
/*MENU FIX */
#mega-menu-wrap-topmenu #mega-menu-topmenu li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator::after {
margin: 0 0 0 2px;
}
/* SAFARI SEARCH FIX*/
@media not all and (min-resolution:.001dpcm) {
@supports (-webkit-appearance:none) and (display:flow-root) {
html {
overflow-x: visible !important;
}
}
}
/*Newsletter */
#custom_html-70 {
padding: 20px;
background: #DC2E2A;
}
#custom_html-70 .widget-title, .hs_submit input:hover[type="submit"] {
text-align: center;
font-weight: bold;
background: #000;
}
.hs-button {
text-align: center;
display: block;
margin: auto;
}
.hs-richtext.hs-main-font-element {
margin: 20px auto;
}
.hbspt-form p {
color: #fff;
text-align: center;
}
/* POLL */
.mega-search-wrap {
z-index: 0!important;
}
.page-id-148327 #custom_html-71{
display: none;
}
#mks_ads_widget-2 .widget-wrap {
background: #DC2E2A;
}
.mks_adswidget_ul.custom li {
margin-top: 0 !important;
}
/*QUIZ */
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-129582 .mega-search-wrap {
z-index: 1;
}
/* UNBOUND */
.elementor-element-a2539c2 .elementor-widget-container,
.elementor-element-634a6f3 .elementor-widget-container {
padding: 10px;
background-color: #000;
background-image: url(https://devops.com/wp-content/uploads/2021/04/white-arrow-padding.png);
background-position: center right;
background-repeat: no-repeat;
}
.elementor-element-52ddf69 .elementor-heading-title a,
.elementor-element-a2539c2 .elementor-heading-title a,
.elementor-element-634a6f3 .elementor-heading-title a{
color: #fff;
}
#pt-cv-view-68732b26od .pt-cv-ctf-list,
#pt-cv-view-68732b26od .pt-cv-ctf-column {
display: flex;
}
.elementor-element-e98917f .pt-cv-content-item,
.elementor-element-0c4bd9e .pt-cv-content-item{
border: solid 4px #333;
margin: 20px;
width: calc(100% - 40px);
padding: 10px;
}
/*NEW HOME FEATURE */
.elementor-129505 .elementor-element.elementor-element-7a99144 > .elementor-column-wrap > .elementor-widget-wrap > .elementor-widget:not(.elementor-widget__width-auto):not(.elementor-widget__width-initial):not(:last-child):not(.elementor-absolute) {
margin-bottom: 0;
}
#pt-cv-view-b007d672b1 .carousel-control.left {
margin: 10px 10px 0 0;
}
#pt-cv-view-b007d672b1 .carousel-control.right {
margin: 10px 10px 0 0;
}
#pum-144000,
.pum {
display: none!important;
}
/**AWS BB Page **/
.page-template-awsbb-microsite .sidebar-primary {
padding-right: 0 !important;
padding-left: 10px !important;
}
@media only screen and (min-width: 768px) {
.page-template-awsbb-microsite .sidebar-primary {
padding-right: 0 !important;
padding-left: 0px !important;
}
}
.bb-swag {
border: solid 2px #69E4AF;
padding: 10px;
}
.first.video {
display: inline-block;
background: linear-gradient(#234C4F, #233A44);
padding: 40px;
margin-top: 20px;
}
@media only screen and (min-width: 768px) {
.first.video .image-video {
width: 382px;
float: left;
}
}
.first.video .text-video {
color: #fff;
padding-top: 20px;
}
@media only screen and (min-width: 768px) {
.first.video .text-video {
padding-left: 420px;
color: #fff;
padding-top: 40px
}
}
.page-template-awsbb-microsite .site-inner {
padding-top: 20px;
}
#media_image-6 {
padding-top: 0;
}
#media_image-7 img {
border: solid 2px #69E4AF;
}
.page-template-awsbb-microsite .title-bar-bg {
background: #161E2D;
background-image: url("https://devops.com/wp-content/uploads/2021/04/white-arrow-padding.png");
background-position: center right;
background-repeat: no-repeat;
margin: 20px 0px 5px 0px;
padding: 10px 10px 10px 10px;
display: block;
}
.page-template-awsbb-microsite .title-bar-bg a,
.page-template-awsbb-microsite .title-bar-bg a:hover,
.page-template-awsbb-microsite .title-bar-bg a:active,
.page-template-awsbb-microsite .title-bar-bg a:focus {
display: block;
color: #fff;
text-decoration: none;
font-size: 16px;
}
.page-template-awsbb-microsite .featured-latest-title {
margin: 20px 0 10px 0;
}
.page-template-awsbb-microsite .featured-small {
margin: 0 20px 10px 0;
}
.page-template-awsbb-microsite .featured-small a,
.page-template-awsbb-microsite .featured-latest a {
color: #333333 !important;
font-weight: 600 !important;
line-height: 1.3 !important;
font-size: 15px;
}
.page-template-awsbb-microsite .banner {
background: url("https://devops.com/wp-content/uploads/2021/06/aws-bugbust-hero-rs.jpg") no-repeat;
height: 267px;
width: 883px;
}
.page-template-awsbb-microsite .banner h1{
padding: 130px 20px 0;
font-size: 18px;
color: #fff;
width: auto;
}
@media only screen and (min-width: 768px) {
.page-template-awsbb-microsite .banner h1{
padding: 130px 0 0 50px;
font-size: 18px;
color: #fff;
width: 420px;
line-height: 1.4em;
}
}
.page-template-awsbb-microsite .thumb {
width: 100px;
}
.page-template-awsbb-microsite .cartoon {
margin: 0 auto 0;
text-align: center;
}
/** CUSTOM AD **/
.custom-ad {
padding: 10px;
border-top: solid 1px #ccc;
border-bottom: solid 1px #ccc;
margin: 10px auto;
position: relative;
display: flex;
align-items: center;
}
.custom-ad-image {
float: left;
margin-right: 20px;
width: 300px;
/*height: 169px;*/
overflow: hidden;
}
.custom-ad-sponsored {
font-weight: bold;
color: #ff0000;
font-style: italic;
}
.custom-ad-text a {
text-decoration: none;
color: #000;
}
.custom-ad-text a:hover {
text-decoration: none!important;
color: #ff0000;
}
.clear-custom-ad {
clear: both;
}
/* ROCKET MICRO SITE STYLES & SITE OVERRIDES */
#spotlight .elementor-author-box__avatar img {
border-radius: 0;
width: auto !important;
object-fit: contain;
}
#pt-cv-view-ffab038v81 .left.carousel-control, #pt-cv-view-ffab038v81 .right.carousel-control {
display: none;
}
#custom_html-66 h4.widget-title {
display: none;
}
.page-template-rocket .widget-title,
.rocket-microsite .widget-title,
.rocket-analyst-reports-white-papers .widget-title,
.rocket-microsite-latest .widget-title,
.rocket-oss-tools-for-ibm-z .widget-title,
.page-template-page_rocket_archive .widget-title,
.category-54621 .widget-title, .category-54622 .widget-title, .category-54623 .widget-title, .category-54624 .widget-title {
background-color: #027468;
}
div#pt-cv-view-4080038g2k.pt-cv-colsys, div#pt-cv-view-ffab038v81.pt-cv-colsys {
margin: 0 !important;
}
div#pt-cv-view-ab46290ema .col-md-6.pt-cv-content-item.pt-cv-1-col, div#pt-cv-view-582ed10nx7 .col-md-12.pt-cv-content-item.pt-cv-1-col, {
padding: 0 !important;
}
.page-template-rocket .addtoany_list, .rocket-microsite .addtoany_list, .rocket-analyst-reports-white-papers .addtoany_list, .rocket-microsite-latest .addtoany_list, .rocket-oss-tools-for-ibm-z .addtoany_list {
margin-top: 20px;
display: flex;
justify-content: center;
}
#pt-cv-view-16aa7cbary .pt-cv-ifield {
display: flex;
margin-bottom: 10px !important;
}
#pt-cv-view-16aa7cbary .pt-cv-thumb-left.cvp-responsive-image {
margin-bottom: 0;
}
#pt-cv-view-16aa7cbary .pt-cv-title {
display: flex;
align-self: center;
align-items: center;
margin-bottom: 0;
}
#pt-cv-view-16aa7cbary .pt-cv-title::before {
content: "";
background: url(https://devopsdevwork.wpengine.com/wp-content/uploads/2021/03/podium.svg) no-repeat;
height: 20px;
width: 20px;
margin-right: 10px;
display: flex;
}
.page-template-rocket .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-microsite .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-analyst-reports-white-papers .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-microsite-latest .su-image-carousel-crop .su-image-carousel-item-content img, .rocket-oss-tools-for-ibm-z .su-image-carousel-crop .su-image-carousel-item-content img {
object-fit: contain;
}
#a2a_follow_widget-2 .widget-title {
margin-bottom: 10px;
}
/* END MICROSITE CUSTOMIZATIONS */
/*EDITORIAL CALENDAR LAYOUT FIX */
.elementor-129505 .elementor-element.elementor-element-4ad8438 > .elementor-widget-container {
margin: 0px 10px 0px 3px !important;
}
/* PLUGIN UPDATE FIX 4-3-21 */
.bdt-news-ticker .bdt-news-ticker-label::after {
display: none;
}
.bdt-news-ticker .bdt-news-ticker-content ul li a {
padding: 4px 0px 10px 16px !important;
}
.bdt-news-ticker-controls button {
padding: 0;
}
/* AUTHORS PAGE IMAGE FIX */
.dir-listing{
position: relative;
}
/** HCL BADGE **/
.pt-cv-custom-fields.pt-cv-ctf-sponsored_content .pt-cv-ctf-value {
display: none;
}
/* SINGLE POST DISPLAY */
.entry-title.sponsored {
position: relative;
}
/*
.entry-title.sponsored::before {
content: "";
background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-black.svg) no-repeat 0 0;
height: 35px;
width: 35px;
display: inline-block;
float: left;
margin-right: 10px;
position: relative;
top: 6px;
}*/
/*LOW CODE ARCHIVE PAGE */
#pt-cv-view-8d86a75u5j .pt-cv-ctf-list {
display: inline-block;
float: right;
margin-right: 10px;
position: relative;
top: -20px;
margin-top: -20px;
}
/*
#pt-cv-view-8d86a75u5j .pt-cv-custom-fields.pt-cv-ctf-sponsored_content::before {
content: "";
background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-black.svg) no-repeat 0 0;
height: 30px;
width: 30px;
float: right;
}
*/
/*HOME PAGE RIGHT RAIL LATEST */
#pt-cv-view-cee3219m65 .pt-cv-ctf-list {
display: inline-block;
float: right;
margin-right: 10px;
position: relative;
top: -30px;
}
#pt-cv-view-cee3219m65 .pt-cv-custom-fields.pt-cv-ctf-sponsored_content::before {
content: "";
background: url(https://devops.com/wp-content/uploads/2021/03/laptop-code-dgray.svg) no-repeat 0 0;
height: 27px;
width: 27px;
}
#pt-cv-view-cee3219m65 .pt-cv-ctf-list {
display: inline-block;
float: right;
margin-right: 10px;
position: relative;
top: -13px;
}
.page-id-140470 .entry-title {
display:none !important;
}
/* This for removing extra padding on microsite widget pages. Find the pt-cv-view-???? specific to the widget and duplicate and copy that. */
div#pt-cv-view-9f39fc9rjh .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col {
padding-right: 0px !important;
}
div#pt-cv-view-117ab7a3lp .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col {
padding-right: 0px !important;
}
div#pt-cv-view-4beabaflfs.pt-cv-view.pt-cv-scrollable.pt-cv-colsys {
padding-left: 12px !important;
}
div#pt-cv-view-4beabaflfs.pt-cv-scrollable .pt-cv-thumbnail {
width: 200px;
}
div#pt-cv-view-62221e39gi.pt-cv-scrollable .pt-cv-thumbnail {
width: 200px;
}
div#pt-cv-view-91a13a0apm .col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col {
padding-right:0px !important;
}
div#pt-cv-view-98fbdec2ao .col-md-4.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col {
padding-right:0px !important;
}
div#pt-cv-view-3dc2d7dn8d .col-md-6.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col {
padding-right: 0px !important;
padding-left: 20px !important;
}
ul#menu-csc-main-navigation.menu.genesis-nav-menu.menu-primary.responsive-menu {
padding-bottom:0px !important;
}
.genesis-nav-menu a:hover {
color:#dc2e2a !important;
}
.genesis-nav-menu a {
color:#fff !important;
padding: 10px 10px;
}
.genesis-nav-menu .sub-menu a {
color:#fff;
}
.genesis-nav-menu .sub-menu {
background-color: #333333;
color: #000;
}
.genesis-nav-menu .sub-menu a:hover {
background-color: #333333;
}
////////
.page-id-136679 .tribe-mini-calendar-event .list-info {
padding-right: 5px;
}
.page-id-136679 .tribe-events-widget-link {
display:none !important;
}
.page-id-136679 .tribe-events-widget-link2 {
display:none !important;
}
.page-id-138296 .tribe-mini-calendar-event .list-info {
padding-right: 5px;
}
.page-id-138296 .tribe-events-widget-link {
display:none !important;
}
.page-id-138296 .tribe-events-widget-link2 {
display:none !important;
}
div#pt-cv-view-791beb34b0.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-8.pt-cv-ocol.col-sm-8.col-xs-12 div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col {
padding-right:0px !important;
}
div#pt-cv-view-9d06d2e8f4.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-12.pt-cv-ocol div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col
{
padding-right:0px !important;
}
.wpforms-confirmation-container-full, div[submit-success] > .wpforms-confirmation-container-full:not(.wpforms-redirection-message) {
background: #e9e9f1;
border: 1px solid #b4d39b;
}
html,body
{
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
overflow-x: hidden;
}
.content {
width: 100% !important;
display: flex;
flex-direction: column;
}
.after-entry.widget-area {
order: 3;
}
.adjacent-entry-pagination.pagination {
order: 2;
}
aside.sidebar.sidebar-primary {
display: none !important;
}
@media (min-width: 1000px) {
.content {
width: 70% !important;
}
aside.sidebar.sidebar-primary {
width: 25% !important;
display: block !important;
}
}
@media (max-width: 600px) {
.content {
width: 100% !important;
}
aside.sidebar.sidebar-primary {
width: 100% !important;
display: block !important;
}
}
/*
@media only screen and (min-width: 1600px) {
.pum-overlay, html.pum-open.pum-open-overlay-disabled.pum-open-fixed .pum-container, html.pum-open.pum-open-overlay.pum-open-fixed .pum-container {
left: 1800px !important;
}
}
*/
.webinarslider {
margin-top:10px;
}
#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * {
color: #fff;
}
#pt-cv-view-2466c21qxe .pt-cv-custom-fields * {
color: #fff;
}
#pt-cv-view-cc5c992qah .pt-cv-custom-fields * {
color: #fff;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-57.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel {
padding-bottom: 0px;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-57.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget {
border-style: solid;
border-width: 1px;
border-color: #f2f2f2;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-56.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel {
padding-bottom: 0px;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-56.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget {
border-style: solid;
border-width: 1px;
border-color: #f2f2f2;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-55.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel {
padding-bottom: 0px;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-55.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget {
border-style: solid;
border-width: 1px;
border-color: #f2f2f2;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-51.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel {
padding-bottom: 0px;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-51.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget {
border-style: solid;
border-width: 1px;
border-color: #f2f2f2;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-47.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel {
padding-bottom: 0px;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-47.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget {
border-style: solid;
border-width: 1px;
border-color: #f2f2f2;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-45.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.pt-cv-carousel {
padding-bottom: 0px;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-45.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget {
border-style: solid;
border-width: 1px;
border-color: #f2f2f2;
}
div.gform_body ul#gform_fields_21.gform_fields.top_label.form_sublabel_below.description_above li#field_21_4.gfield.gsection.newsletter-privacy-policy.field_sublabel_below.field_description_above.gfield_visibility_visible {
margin-right:0px !important;
padding-right:0px !important;
}
div.gform_body ul#gform_fields_21.gform_fields.top_label.form_sublabel_below.description_above li#field_21_3.gfield.sidebar-signup-form.gfield_contains_required.field_sublabel_below.field_description_above.hidden_label.gfield_visibility_visible {
margin-right:0px !important;
padding-right:0px!important;
}
div.gform_body ul#gform_fields_39.gform_fields.top_label.form_sublabel_below.description_above li#field_39_6.gfield.gfield_contains_required.field_sublabel_below.field_description_above.hidden_label.gfield_visibility_visible div.ginput_container.ginput_container_text input#input_39_6.medium {
margin-top:12px;
}
.gform_wrapper.gf_browser_chrome span.address_country {
/* margin-top: -2px; */
padding-top: 16px;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-44.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget {
border-style: solid;
border-width: 1px;
border-color: #f2f2f2;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-44.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.su-custom-gallery {
margin-bottom: 0px !important;
}
aside.sidebar.sidebar-primary.widget-area section#custom_html-17.widget_text.widget.widget_custom_html div.widget_text.widget-wrap div.textwidget.custom-html-widget div.su-custom-gallery {
margin-bottom: 0px !important;
}
.tribe-events-loop .tribe-events-event-meta {
font-size: 12px !important;
}
.tribe-mini-calendar-event .list-info h2 {
font-size: 14px !important;
font-weight: bold !important;
line-height: 18px !important;
margin-top: 0px !important;
margin-bottom: 10px !important;
}
.elementor-129505 .elementor-element.elementor-element-cfcb608 {
display:none;
}
@media only screen and (max-width: 1024px) {
.bdt-news-ticker-content {
text-overflow: ellipsis !important;
white-space: nowrap !important;
width: 90%;
overflow: hidden !important;
}
}
div.bdt-news-ticker.bdt-grid.bdt-grid-collapse div.bdt-width-expand.bdt-grid.bdt-grid-collapse.bdt-slideshow div.bdt-news-ticker-navigation.bdt-flex.bdt-flex-middle.bdt-width-auto a.bdt-icon.bdt-slidenav-next.bdt-slidenav {
color: #fff;
}
div.bdt-news-ticker.bdt-grid.bdt-grid-collapse div.bdt-width-expand.bdt-grid.bdt-grid-collapse.bdt-slideshow div.bdt-news-ticker-navigation.bdt-flex.bdt-flex-middle.bdt-width-auto a.bdt-icon.bdt-slidenav-previous.bdt-slidenav {
color: #fff;
}
.bdt-news-ticker {
height: 35px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.bdt-news-ticker-content {
padding-top: 3px;
}
.bdt-flex-middle {
align-items: flex-start;
}
.bdt-grid-collapse {
padding-left: 40px !important;
padding-top: 3px !important;
}
.elementor-129505 .elementor-element.elementor-element-e2b0874 > .elementor-widget-container {
margin: 0px 12px 0px 1px;
padding: 5px 5px 5px 5px;
background-image: url(https://3ovyg21t17l11k49tk1oma21-wpengine.netdna-ssl.com/wp-content/uploads/2019/04/DevOpsArrow_892.png);
background-position: center right;
background-repeat: no-repeat;
background-size: auto;
}
.elementor-129505 .elementor-element.elementor-element-e2b0874.elementor-widget-heading .elementor-heading-title {
color: #ffffff;
}
div#pt-cv-view-e43592dbt0.pt-cv-view.pt-cv-grid.pt-cv-colsys.pt-cv-sharp-buttons div.pt-cv-page div.col-md-4.col-sm-4.col-xs-12.pt-cv-content-item.pt-cv-1-col
{
padding-right:0px;
}
#mega-menu-topmenu > li.mega-menu-megamenu > ul.mega-sub-menu
{
left:-7px !important;
width: 101% !important;
}
#mega-menu-primary > li.mega-menu-megamenu > ul.mega-sub-menu {
left:-7px !important;
width: 101% !important;
}
.su-pullquote-align-right {
border-left: 5px solid #dc2e2a !important;
}
.su-pullquote-align-left {
border-right: 5px solid #dc2e2a !important;
}
.do_blockquote {
max-width: 600px;
text-align: center !important;
margin: 20px !important;
padding: 20px !important;
font-size: 20px !important;
color: #333333;
border-left: 4px solid #dc2e2a !important;
border-top-left-radius: 30px !important;
border-bottom-left-radius: 30px !important;
border-right: 4px solid #dc2e2a !important;
border-top-right-radius: 30px !important;
border-bottom-right-radius: 30px !important;
}
p#breadcrumbs {
margin-bottom: 0px !important;
}
.header-image .site-title a {
background-position: top left !important;
}
.site-description {
padding-bottom: 10px !important;
text-align: left;
}
.site-title {
padding-bottom: 5px !important;
}
div.elementor-widget-container ul li {
margin-top: 0px !important;
margin-bottom: 12px !important;
}
@media only screen and (max-width: 1024px) {
#pt-cv-view-117ab7a3lp .pt-cv-content {
color: #ffffff !important;
display: none;
}
#pt-cv-view-91a13a0apm .pt-cv-content {
color: #ffffff !important;
display: none;
}
}
@media only screen and (max-width: 768px) {
#pt-cv-view-117ab7a3lp .pt-cv-content {
color: #ffffff !important;
display: none;
}
#pt-cv-view-91a13a0apm .pt-cv-content {
color: #ffffff !important;
display: none;
}
.widget-area.header-widget-area {
display: none;
}
}
@media (max-width: 639px) {
.bdt-visible\@s {
display: flex !important;
}
.bdt-news-ticker .bdt-news-ticker-content {
padding-left: 14px !important
}
.bdt-news-ticker-label-inner {
padding-left: 5px !important;
padding-right: 10px !important;
}
}
.widget-title {
text-transform: capitalize !important;
}
.elementor-heading-title {
text-transform:none !important;
}
.single .post img.attachment-post-image {
width: 900px;
}
.single .category-roelbob img.attachment-post-image {
width: auto;
}
.post-118516 .pt-cv-scrollable .pt-cv-cap-w-img {
margin-left: 22.0% !important;
padding-right: 5%;
padding-left: 3%;
height: 100%;
width: 75%;
z-index: -5;
}
.post-129336 .pt-cv-scrollable .pt-cv-cap-w-img {
margin-left: 22.0% !important;
padding-right: 5%;
padding-left: 3%;
height: 100%;
width: 75%;
z-index: -5;
}
div.cvp-replayout div.pt-cv-wrapper div#pt-cv-view-8d86a75u5j.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-nolf.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons div.pt-cv-page.shuffle.cvpshuffled div.col-md-12.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-2-col.shuffle-item.filtered div.pt-cv-pinmas a._self.pt-cv-href-thumbnail.pt-cv-thumb-right.cvplbd img.pt-cv-thumbnail.img-none.pull-right.cvp-substitute.cvplazy {
width: 30% !important;
}
div#pt-cv-view-117ab7a3lp.pt-cv-view.pt-cv-one_others.pt-cv-colsys.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page div.col-md-8.pt-cv-ocol.col-sm-8.col-xs-12 div.col-md-12.pt-cv-omain.pt-cv-content-item.pt-cv-1-col {
padding-right:0px !important;
}
article.post-15.page.type-page.status-publish.has-post-thumbnail.entry div.entry-content div {
float: left !important;
}
@media (max-width: 768px) {
#mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item {
display: inline-flex;
}
#mega-menu-wrap-secondary #mega-menu-secondary > li.mega-menu-item {
display: inline-flex;
}
}
@media (max-width: 768px) {
#mega-menu-wrap-topmenu {
max-width:80%
}
}
@media (min-width: 768px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 350px !important;
}
}
@media (max-width: 1000px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 0px !important;
}
}
@media (max-width: 600px) {
#mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu {
padding-left: 20px;
}
#mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label {
padding-left: 20px;
}
#mega-menu-wrap-topmenu {
padding-top:10px;
margin-left: -15px;
max-width: 110% !important;
}
.sidebar-primary {
padding-right:10px !important;
}
.nav-primary {
background-color: #333333 !important;
}
}
@media (max-width: 768px) {
#mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item {
display: inline-flex;
}
#mega-menu-wrap-secondary #mega-menu-secondary > li.mega-menu-item {
display: inline-flex;
}
}
@media (max-width: 768px) {
#mega-menu-wrap-topmenu {
max-width:80%
}
}
@media (min-width: 768px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 350px !important;
}
}
@media (max-width: 1000px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 0px !important;
}
}
@media (max-width: 600px) {
#mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu {
padding-left: 20px;
}
#mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label {
padding-left: 20px;
}
#mega-menu-wrap-topmenu {
padding-top:10px;
margin-left: -15px;
max-width: 110% !important;
}
.sidebar-primary {
padding-right:10px !important;
}
.nav-primary {
background-color: #333333 !important;
}
}
@media (max-width: 768px) {
#mega-menu-wrap-topmenu {
max-width:80%
}
}
@media (min-width: 768px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 350px !important;
}
}
@media (max-width: 1000px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 0px !important;
}
}
@media (max-width: 600px) {
#mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu {
padding-left: 20px;
}
#mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label {
padding-left: 20px;
}
#mega-menu-wrap-topmenu {
padding-top:10px;
margin-left: -15px;
max-width: 110% !important;
}
.sidebar-primary {
padding-right:10px !important;
}
.nav-primary {
background-color: #333333 !important;
}
}
.nav-primary {
background-color: #333333 !important;
}
.site-header .wrap {
padding-bottom: 0px !important;
}
#mega-menu-wrap-topmenu {
padding-top:25px;
height:60px !important;
}
@media (max-width: 600px) {
.nav-primary {
display:none !important;
}
#mega-menu-wrap-primary {
display:none !important;
}
.nav.nav-primary.cloned {
display:none;
}
div#mega-menu-wrap-topmenu.mega-menu-wrap {
padding-top:20px;
}
div.site-container header.site-header div.wrap {
padding-bottom: 0px;
margin-bottom:0px;
}
}
@media (max-width: 768px) {
#mega-menu-wrap-topmenu {
max-width:80%
}
}
@media (min-width: 768px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 350px !important;
}
}
@media (max-width: 1000px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu li#mega-menu-item-128964 {
margin-left: 0px !important;
}
}
@media (max-width: 600px) {
#mega-menu-wrap-topmenu .mega-menu-toggle.mega-menu-open + #mega-menu-topmenu {
padding-left: 20px;
}
#mega-menu-wrap-topmenu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-label {
padding-left: 20px;
}
#mega-menu-wrap-topmenu {
padding-top:10px;
margin-left: -15px;
max-width: 110% !important;
}
.sidebar-primary {
padding-right:10px !important;
}
.nav-primary {
background-color: #333333 !important;
}
}
@media (min-width: 1000px) {
h6.pt-cv-title {
font-size:15px;
}
}
div.site-inner div.content-sidebar-wrap div.author-header {
float: left;
width: 900px !important;
}
div.pt-cv-meta-fields {
font-size:13px !important;
padding-bottom:7px !important;
margin-bottom:0px !important;
}
#mega-menu-wrap-primary #mega-menu-primary > li.mega-menu-item > a.mega-menu-link {
font-weight: 500 !important;
color: #fff;
}
/*
@media (min-width: 1000px) {
.page-id-129505 .site-container {
background-color:#000;
}
.page-id-129505 .site-header {
max-width: 1280px;
margin-left: auto;
margin-right: auto;
padding-top:10px;
}
.page-id-129505 .site-inner {
max-width: 1280px;
background-color:white;
padding-left:20px !important;
}
.page-id-129505 .site-inner {
max-width: 1280px;
background-color:white;
padding-left:15px !important;
}
.page-id-129505 .nav-primary {
max-width: 1280px;
margin-left: auto;
margin-right: auto;
margin-bottom:0px;
}
.page-id-129505 .site-inner {
max-width: 1280px;
}
.page-id-129505 .content {
width: 900px;
}
.page-id-129505 .wrap {
max-width: 1240px;
}
.page-id-129505 .sidebar-primary {
margin-right:20px;
width:300px !important;
}
*/
@media (min-width: 1000px) {
.site-header div.wrap div.widget-area.header-widget-area {
padding-top: 20px;
}
.site-container {
background-color:#fff;
}
.site-header {
max-width: 100%;
margin-left: auto;
margin-right: auto;
padding-top:0px;
}
.site-inner {
max-width: 1280px;
background-color:white;
padding-left:20px !important;
}
.site-inner {
max-width: 1280px;
background-color:white;
padding-left:20px !important;
padding-top: 5px;
}
.nav-primary {
max-width: 100%;
margin-left: auto;
margin-right: auto;
margin-bottom:0px;
}
.site-inner {
max-width: 1280px;
}
.content {
width: 900px;
}
.wrap {
max-width: 1240px;
padding-left: 0 !important;
}
.sidebar-primary {
margin-right:20px;
width:300px !important;
}
.site-footer {
max-width: 100%;
margin-left: auto;
margin-right: auto;
padding-top: 20px !important;
padding-bottom: 0px;
}
.site-description {
padding-left:10px
}
.title-area {
margin-left: -10px !important;
padding-top: 20px;
}
}
article.post-123566.page.type-page.status-publish.entry div.entry-content div#gform_wrapper_42.gf_browser_chrome.gform_wrapper form#gform_42 div.gform_footer.top_label input#gform_submit_button_42.gform_button.button {
margin-left: 0px !important;
}
article.post-793.page.type-page.status-publish.entry div.entry-content div#gform_wrapper_39.gf_browser_gecko.gform_wrapper form#gform_39 div.gform_footer.top_label input#gform_submit_button_39.gform_button.button {
margin-left: 0px !important;
}
div.gform_wrapper .gform_footer input[type="submit"] {
margin-left: 0px !important;
}
aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .widget-wrap {
background: #DC2E2A;
padding: 10px;
}
aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .widget-title {
font-weight: bold;
background-color: #000;
padding: 5px 40px 2px 40px;
margin: auto;
text-transform: uppercase !important;
}
aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 #gform_wrapper_21 {
background: #DC2E2A;
border: 0 none;
}
aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 #gfield_description_21_4 a {
color: #000;
}
aside.sidebar.sidebar-primary.widget-area section#gform_widget-3 .gform_footer input[type="submit"] {
background-color: #000;
}
aside.sidebar.sidebar-primary.widget-area section#gform_widget-3.widget.gform_widget div.widget-wrap div#gform_wrapper_21.gf_browser_gecko.gform_wrapper form#gform_21 div.gform_footer.top_label input#gform_submit_button_21.gform_button.button {
margin-left: 0px !important;
margin-right: 0px !important;
}
section#gform_widget-3.widget.gform_widget div.widget-wrap div#gform_wrapper_21.gf_browser_gecko.gform_wrapper form#gform_21 div.gform_footer.top_label input#gform_submit_button_21.gform_button.button {
margin-left: auto !important;
margin-right: auto !important;
}
div.gform_wrapper .gform_footer input[type="submit"] {
margin: 0px 0px 0px;
}
@media (max-width: 768px) {
body.downloads-template-default.single.single-downloads .alignright {
display:block !important;
float:none !important;
}
div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys {
padding-left: 0px !important;
padding-right: 0px !important;
}
div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys {
margin-left: 0px !important;
margin-right: 0px !important;
}
div#pt-cv-view-a8a83ed3nr.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons div.pt-cv-page.shuffle.cvpshuffled div.col-md-6.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-1-col.shuffle-item.filtered {
padding-left: 0px;
padding-right: 0px;
}
div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys.pt-cv-nolf.pt-cv-border.pt-cv-no-bb.pt-cv-pgloadmore.pt-cv-sharp-buttons.pt-cv-reused div.pt-cv-page.shuffle.cvpshuffled div.col-md-12.col-sm-12.col-xs-12.pt-cv-content-item.pt-cv-2-col.shuffle-item.filtered {
padding-left: 0px !important;
padding-right: 0px !important;
}
div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys {
padding-left: 0px !important;
padding-right: 0px !important;
}
div#pt-cv-view-18214d4op9.pt-cv-view.pt-cv-pinterest.pt-cv-colsys {
margin-right: 0px !important;
}
}
@media (max-width: 1240px) {
#mega-menu-wrap-topmenu #mega-menu-topmenu {
margin-left:20px !important;
padding-right: 10px !important;
}
#mega-menu-wrap-primary {
margin-left:20px !important;
}
}
@media (min-width: 1240px) {
.site-header .widget-area {
width: 800px !important;
}
}
.title-area {
margin-left: 10px !important;
}
@media (min-width: 1240px) {
.title-area {
margin-left: -10px !important;
}
}
@media (max-width: 1000px) {
#mega-menu-wrap-primary {
margin-left:10px !important;
}
}
ul.mega-sub-menu {
z-index: 9999999 !important;
}
.post-118516 .pt-cv-scrollable .pt-cv-cap-w-img {
width: 100% !important;
margin-left: 190px !important;
padding-right: 230px !important;
}
.post-118516 .pt-cv-wrapper .col-xs-6 {
width: 100% !important;
}
@media (max-width: 600px) {
.post-118516 .pt-cv-wrapper .col-xs-6 {
width: 50% !important;
}
}
.pum-content .pt-cv-wrapper .carousel-control .glyphicon {
width: 0px;
height: 30px;
margin-top: 108px;
margin-right: 20px;
margin-left: 0px;
}
.pum-theme-126813 .pum-title, .pum-theme-default-theme .pum-title {
text-align: center;
font-size: 16px;
}
.pum-content .pt-cv-textbelow .pt-cv-carousel-caption {
position: relative;
margin: 0;
top: 0;
left: 0;
right: 0;
padding-top: 0px;
padding-bottom: 5px;
color: inherit;
}
.pum-content img {
margin-bottom: 10px !important;
}
.pum-container {
}
.pum-theme-126813 .pum-container, .pum-theme-default-theme .pum-container {
border: 0px !important;
box-shadow: none !important;
padding-right: 20px !important;
}
</style>
</head>
<body class="wp-singular post-template-default single single-post postid-186658 single-format-standard wp-theme-genesis wp-child-theme-genesis-devops tribe-no-js mega-menu-topmenu blogs business-of-devops contributed-content social-facebook social-linkedin social-x custom-header header-image header-full-width content-sidebar elementor-default elementor-kit-134475" itemscope itemtype="https://schema.org/WebPage"><div class="header-ad" class="widget-area"><section id="text-101" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div class="new-header">
<div class="logo-area"><a href="https://devops.com/"><img decoding="async" src="https://devops.com/wp-content/uploads/2025/02/cropped-devops-logo.png" /></a></div>
<div class="widget-area header-widget-area"><!-- /80877830/DO_header-right --></p>
<div id="div-gpt-ad-1494599233432-0" style="min-width: 320px; min-height: 50px;"><script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494599233432-0'); });
</script></div>
</div>
<p><!-- end widget area--></p>
</div>
<p><!-- end header--></p>
</div>
</div></section>
<section id="custom_html-92" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><h1 class="newsletter">
Sign up for our newsletter!<br /><span class="news-text">Stay informed on the latest DevOps news</span>
</h1>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script>
<script>
hbspt.forms.create({
portalId: "1628905",
formId: "d9434e0c-c51c-4ccd-9ea5-54509a040161"
});
</script></div></div></section>
</div><!-- /80877830/DevOps.com_OOP -->
<div id='div-gpt-ad-1494947147258-0'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494947147258-0'); });
</script>
</div><div class="site-container"><header class="site-header" itemscope itemtype="https://schema.org/WPHeader"><div class="wrap"><div class="title-area"><p class="site-title" itemprop="headline"><a href="https://devops.com/">DevOps.com</a></p></div><div id="mega-menu-wrap-topmenu" class="mega-menu-wrap"><div class="mega-menu-toggle"><div class="mega-toggle-blocks-left"><div class='mega-toggle-block mega-menu-toggle-block mega-toggle-block-1' id='mega-toggle-block-1'><span aria-expanded="false" aria-haspopup="true" role="button" class='mega-toggle-label'><span class='mega-toggle-label-closed'></span><span class='mega-toggle-label-open'></span></span></div><div class='mega-toggle-block mega-spacer-block mega-toggle-block-2' id='mega-toggle-block-2'></div><div class='mega-toggle-block mega-search-block mega-toggle-block-3' id='mega-toggle-block-3'><div class='mega-search-wrap'><form class='mega-search expand-to-right mega-search-closed' action='https://devops.com/'>
<span class='dashicons dashicons-search search-icon'></span>
<input type='submit' value='Search'>
<input type='text' aria-label='Search' data-placeholder='Search' name='s' />
</form></div></div></div><div class="mega-toggle-blocks-center"></div><div class="mega-toggle-blocks-right"></div></div><ul id="mega-menu-topmenu" class="mega-menu max-mega-menu mega-menu-horizontal mega-no-js" data-event="hover_intent" data-effect="fade_up" data-effect-speed="200" data-effect-mobile="disabled" data-effect-speed-mobile="0" data-panel-width=".wrap" data-mobile-force-width="body" data-second-click="close" data-document-click="collapse" data-vertical-behaviour="accordion" data-breakpoint="600" data-unbind="true" data-mobile-state="collapse_all" data-mobile-direction="vertical" data-mobile-back-text="{parent_title}"><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129359" id="mega-menu-item-129359"><a class="mega-menu-link" href="#" aria-expanded="false" aria-controls="mega-sub-menu-129359">Latest<span class="mega-indicator" aria-hidden="true"></span></a>
<ul class="mega-sub-menu" id='mega-sub-menu-129359'>
<li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-current-post-ancestor mega-current-menu-parent mega-current-post-parent mega-menu-item-129361" id="mega-menu-item-129361"><a class="mega-menu-link" href="https://devops.com/category/blogs/">Articles</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129362" id="mega-menu-item-129362"><a class="mega-menu-link" href="https://devops.com/category/features/">Features</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-130105" id="mega-menu-item-130105"><a class="mega-menu-link" href="https://devops.com/most-read/">Most Read</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129363" id="mega-menu-item-129363"><a class="mega-menu-link" href="https://devops.com/category/news/">News</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129364" id="mega-menu-item-129364"><a class="mega-menu-link" href="https://devops.com/category/press-releases/">News Releases</a></li></ul>
</li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-hide-on-desktop mega-menu-item-129549" id="mega-menu-item-129549"><a class="mega-menu-link" href="#" aria-expanded="false" aria-controls="mega-sub-menu-129549">Topics<span class="mega-indicator" aria-hidden="true"></span></a>
<ul class="mega-sub-menu" id='mega-sub-menu-129549'>
<li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129550" id="mega-menu-item-129550"><a class="mega-menu-link" href="https://devops.com/category/blogs/ai/">AI</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129551" id="mega-menu-item-129551"><a class="mega-menu-link" href="https://devops.com/category/blogs/continuous-delivery/">Continuous Delivery</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129552" id="mega-menu-item-129552"><a class="mega-menu-link" href="https://devops.com/category/blogs/continuous-testing/">Continuous Testing</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129554" id="mega-menu-item-129554"><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-in-the-cloud/">Cloud</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129553" id="mega-menu-item-129553"><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-culture/">Culture</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-155962" id="mega-menu-item-155962"><a class="mega-menu-link" href="https://devops.com/category/blogs/data-ops/">DataOps</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129557" id="mega-menu-item-129557"><a class="mega-menu-link" href="https://devops.com/category/blogs/devsecops/">DevSecOps</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129558" id="mega-menu-item-129558"><a class="mega-menu-link" href="https://devops.com/category/blogs/enterprise-devops/">Enterprise DevOps</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129559" id="mega-menu-item-129559"><a class="mega-menu-link" href="https://devops.com/category/blogs/leadership-suite/">Leadership Suite</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129555" id="mega-menu-item-129555"><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-practice/">DevOps Practice</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129560" id="mega-menu-item-129560"><a class="mega-menu-link" href="https://devops.com/category/blogs/roelbob/">ROELBOB</a></li><li class="mega-menu-item mega-menu-item-type-taxonomy mega-menu-item-object-category mega-menu-item-129556" id="mega-menu-item-129556"><a class="mega-menu-link" href="https://devops.com/category/blogs/devops-toolbox/">DevOps Toolbox</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-134328" id="mega-menu-item-134328"><a class="mega-menu-link" href="https://devops.com/it-as-code/">IT as Code</a></li></ul>
</li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-148119" id="mega-menu-item-148119"><a class="mega-menu-link" href="#" aria-expanded="false" aria-controls="mega-sub-menu-148119">Videos/Podcasts<span class="mega-indicator" aria-hidden="true"></span></a>
<ul class="mega-sub-menu" id='mega-sub-menu-148119'>
<li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-156208" id="mega-menu-item-156208"><a target="_blank" class="mega-menu-link" href="https://www.techstrongpodcasts.com">Techstrong.tv Podcast</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-157038" id="mega-menu-item-157038"><a target="_blank" class="mega-menu-link" href="https://www.twitch.tv/techstrongtv">Techstrong.tv - Twitch</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-148118" id="mega-menu-item-148118"><a class="mega-menu-link" href="https://devops.com/devops-unbound/">DevOps Unbound</a></li></ul>
</li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129366" id="mega-menu-item-129366"><a class="mega-menu-link" href="#" aria-expanded="false" aria-controls="mega-sub-menu-129366">Webinars<span class="mega-indicator" aria-hidden="true"></span></a>
<ul class="mega-sub-menu" id='mega-sub-menu-129366'>
<li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129367" id="mega-menu-item-129367"><a target="_blank" class="mega-menu-link" href="https://techstronglearning.com/#upcoming">Upcoming</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-189495" id="mega-menu-item-189495"><a target="_blank" class="mega-menu-link" href="https://techstronglearning.com/topics/#cat-devops">On-Demand Webinars</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-159824" id="mega-menu-item-159824"><a class="mega-menu-link" href="https://devops.com/webinars/month/">Calendar View</a></li></ul>
</li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129369" id="mega-menu-item-129369"><a class="mega-menu-link" href="https://devops.com/library">Library</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129373" id="mega-menu-item-129373"><a class="mega-menu-link" href="#" aria-expanded="false" aria-controls="mega-sub-menu-129373">Events<span class="mega-indicator" aria-hidden="true"></span></a>
<ul class="mega-sub-menu" id='mega-sub-menu-129373'>
<li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-143358" id="mega-menu-item-143358"><a class="mega-menu-link" href="https://www.techstrongevents.com/">Upcoming Events</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-143359" id="mega-menu-item-143359"><a class="mega-menu-link" href="https://www.techstrongevents.com/virtual/recent-events">On-Demand Events</a></li></ul>
</li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-158236" id="mega-menu-item-158236"><a class="mega-menu-link" href="https://devops.com/category/sponsored-content">Sponsored Content</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-has-children mega-align-bottom-left mega-menu-flyout mega-menu-item-129382" id="mega-menu-item-129382"><a class="mega-menu-link" href="#" aria-expanded="false" aria-controls="mega-sub-menu-129382">Related Sites<span class="mega-indicator" aria-hidden="true"></span></a>
<ul class="mega-sub-menu" id='mega-sub-menu-129382'>
<li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129383" id="mega-menu-item-129383"><a target="_blank" class="mega-menu-link" href="https://techstronggroup.com">Techstrong Group</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129384" id="mega-menu-item-129384"><a target="_blank" class="mega-menu-link" href="https://cloudnativenow.com/">Cloud Native Now</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129385" id="mega-menu-item-129385"><a target="_blank" class="mega-menu-link" href="https://securityboulevard.com">Security Boulevard</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-174294" id="mega-menu-item-174294"><a class="mega-menu-link" href="https://platformengineering.com/">Platform Engineering</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129386" id="mega-menu-item-129386"><a target="_blank" class="mega-menu-link" href="https://techstrongresearch.com/">Techstrong Research</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129391" id="mega-menu-item-129391"><a target="_blank" class="mega-menu-link" href="https://devopsdozen.com">DevOps Dozen</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129388" id="mega-menu-item-129388"><a target="_blank" class="mega-menu-link" href="https://www.youtube.com/channel/UC-zcE077X98oTEDPwKkDQxQ">DevOps TV</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-156209" id="mega-menu-item-156209"><a target="_blank" class="mega-menu-link" href="https://techstrong.tv/">Techstrong TV</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-129387" id="mega-menu-item-129387"><a target="_blank" class="mega-menu-link" href="https://www.techstrongpodcasts.com">Techstrong.tv Podcast</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-157037" id="mega-menu-item-157037"><a target="_blank" class="mega-menu-link" href="https://www.twitch.tv/techstrongtv">Techstrong.tv - Twitch</a></li></ul>
</li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-134553" id="mega-menu-item-134553"><a target="_blank" class="mega-menu-link" href="https://techstronggroup.com/assets/Techstrong-media-kit-26.pdf">Media Kit</a></li><li class="mega-menu-item mega-menu-item-type-post_type mega-menu-item-object-page mega-menu-item-146059" id="mega-menu-item-146059"><a class="mega-menu-link" href="https://devops.com/about/">About</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-155727" id="mega-menu-item-155727"><a class="mega-menu-link" href="https://techstronggroup.com/tellmemore/">Sponsor</a></li><li class="mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-has-icon mega-icon-left mega-hide-text mega-item-align-right mega-menu-item-129582" id="mega-menu-item-129582"><div class='mega-search-wrap mega-static'> <form class='mega-search mega-search-open' role='search' action='https://devops.com/'><input type='submit' value='Search'><input type='text' role='searchbox' id='mega-search-129582' aria-label='Search...' name='s' autocomplete='off' placeholder='Search...' /><span tabindex='0' role='button' class='dashicons dashicons-search search-icon' aria-controls='mega-search-129582' aria-label='Search'></span> </form></div></li></ul></div></div></header><nav class="nav-primary" aria-label="Main" itemscope itemtype="https://schema.org/SiteNavigationElement"><div class="wrap"><ul id="menu-csc-main-navigation" class="menu genesis-nav-menu menu-primary"><li id="menu-item-129432" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129432"><a href="https://devops.com/category/blogs/ai/" itemprop="url"><span itemprop="name">AI</span></a></li>
<li id="menu-item-2454" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2454"><a href="https://devops.com/category/blogs/devops-in-the-cloud/" itemprop="url"><span itemprop="name">Cloud</span></a></li>
<li id="menu-item-30251" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-30251"><a href="https://devops.com/category/blogs/continuous-delivery/" itemprop="url"><span itemprop="name">CI/CD</span></a></li>
<li id="menu-item-129371" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-129371"><a href="https://devops.com/category/blogs/continuous-testing/" itemprop="url"><span itemprop="name">Continuous Testing</span></a></li>
<li id="menu-item-155963" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-155963"><a href="https://devops.com/category/blogs/data-ops/" itemprop="url"><span itemprop="name">DataOps</span></a></li>
<li id="menu-item-129349" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129349"><a href="https://devops.com/category/blogs/devsecops/" itemprop="url"><span itemprop="name">DevSecOps</span></a></li>
<li id="menu-item-154132" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-154132"><a href="https://devops.com/devops-onramp/" itemprop="url"><span itemprop="name">DevOps Onramp</span></a></li>
<li id="menu-item-157571" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-157571"><a href="https://devops.com/category/blogs/platform-engineering" itemprop="url"><span itemprop="name">Platform Engineering</span></a></li>
<li id="menu-item-141617" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-141617"><a href="https://devops.com/category/blogs/low-code-no-code/" itemprop="url"><span itemprop="name">Low-Code/No-Code</span></a></li>
<li id="menu-item-134327" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-134327"><a href="https://devops.com/it-as-code/" itemprop="url"><span itemprop="name">IT as Code</span></a></li>
<li id="menu-item-129563" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-129563"><a href="#" itemprop="url"><span itemprop="name">More</span></a>
<ul class="sub-menu">
<li id="menu-item-169899" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-169899"><a href="https://devops.com/aws-serverless/" itemprop="url"><span itemprop="name">Serverless on AWS</span></a></li>
<li id="menu-item-166009" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-166009"><a href="https://devops.com/builder-community-hub/" itemprop="url"><span itemprop="name">Builder Community Hub</span></a></li>
<li id="menu-item-129564" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129564"><a href="https://devops.com/category/blogs/application-performance-managementmonitoring/" itemprop="url"><span itemprop="name">Application Performance Management/Monitoring</span></a></li>
<li id="menu-item-129546" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129546"><a href="https://devops.com/category/blogs/devops-culture/" itemprop="url"><span itemprop="name">Culture</span></a></li>
<li id="menu-item-129547" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-129547"><a href="https://devops.com/category/blogs/enterprise-devops/" itemprop="url"><span itemprop="name">Enterprise DevOps</span></a></li>
<li id="menu-item-117163" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-117163"><a href="https://devops.com/category/blogs/roelbob/" itemprop="url"><span itemprop="name">ROELBOB</span></a></li>
</ul>
</li>
</ul></div></nav><div class="site-inner"><div class="content-sidebar-wrap"><main class="content"><div id="sky">
<div class="leftad" style="top: 156px; margin-left: -740px; width: 160px;height: 1080px;position: fixed;left: 50%;" >
<!-- /80877830/DO_SkyScraper_Left -->
<div id='div-gpt-ad-1542202470575-0' style='height:600px; width:160px;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1542202470575-0'); });
</script>
</div>
</div>
<div class="rightad" style="top: 156px; margin-left: 580px;width: 160px;height: 1080px;position: fixed;left: 50%;" >
<!-- /80877830/DO_SkyScraper_Right -->
<div id='div-gpt-ad-1542202633557-0' style='height:600px; width:160px;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1542202633557-0'); });
</script>
</div>
</div>
</div><article class="post-186658 post type-post status-publish format-standard has-post-thumbnail category-blogs category-business-of-devops category-contributed-content category-social-facebook category-social-linkedin category-social-x tag-asynchronous-processing tag-atomic-task-claiming tag-backend-engineering tag-database-backed-queue tag-dead-letter-queue tag-distributed-systems tag-go-microservices tag-idempotency tag-message-broker-alternative tag-microservices-architecture tag-mongodb-performance tag-mongodb-polling-queue tag-notification-architecture tag-notification-service tag-push-notifications tag-rabbitmq-scaling tag-retry-strategy tag-ruby-monolith tag-sms-delivery tag-wheely-engineering entry" itemscope itemtype="https://schema.org/CreativeWork"><header class="entry-header"><h1 class="entry-title" itemprop="headline">When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling</h1>
<p class="entry-meta">By: <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/pavel-zavialov/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Pavel Zavialov</span></a></span> on <time class="entry-time" itemprop="datePublished" datetime="2026-07-24T01:01:45-04:00">July 24, 2026</time> </p></header><div class="entry-content" itemprop="text"><section class="article-key-takeaways" aria-labelledby="article-key-takeaways-heading"><h2 id="article-key-takeaways-heading">TL;DR &mdash; Key Takeaways</h2><div class="article-key-takeaways__content"><ul>
<li data-section-id="m0jdbj" data-start="604" data-end="831">Wheely extracted push, SMS and status notifications from its Ruby monolith into a centralized, stateless Go service after fragmented delivery logic became difficult to scale and manage.</li>
<li data-section-id="thvfob" data-start="832" data-end="1091">When its shared RabbitMQ cluster struggled with large campaign spikes, the team used MongoDB as a persistent polling queue with atomic task claiming, retries, exponential backoff, idempotency and dead-letter handling.</li>
<li data-section-id="1619u4q" data-start="1092" data-end="1348">The new architecture handled several times the previous peak volume without broker-related delivery failures, but introduced polling latency, database overhead and additional functionality for the team to maintain</li>
</ul>
</div></section><p>A back-end team extracted notification delivery from a large Ruby monolith into a centralized Go service, only to discover that their shared RabbitMQ cluster could not reliably support the new workload. Here&#8217;s how they solved the problem using MongoDB as a polling queue and the trade-offs that came with it.</p><h3>The Scaling Problem Inside the Monolith</h3><p>Back in 2019, the engineering team at Wheely, a popular ride-hailing platform, had a coordination problem that emerged with the product. User-facing notifications such as push alerts, SMS confirmations and status updates were scattered around the large Ruby monolith. Various parts of the codebase made direct attempts to send messages without a shared logic, unified retry strategy and consistent way to track delivery outcomes. As the system continued to grow, new back-end microservices were introduced, with each one requiring its own path to the user&#8217;s device.</p><p>Push campaigns made things worse. Sending thousands of notifications at once exposed limits that routine traffic had never revealed. The monolith wasn&#8217;t designed as a notification delivery system, and scaling it that way implied additional risks to the core business logic already implemented there.</p><p>The team needed a dedicated, centralized service that could serve as a single point of entry for all outbound communications, both for the monolith and future microservices alike.</p><h3>Why the Existing Message Broker Wasn’t Enough</h3><p>The natural architecture for this kind of service involves a message broker. The monolith and microservices publish notification events, workers consume them and delivery happens asynchronously. The team&#8217;s infrastructure already had RabbitMQ in place, so the initial design assumed it would handle this workload.</p><p>In practice, the shared RabbitMQ cluster proved unreliable under the notification service&#8217;s workload. Unstable behavior of the cluster during large push campaigns caused several delivery failures, which were difficult to diagnose, hard to retry correctly and disruptive to other services that used the same broker.</p><h3>RabbitMQ Internals</h3><p>To understand why RabbitMQ turned out to be a bottleneck, it&#8217;s worth taking a quick look at its internal architecture.</p><p>RabbitMQ is built on top of the Erlang virtual machine: BEAM, where almost every broker component runs as a separate Erlang process. Queues, connections, channels and consumers are independent lightweight processes, communicating with each other via messaging.</p><p>This model provides strong fault tolerance and scalability in various scenarios. However, under a very heavy load, the overhead of managing these processes can become noticeable. Moreover, RabbitMQ is also sensitive to the type of load it receives.</p><ul><li>The first factor is the number of queues. Each queue is a separate Erlang process with its own internal data structures. As the number of queues increases, more memory is used, the Erlang VM scheduler starts working harder and there is an additional operational overhead from operating the broker.</li><li>Second, the length of the queue matters. RabbitMQ was designed as a system to process continuous message flow, not to store very large backlogs for long periods. If producers write faster than consumers can read, the queue starts growing quickly. It results in higher memory usage, puts additional pressure on the disk for persistent messages and significantly increases delivery delay.</li><li>Finally, RabbitMQ clusters are sensitive to network conditions. Replication between nodes, synchronization of queues after recovery and network latency can all significantly impact the system&#8217;s performance and cluster recovery time after failures.</li></ul><p>These characteristics are not flaws in RabbitMQ; they simply define the type of loads it is best suited to handle. When designing a high-load system, it is important to consider not only the broker&#8217;s capabilities but also the workload profile it will need to support.</p><h3>Why RabbitMQ Was No Longer the Right Fit</h3><p>RabbitMQ had handled its role well for a long period. The problem was not with the broker itself, but the change in workload that took place over time.</p><ul><li>First, the system was increasingly dealing with large-scale push and SMS campaigns. A single campaign generated tens of thousands of individual messages, all arriving in RabbitMQ practically at the same time. This created sharp load spikes, made queues grow and increased delivery delays.</li><li>Second, some consumers were still running inside the Ruby monolith. Compared to the newer Go services, they were slower at processing messages, allowing queues to accumulate much faster than they could be drained. Simply increasing the number of consumers wasn&#8217;t a practical option. Performance of the monolith had already become a limiting factor, and scaling it would have been complicated due to the current system’s architecture.</li><li>Finally, RabbitMQ served as a shared infrastructure component for various services. Every new communication-related feature added load to the same cluster, making it an increasingly critical point of failure.</li></ul><h3>Extracting a Centralized Go Notification Service</h3><p>The new service was implemented as a single, stateless API responsible for accepting send requests and handling everything else: Routing to the target provider, retrying failed deliveries and recording the outcome. The monolith and other microservices sent requests to a single endpoint without having to manage the delivery process themselves.</p><p>Go was chosen for the implementation of the new service. It was containerized and deployed using Docker on the existing AWS infrastructure, consistent with the rest of the microservices on the platform.</p><p>On the mobile side, the service integrates with the Apple Push Notification service (APNs) and Firebase Cloud Messaging (FCM). SMS delivery was handled via integration with one or more third-party providers.</p><h3>Using MongoDB as a Polling Queue</h3><p>Since it was not possible to rely on any broker, it was necessary to find some alternative way of buffering delivery tasks and processing them. The alternative chosen by the team was the usage of MongoDB as a polling queue. MongoDB was one of the tools used in the current stack.</p><p>When a notification request arrives, the service writes a document to a dedicated MongoDB collection. Each document represented a single delivery task and contained all the information needed to be processed independently: The recipient, the message payload, the channel, the current status and metadata to retry tracking.</p><p>A simplified document life cycle looked like this:</p><p><code>pending → processing → delivered</code></p><p><code> ↘ retry → (back to pending, up to N attempts)</code></p><p><code> ↘ failed (dead-letter)</code></p><p>Workers polled the collection at short intervals, querying for documents in the pending state. To process two workers trying to process the same task, MongoDB’s atomic <code>findOneAndUpdate</code> operation was used to transition a document from <code>pending</code> to <code>processing</code> in a single step. Only one worker succeeded in claiming any given record.</p><p>Retry policy was embedded in the document itself. Each failed attempt incremented a counter, as well as updated a retry_after timestamp using an exponential backoff strategy. Workers excluded documents whose retry_after time had not yet passed. Documents that reached the maximum retry count were moved to the failed state rather than being tried to be processed again.</p><p>Idempotency was maintained by creating a stable identifier for each delivery task when it was created. In case the same request arrived twice due to the retry on the caller&#8217;s side, the service could detect the duplicate before writing a second document.</p><p>Processed and failed records were either archived into another collection or dropped after the retention window.</p><p>Index design was critical. The collection required compound indexes covering status, channel and scheduling fields for efficient polling queries. Without the right indexes, polling at scale would have caused unacceptable read load on MongoDB.</p><h3>Optimizing MongoDB for a Write-Heavy Workload</h3><p>Using MongoDB as a persistent queue required careful data model design.</p><ul><li>First, we separated the queue into a write-heavy collection, fully isolated from the rest of the application data. This way, it was possible to optimize it independently by choosing its own indexes, configuring a dedicated retention policy and ensuring that intensive writes did not affect the rest of the system.</li><li>At the same time, we attempted to implement an append-heavy data model. Messages were created once and then updated just a few times while moving through the delivery pipeline before being either archived or deleted. This life cycle aligned well with MongoDB’s strengths and helped maintain stable write performance.</li><li>Queue documents were intentionally kept compact. They included only information needed for routing, delivery and status tracking. This reduced the amount of data transferred, lowered disk and replication load and allowed more of the working set to fit in memory.</li><li>Indexes required particular attention. We deliberately limited them to those needed for efficient polling and status-based lookups. Any additional index increases the write cost, as MongoDB must update it on every insert or update. For write-heavy workloads, keeping the number of indexes minimal becomes more important than maximizing read performance.</li><li>Messages were polled in batches instead of one at a time. During each poll cycle, the worker would claim only a certain number of tasks, which significantly reduces the number of database operations, thereby making the load more predictable in case of many incoming messages.</li><li>Finally, to prevent the collection from growing indefinitely, we either periodically archived processed messages or automatically removed them using TTL indexes. This kept both the collection and its indexes relatively small, improving write speed and the efficiency of polling queries.</li></ul><p>It was the combination of these decisions that made MongoDB an efficient and predictable persistent queue for this workload. Observability relied on tooling already in use at Wheely: The ELK stack for log aggregation and Datadog for metrics and alerting.</p><h3>The Trade-Offs We Accepted</h3><p>MongoDB was not built to be a message broker, and using it as one comes at a cost.</p><p>During each poll cycle, database read operations were generated regardless of whether the queue was empty. At scale, it added measurable load to MongoDB. This load was then associated directly with notifications throughput instead of being isolated in a dedicated broker. Despite a careful index design and a sensible polling interval, it was still possible to reduce but not eliminate this overhead.</p><p>Polling introduces inherent latency. A message written to the queue would not be processed until the next poll cycle. It is a reasonable decision for most notification use cases, but it was a deliberate compromise compared to the near-immediate delivery that one can expect from a properly functioning broker.</p><p>The team also had to implement, test and maintain functionality that mature message brokers typically provide out of the box: Atomic claiming, retry scheduling, dead-letter handling, duplicate suppression and observability. Each of these capabilities added complexity to the service itself.</p><p>There was also an organizational risk. Solutions described as temporary often become permanent. Teams adopting this pattern should clearly define under what conditions that would justify migrating to a dedicated broker, and they should build sufficient observability to detect when those conditions are met.</p><p>A dedicated message broker continues to be the right choice in the case of a stable infrastructure, when the team has the operational expertise to operate it and the delivery latency requirements are strict. This architectural approach was chosen based on specific sets of constraints, not as a general recommendation.</p><h3>Operational Results and Lessons</h3><p>After the migration, the service handled notification volumes several times higher than the previous peak without delivery failures caused by broker instability. The service achieved a much better delivery success rate and now serves as the shared communication layer for multiple back-end services across the platform.</p><p>Three lessons worth carrying forward:</p><ul><li>First, architecture must reflect the maturity of the infrastructure it runs on. A theoretically correct design built on an operationally unreliable dependency can perform worse than a pragmatic design built on infrastructure the team already operates well.</li><li>Second, database polling can be a viable delivery mechanism, but it requires a thorough implementation. Idempotence, atomic claiming, backoff, dead-letter handling and observability are not optional additions; but are the key to making the pattern safe. Skipping even one of them leads to failure modes that are difficult to diagnose under load.</li><li>Third, extracting a shared capability from a monolith is an operational change, not just a code refactoring exercise. The migration required a careful cutover strategy to avoid interrupting live delivery. The organizational and operational work was at least as significant as the engineering work.</li></ul><h3>Architecture Diagram</h3>[Monolith/Microservices]<p>│ send request</p><p>▼</p>[Notification Service API]<p>│ write task</p><p>▼</p>[MongoDB — pending queue]<p>│ poll + claim (findOneAndUpdate)</p><p>▼</p>[Worker pool]<p>│ │</p><p>▼ ▼</p>[APNs/FCM] [SMS Provider(s)]<p>│ update status</p><p>▼</p>[MongoDB — delivered/retry/failed] <!--begin code --> <div class="pp-multiple-authors-boxes-wrapper pp-multiple-authors-wrapper pp-multiple-authors-layout-simple_list multiple-authors-target-the-content box-post-id-170965 box-instance-id-1 ppma_boxes_170965" data-post_id="170965" data-instance_id="1" data-additional_class="pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content" data-original_class="pp-multiple-authors-boxes-wrapper pp-multiple-authors-wrapper box-post-id-170965 box-instance-id-1"> <span class="ppma-layout-prefix"></span> <div class="ppma-author-category-wrap"> <span class="ppma-category-group ppma-category-group-1 category-index-0"> <ul class="pp-multiple-authors-boxes-ul author-ul-0"> <li class="pp-multiple-authors-boxes-li author_index_0 author_pavel-zavialov has-avatar"> <div class="pp-author-boxes-avatar"> <div class="avatar-image"> <img alt='Pavel Zavialov' src='https://devops.com/wp-content/uploads/2026/07/1673451735387-1.jpg' srcset='https://devops.com/wp-content/uploads/2026/07/1673451735387-1.jpg 2x' class='avatar avatar-35 photo' height='35' width='35' /> </div> </div> <div class="pp-author-boxes-avatar-details"> <div class="pp-author-boxes-name multiple-authors-name"><a href="https://devops.com/author/pavel-zavialov/" rel="author" title="Pavel Zavialov" class="author url fn">Pavel Zavialov</a></div> </div> </li> </ul> </span> </div> <span class="ppma-layout-suffix"></span> </div> <!--end code --> <div class="spu-placeholder" style="display:none"></div><div class="addtoany_share_save_container addtoany_content addtoany_content_bottom"><div class="a2a_kit a2a_kit_size_10 addtoany_list" data-a2a-url="https://devops.com/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling/" data-a2a-title="When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling"><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share"></a></div></div><!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description rdf:about="https://devops.com/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling/"
dc:identifier="https://devops.com/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling/"
dc:title="When the Message Broker Becomes the Bottleneck: Scaling Push and SMS With MongoDB Polling"
trackback:ping="https://devops.com/when-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling/trackback/" />
</rdf:RDF>-->
<section class="article-faq" aria-labelledby="article-faq-heading"><h2 id="article-faq-heading">Frequently Asked Questions</h2><div class="article-faq__items"><details class="article-faq__item"><summary class="article-faq__question"><span>Wheely extracted push, SMS and status notifications from its Ruby monolith into a centralized, stateless Go service after fragmented delivery logic became difficult to scale and manage. When its shared RabbitMQ cluster struggled with large campaign spikes, the team used MongoDB as a persistent polling queue with atomic task claiming, retries, exponential backoff, idempotency and dead-letter handling. The new architecture handled several times the previous peak volume without broker-related delivery failures, but introduced polling latency, database overhead and additional functionality for the team to maintain</span><span class="article-faq__icon" aria-hidden="true"></span></summary><div class="article-faq__answer"><p>Notification logic was scattered throughout the monolith, with no unified retry strategy, shared delivery rules or consistent method for tracking outcomes. A centralized service gave the monolith and newer microservices one entry point for outbound communications.</p>
</div></details><details class="article-faq__item"><summary class="article-faq__question"><span>Why wasn’t RabbitMQ suitable for the new workload?</span><span class="article-faq__icon" aria-hidden="true"></span></summary><div class="article-faq__answer"><p>Large push and SMS campaigns generated tens of thousands of messages almost simultaneously. This caused sharp traffic spikes, growing queues and delivery delays, while slower consumers inside the monolith struggled to drain the backlog.</p>
</div></details><details class="article-faq__item"><summary class="article-faq__question"><span>How did MongoDB function as a notification queue?</span><span class="article-faq__icon" aria-hidden="true"></span></summary><div class="article-faq__answer"><p>Each delivery request was stored as a document. Workers polled for pending tasks and used MongoDB’s atomic findOneAndUpdate operation to claim them, preventing multiple workers from processing the same notification. Failed tasks were rescheduled using exponential backoff or moved to a failed state after reaching the retry limit.</p>
</div></details></div></section><div class="a2a_kit a2a_kit_size_32 a2a_floating_style a2a_vertical_style" data-a2a-scroll-show="100" style="margin-left:-100px;top:300px;background-color:transparent"><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling%20-%20DevOps.com" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling%20-%20DevOps.com" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling%20-%20DevOps.com" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling%20-%20DevOps.com" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fdevops.com%2Fwhen-the-message-broker-becomes-the-bottleneck-scaling-push-and-sms-with-mongodb-polling%2F&amp;linkname=When%20the%20Message%20Broker%20Becomes%20the%20Bottleneck%3A%20Scaling%20Push%20and%20SMS%20With%20MongoDB%20Polling%20-%20DevOps.com" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share"></a></div></div><footer class="entry-footer"><p class="entry-meta"><span class="entry-categories">Filed Under: <a href="https://devops.com/category/blogs/" rel="category tag">Blogs</a>, <a href="https://devops.com/category/blogs/business-of-devops/" rel="category tag">Business of DevOps</a>, <a href="https://devops.com/category/contributed-content/" rel="category tag">Contributed Content</a>, <a href="https://devops.com/category/social-facebook/" rel="category tag">Social - Facebook</a>, <a href="https://devops.com/category/social-linkedin/" rel="category tag">Social - LinkedIn</a>, <a href="https://devops.com/category/social-x/" rel="category tag">Social - X</a></span> <span class="entry-tags">Tagged With: <a href="https://devops.com/tag/asynchronous-processing/" rel="tag">asynchronous processing</a>, <a href="https://devops.com/tag/atomic-task-claiming/" rel="tag">atomic task claiming</a>, <a href="https://devops.com/tag/backend-engineering/" rel="tag">backend engineering</a>, <a href="https://devops.com/tag/database-backed-queue/" rel="tag">database-backed queue</a>, <a href="https://devops.com/tag/dead-letter-queue/" rel="tag">dead-letter queue</a>, <a href="https://devops.com/tag/distributed-systems/" rel="tag">distributed systems</a>, <a href="https://devops.com/tag/go-microservices/" rel="tag">Go microservices</a>, <a href="https://devops.com/tag/idempotency/" rel="tag">idempotency</a>, <a href="https://devops.com/tag/message-broker-alternative/" rel="tag">message broker alternative</a>, <a href="https://devops.com/tag/microservices-architecture/" rel="tag">microservices architecture</a>, <a href="https://devops.com/tag/mongodb-performance/" rel="tag">MongoDB performance</a>, <a href="https://devops.com/tag/mongodb-polling-queue/" rel="tag">MongoDB polling queue</a>, <a href="https://devops.com/tag/notification-architecture/" rel="tag">notification architecture</a>, <a href="https://devops.com/tag/notification-service/" rel="tag">notification service</a>, <a href="https://devops.com/tag/push-notifications/" rel="tag">push notifications</a>, <a href="https://devops.com/tag/rabbitmq-scaling/" rel="tag">RabbitMQ scaling</a>, <a href="https://devops.com/tag/retry-strategy/" rel="tag">retry strategy</a>, <a href="https://devops.com/tag/ruby-monolith/" rel="tag">Ruby monolith</a>, <a href="https://devops.com/tag/sms-delivery/" rel="tag">SMS delivery</a>, <a href="https://devops.com/tag/wheely-engineering/" rel="tag">Wheely engineering</a></span></p></footer></article><div class="after-entry widget-area"><section id="text-84" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865"
crossorigin="anonymous"></script>
<!-- Bottom Of Post Pages -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-2091799172090865"
data-ad-slot="9521935058"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
</div></section>
</div><div class="adjacent-entry-pagination pagination"><div class="pagination-previous alignleft"><a href="https://devops.com/fakegit-targets-ai-coding-agents-with-malicious-github-repos/" rel="prev">&#x000AB; FakeGit Targets AI Coding Agents with Malicious GitHub Repos</a></div><div class="pagination-next alignright"><a href="https://devops.com/ai-assisted-development-under-deadline-what-it-takes-to-ship-production-code-on-an-unfamiliar-stack/" rel="next">AI-Assisted Development Under Deadline: What It Takes to Ship Production Code on an Unfamiliar Stack &#x000BB;</a></div></div></main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar" itemscope itemtype="https://schema.org/WPSideBar"><section id="custom_html-55" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Techstrong TV</h4>
<div class="textwidget custom-html-widget"><div style="padding:56.25% 0 0 0;position:relative;"><iframe
src="https://vimeo.com/event/4046309/embed?autoplay=1&muted=1&loop=1"
frameborder="0"
allow="autoplay; fullscreen"
allowfullscreen
style="position:absolute;top:0;left:0;width:100%;height:100%;">
</iframe></div><div style="font-style:italic;font-size: 12px;text-align:center;">Click full-screen to enable volume control</div>
<center><a href="https://techstrong.tv/">Watch latest episodes and shows</a> </center></div></div></section>
<section id="custom_html-71" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Sign up for our Newsletter</h4>
<div class="textwidget custom-html-widget"><script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
hbspt.forms.create({
region: "na1",
portalId: "1628905",
formId: "d967bc1f-2d57-4dcf-861d-5930d7bea674"
});
</script></div></div></section>
<section id="custom_html-88" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Tech Field Day Events</h4>
<div class="textwidget custom-html-widget"><div style="padding:56.25% 0 0 0;position:relative;"><iframe src="https://vimeo.com/event/4565377/embed?muted=1" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe></div></div></div></section>
<section id="custom_html-56" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Upcoming Webinars</h4>
<div class="textwidget custom-html-widget"><center><div class="pt-cv-wrapper"><div class="pt-cv-view pt-cv-scrollable pt-cv-colsys pt-cv-center pt-cv-textbelow webinarslider" id="pt-cv-view-99c4ca3njg"><div data-id="pt-cv-page-1" class="pt-cv-page" data-cvc="1"><div id="6708c3culd" class="pt-cv-carousel pt-cv-slide" data-ride="cvcarousel" data-interval=7000>
<div class="carousel-inner"><div class="item active"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="185834"><a href="https://devops.com/webinars/185834/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img width="720" height="400" src="https://devops.com/wp-content/uploads/2026/06/2026.09.15-CheckmarX-Banner-720x400-1.png" class="pt-cv-thumbnail img-none" alt="The AppSec Overload Problem And Why Context Is the Cure" decoding="async" /></a>
<div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Tuesday, September 15, 2026 - 11:00 am EDT</div></div></div></div></div></div></div></div>
<div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="187116"><a href="https://devops.com/webinars/see-every-database-change-across-your-enterprise/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img width="1540" height="660" src="https://devops.com/wp-content/uploads/2026/08/2026.09.16-Liquibase-LandingPage-1540x660-1.png" class="pt-cv-thumbnail img-none" alt="See Every Database Change Across Your Enterprise" decoding="async" /></a>
<div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Wednesday, September 16, 2026 - 1:00 pm EDT</div></div></div></div></div></div></div></div>
<div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="186084"><a href="https://devops.com/webinars/kubernetes-ai-powering-the-next-generation-of-intelligent-infrastructure/" class="_blank pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_blank" ><img style="" src="https://devops.com/wp-content/plugins/pt-content-views-pro/public/assets/images/default_image.png" class="pt-cv-thumbnail img-none not-found" alt="Kubernetes &amp; AI: Powering the Next Generation of Intelligent Infrastructure" /></a>
<div class="pt-cv-carousel-caption"><div class="pt-cv-ctf-list" data-cvc="1"><div class="col-md-12 pt-cv-ctf-column"><div class="pt-cv-custom-fields pt-cv-ctf-_EventStartDate"><div class="pt-cv-ctf-value">Monday, September 21, 2026 - 1:00 pm EDT</div></div></div></div></div></div></div></div></div>
</div></div></div></div> <style type="text/css" id="pt-cv-inline-style-cd5b45ezq8">#pt-cv-view-99c4ca3njg .pt-cv-content-item { padding-left: 0px !important; }
#pt-cv-view-99c4ca3njg { margin-left: 0px !important; }
#pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { padding-left: 0px !important; }
#pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { left : 0px !important }
#pt-cv-view-99c4ca3njg .carousel-control.left { right : 35px }
#pt-cv-view-99c4ca3njg .row {margin: 0 0 !important}
#pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { background-color: #000000 !important; }
#pt-cv-view-99c4ca3njg .pt-cv-title a, #pt-cv-view-99c4ca3njg .panel-title { font-size: 20px !important; line-height: 1.3 !important; font-weight: 600 !important; }
#pt-cv-view-99c4ca3njg .pt-cv-content , #pt-cv-view-99c4ca3njg .pt-cv-content *:not(.pt-cv-readmore):not(style):not(script) { font-size: 16px !important; line-height: 1.3 !important; }
#pt-cv-view-99c4ca3njg .pt-cv-carousel-caption { background-color: #000000 !important; }
#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important; line-height: 1.3 !important; font-weight: 600 !important; }
@media (min-width: 768px) and (max-width: 991px) {#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important }}
@media (max-width: 767px) {#pt-cv-view-99c4ca3njg .pt-cv-custom-fields * { font-size: 12px !important }}
#pt-cv-view-99c4ca3njg .pt-cv-readmore { color: #ffffff !important; background-color: #00aeef !important; font-weight: 600 !important; }
#pt-cv-view-99c4ca3njg .pt-cv-readmore:hover { color: #ffffff !important; background-color: #00aeef !important; }
#pt-cv-view-99c4ca3njg { text-align: center; }</style>
</center></div></div></section>
<section id="custom_html-90" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Techstrong Gang Podcast</h4>
<div class="textwidget custom-html-widget"><iframe title="Techstrong Gang" allowtransparency="true" height="315" width="100%" style="border: none; min-width: min(100%, 430px);height:315px;" scrolling="no" data-name="pb-iframe-player" src="https://www.podbean.com/player-v2/?i=kurfj-114396d-pbblog-playlist&pbad=0&share=1&download=0&rtl=0&fonts=Arial&skin=1b1b1b&font-color=auto&logo_link=episode_page&order=episodic&limit=10&filter=all&ss=a713390a017602015775e868a2cf26b0&btn-skin=ff6d00&size=315" loading="lazy" allowfullscreen=""></iframe></div></div></section>
<section id="custom_html-82" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Agents of Dev Podcast</h4>
<div class="textwidget custom-html-widget"><iframe style="border: none; min-width: min(100%, 430px); height: 250px;" title="Agents of Dev - AI, Agent & Agentic Development" src="https://www.podbean.com/player-v2/?i=g74ad-14bcb15-pbblog-playlist&amp;pbad=0&amp;share=1&amp;download=0&amp;rtl=0&amp;fonts=Arial&amp;skin=1&amp;font-color=auto&amp;logo_link=episode_page&amp;order=episodic&amp;limit=10&amp;filter=all&amp;ss=a713390a017602015775e868a2cf26b0&amp;btn-skin=1b1b1b&amp;size=250" width="100%" height="250" scrolling="no" allowfullscreen="allowfullscreen" data-name="pb-iframe-player"></iframe></div></div></section>
<section id="custom_html-77" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865"
crossorigin="anonymous"></script>
<!-- Right Side Position 1 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-2091799172090865"
data-ad-slot="3999233378"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</div></div></section>
<section id="custom_html-75" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><h4 class="widget-title widgettitle">Press Releases</h4>
<div class="textwidget custom-html-widget"><div class="pt-cv-wrapper"><div class="pt-cv-view pt-cv-scrollable pt-cv-colsys pt-cv-center pt-cv-textbelow webinarslider" id="pt-cv-view-8990877amd"><div data-id="pt-cv-page-1" class="pt-cv-page" data-cvc="1"><div id="bf85108iep" class="pt-cv-carousel pt-cv-slide" data-ride="cvcarousel" data-interval=7000>
<div class="carousel-inner"><div class="item active"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="190182"><a href="https://devops.com/spycloud-2026-identity-threat-report-finds-non-human-identities-are-now-the-leading-path-into-the-enterprise/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1024" height="720" src="https://devops.com/wp-content/uploads/2026/09/Logo_Press_Release_1024x720_1788535831W7aLsMTYY5.jpg" class="pt-cv-thumbnail img-none" alt="SpyCloud 2026 Identity Threat Report Finds Non-Human Identities Are Now the Leading Path into the Enterprise" decoding="async" /></a>
<div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/spycloud-2026-identity-threat-report-finds-non-human-identities-are-now-the-leading-path-into-the-enterprise/" class="_self cvplbd" target="_self" >SpyCloud 2026 Identity Threat Report Finds Non-Human Identities Are Now the Leading Path into the Enterprise</a></h4></div></div></div></div>
<div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="190076"><a href="https://devops.com/reflectiz-launches-agentic-pentesting-for-websites-up-to-10x-coverage-vs-conventional-pentests/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1824" height="1088" src="https://devops.com/wp-content/uploads/2026/09/image_5_1788857508pakUwabkhz.jpg" class="pt-cv-thumbnail img-none" alt="Reflectiz Launches Agentic Pentesting for Websites: Up to 10x Coverage vs Conventional Pentests" decoding="async" /></a>
<div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/reflectiz-launches-agentic-pentesting-for-websites-up-to-10x-coverage-vs-conventional-pentests/" class="_self cvplbd" target="_self" >Reflectiz Launches Agentic Pentesting for Websites: Up to 10x Coverage vs Conventional Pentests</a></h4></div></div></div></div>
<div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="190069"><a href="https://devops.com/mars-security-launches-real-time-intel-to-detection-engine-that-turns-live-threat-intelligence-into-backtested-detections-in-minutes/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1619" height="971" src="https://devops.com/wp-content/uploads/2026/09/ChatGPT_Image_Sep_8_2026_01_18_08_PM_1788862702q7qurkH5id.jpg" class="pt-cv-thumbnail img-none" alt="Mars Security Launches Real-Time Intel-to-Detection Engine That Turns Live Threat Intelligence Into Backtested Detections in Minutes" decoding="async" /></a>
<div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/mars-security-launches-real-time-intel-to-detection-engine-that-turns-live-threat-intelligence-into-backtested-detections-in-minutes/" class="_self cvplbd" target="_self" >Mars Security Launches Real-Time Intel-to-Detection Engine That Turns Live Threat Intelligence Into Backtested Detections in Minutes</a></h4></div></div></div></div>
<div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="189399"><a href="https://devops.com/lunar-cyber-launches-token-exposure-monitoring-as-infostealers-target-developer-and-ai-credentials/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1672" height="941" src="https://devops.com/wp-content/uploads/2026/08/Main_Image_for_Token_Exposure_Article_17881763376ISuTgo9Ra.jpg" class="pt-cv-thumbnail img-none" alt="Lunar Cyber Launches Token Exposure Monitoring as Infostealers Target Developer and AI Credentials" decoding="async" /></a>
<div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/lunar-cyber-launches-token-exposure-monitoring-as-infostealers-target-developer-and-ai-credentials/" class="_self cvplbd" target="_self" >Lunar Cyber Launches Token Exposure Monitoring as Infostealers Target Developer and AI Credentials</a></h4></div></div></div></div>
<div class="item"><div class="row"><div class="col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col" data-pid="188278"><a href="https://devops.com/airlock-digital-completes-independent-irap-assessment-at-the-protected-level/" class="_self pt-cv-href-thumbnail pt-cv-thumb-default cvplbd" target="_self" ><img width="1280" height="768" src="https://devops.com/wp-content/uploads/2026/08/Copy_of_Template-Product_Release_Website_1787105975jRcU0PniUG.jpg" class="pt-cv-thumbnail img-none" alt="Airlock Digital Completes Independent IRAP Assessment at the PROTECTED Level" decoding="async" /></a>
<div class="pt-cv-carousel-caption"><h4 class="pt-cv-title"><a href="https://devops.com/airlock-digital-completes-independent-irap-assessment-at-the-protected-level/" class="_self cvplbd" target="_self" >Airlock Digital Completes Independent IRAP Assessment at the PROTECTED Level</a></h4></div></div></div></div></div>
</div></div></div></div> <style type="text/css" id="pt-cv-inline-style-b98c9f2gtv">#pt-cv-view-8990877amd .pt-cv-content-item { padding-left: 0px !important; }
#pt-cv-view-8990877amd { margin-left: 0px !important; }
#pt-cv-view-8990877amd .pt-cv-carousel-caption { padding-left: 0px !important; }
#pt-cv-view-8990877amd .pt-cv-carousel-caption { left : 0px !important }
#pt-cv-view-8990877amd .carousel-control.left { right : 35px }
#pt-cv-view-8990877amd .row {margin: 0 0 !important}
#pt-cv-view-8990877amd .pt-cv-title a, #pt-cv-view-8990877amd .panel-title { font-size: 15px !important; line-height: 1.3 !important; color: #000000 !important; display: block !important; text-align: left !important; clear: both !important; }
#pt-cv-view-8990877amd .pt-cv-content , #pt-cv-view-8990877amd .pt-cv-content *:not(.pt-cv-readmore):not(style):not(script) { font-size: 16px !important; line-height: 1.3 !important; }
#pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important; line-height: 1.3 !important; font-weight: 600 !important; }
@media (min-width: 768px) and (max-width: 991px) {#pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important }}
@media (max-width: 767px) {#pt-cv-view-8990877amd .pt-cv-custom-fields * { font-size: 12px !important }}
#pt-cv-view-8990877amd .pt-cv-readmore { color: #ffffff !important; background-color: #00aeef !important; font-weight: 600 !important; }
#pt-cv-view-8990877amd .pt-cv-readmore:hover { color: #ffffff !important; background-color: #00aeef !important; }
#pt-cv-view-8990877amd { text-align: center; }</style>
</div></div></section>
<section id="text-105" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><p><!-- /80877830/DO_Article-Medium-2 --></p>
<div id='div-gpt-ad-1759256361146-0' style='min-width: 300px; min-height: 250px;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1759256361146-0'); });
</script>
</div>
</div>
</div></section>
<section id="custom_html-76" class="widget_text widget widget_custom_html"><div class="widget_text widget-wrap"><div class="textwidget custom-html-widget"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2091799172090865"
crossorigin="anonymous"></script>
<!-- Right Side Position 2 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-2091799172090865"
data-ad-slot="3912437610"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div></div></section>
<section id="featured-post-14" class="widget featured-content featuredpost"><div class="widget-wrap"><h4 class="widget-title widgettitle">Sponsored Content</h4>
<article class="post-188871 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-backend-metrics tag-core-web-vitals tag-lcp tag-ux entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/the-blind-spot-between-back%e2%80%90end-metrics-and-user-experience/">The Blind Spot Between Back‐End Metrics and User Experience</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2026-08-25T15:32:40-04:00">August 25, 2026</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/kirubanandanr/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Kirubanandan R</span></a></span></p></header></article><article class="post-188867 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-ddi tag-dhcp tag-dns tag-ipam entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/why-dns-dhcp-and-ipam-can-no-longer-live-in-separate-silos/">Why DNS, DHCP, and IPAM Can No Longer Live in Separate Silos</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2026-08-25T15:08:19-04:00">August 25, 2026</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/aiswarya-giridharan/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Aiswarya Giridharan</span></a></span></p></header></article><article class="post-188508 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content tag-ai tag-devops tag-it tag-mainframe entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/transforming-mainframe-recovery/">Transforming Mainframe Recovery</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2026-08-21T15:59:32-04:00">August 21, 2026</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/priya-doty/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Priya Doty</span></a></span></p></header></article><article class="post-188348 post type-post status-publish format-standard has-post-thumbnail category-social-facebook category-social-linkedin category-social-x category-sponsored-content entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/uipath-test-cloud-robots-handle-repetition-agents-adapt-and-humans-lead/">UiPath Test Cloud: Robots Handle Repetition, Agents Adapt and Humans Lead</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2026-08-20T13:10:22-04:00">August 20, 2026</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/jay-aigner/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Jay Aigner</span></a></span></p></header></article><article class="post-188268 post type-post status-publish format-standard has-post-thumbnail category-sponsored-content tag-apm tag-devops tag-opentelemetry tag-sdks entry"><header class="entry-header"><h2 class="entry-title" itemprop="headline"><a href="https://devops.com/what-it-really-takes-to-run-opentelemetry/">What It Really Takes to Run OpenTelemetry</a></h2><p class="entry-meta"><time class="entry-time" itemprop="datePublished" datetime="2026-08-19T17:12:35-04:00">August 19, 2026</time> | <span class="entry-author" itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://devops.com/author/kirubanandanr/" class="entry-author-link" rel="author" itemprop="url"><span class="entry-author-name" itemprop="name">Kirubanandan R</span></a></span></p></header></article></div></section>
<section id="text-85" class="widget widget_text"><div class="widget-wrap"> <div class="textwidget"><div id="div-gpt-ad-1494536589535-1" style="height: 250px; width: 300px;"><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1494536589535-1'); });</script></div>
</div>
</div></section>
</aside></div></div><footer class="site-footer" itemscope itemtype="https://schema.org/WPFooter"><div class="wrap"><nav class="nav-secondary" aria-label="Secondary" itemscope itemtype="https://schema.org/SiteNavigationElement" id="genesis-nav-secondary"><div class="wrap"><ul id="menu-csc-footer-navigation" class="menu genesis-nav-menu menu-secondary"><li id="menu-item-120384" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-120384"><a href="https://devops.com/" itemprop="url"><span itemprop="name">Home</span></a></li>
<li id="menu-item-213" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-213"><a href="https://devops.com/about/" itemprop="url"><span itemprop="name">About DevOps.com</span></a></li>
<li id="menu-item-129660" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-129660"><a href="https://devops.com/authors-page/" itemprop="url"><span itemprop="name">Meet our Authors</span></a></li>
<li id="menu-item-123986" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-123986"><a href="https://devops.com/blogger-request-form/" itemprop="url"><span itemprop="name">Write for DevOps.com</span></a></li>
<li id="menu-item-5573" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-5573"><a href="https://techstronggroup.com/assets/Techstrong-media-kit-26.pdf" itemprop="url"><span itemprop="name">Media Kit</span></a></li>
<li id="menu-item-155879" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-155879"><a target="_blank" href="https://techstronggroup.com/tellmemore/" itemprop="url"><span itemprop="name">Sponsor Info</span></a></li>
<li id="menu-item-210" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-210"><a href="https://devops.com/copyright/" itemprop="url"><span itemprop="name">Copyright</span></a></li>
<li id="menu-item-212" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-212"><a href="https://devops.com/tos/" itemprop="url"><span itemprop="name">TOS</span></a></li>
<li id="menu-item-146058" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-146058"><a target="_blank" href="https://techstronggroup.com/privacy-policy/" itemprop="url"><span itemprop="name">Privacy Policy</span></a></li>
</ul></div></nav><div class="copy" style="position: relative; padding-bottom: 20px;"><p class="footer-powered-by"><a href="https://techstronggroup.com/" target="_blank"><img src="https://devops.com/wp-content/themes/genesis-devops/images/powered-by-techstrong-ftr.png" alt="Powered by Techstrong Group, Inc."></p><p style="font-family: FontAwesome;"><a class="fa-twitter mega-menu-link" href="https://twitter.com/devopsdotcom" tabindex="0" aria-label="Twitter" target="_blank"></a> <a class="fa-google mega-menu-link" href="https://news.google.com/publications/CAAqJAgKIh5DQklTRUFnTWFnd0tDbVJsZG05d2N5NWpiMjBvQUFQAQ?hl=en-US&amp;gl=US&amp;ceid=US%3Aen" tabindex="0" aria-label="Google News" target="_blank"></a> <a class="fa-linkedin mega-menu-link" href="https://www.linkedin.com/company/devops-com/?viewAsMember=true" tabindex="0" aria-label="LinkedIn" target="_blank"></a> <a class="fa-facebook mega-menu-link" href="https://www.facebook.com/devopscom" tabindex="0" aria-label="Facebook" target="_blank"></a> <a class="fa-youtube-play mega-menu-link" href="https://www.youtube.com/channel/UC-zcE077X98oTEDPwKkDQxQ" tabindex="0" aria-label="YouTube" target="_blank"></a></p><p class="copyright">&copy; 2026 &middot;<a href="https://techstronggroup.com/" target="_blank">Techstrong Group, Inc.</a>All rights reserved.</p></div><p></p></div></footer></div><script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/genesis-devops/*","/wp-content/themes/genesis/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script>
( function ( body ) {
'use strict';
body.className = body.className.replace( /\btribe-no-js\b/, 'tribe-js' );
} )( document.body );
</script>
<!-- GTM Container placement set to footer -->
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NZLPNQS" height="0" width="0" style="display:none;visibility:hidden" aria-hidden="true"></iframe></noscript>
<!-- End Google Tag Manager (noscript) --><div class="wppopups-whole" style="display: none"><div class="spu-bg " id="spu-bg-174203"></div><div class="spu-box spu-animation-fade spu-position-centered spu-animation-animated" id="spu-174203" data-id="174203" data-parent="0" data-settings="{&quot;position&quot;:{&quot;position&quot;:&quot;centered&quot;,&quot;sticky_title&quot;:&quot;Postal Popup&quot;,&quot;sticky_title_color&quot;:&quot;rgba(0,0,0,255)&quot;,&quot;sticky_title_size&quot;:&quot;28px&quot;,&quot;sticky_title_bg&quot;:&quot;rgba(255,255,255,255)&quot;,&quot;push_content&quot;:&quot;0&quot;},&quot;animation&quot;:{&quot;animation&quot;:&quot;fade&quot;},&quot;colors&quot;:{&quot;show_overlay&quot;:&quot;yes-color&quot;,&quot;overlay_color&quot;:&quot;rgba(0,0,0,0.5)&quot;,&quot;overlay_blur&quot;:&quot;2&quot;,&quot;bg_color&quot;:&quot;rgb(29, 29, 33)&quot;,&quot;bg_img&quot;:&quot;&quot;,&quot;bg_img_repeat&quot;:&quot;no-repeat&quot;,&quot;bg_img_size&quot;:&quot;auto&quot;},&quot;close&quot;:{&quot;close_color&quot;:&quot;rgb(255, 255, 255)&quot;,&quot;close_hover_color&quot;:&quot;rgb(204, 204, 204)&quot;,&quot;close_shadow_color&quot;:&quot;#000&quot;,&quot;close_size&quot;:&quot;30&quot;,&quot;close_position&quot;:&quot;top_right&quot;},&quot;popup_box&quot;:{&quot;width&quot;:&quot;650px&quot;,&quot;padding&quot;:&quot;0&quot;,&quot;radius&quot;:&quot;0&quot;,&quot;auto_height&quot;:&quot;yes&quot;,&quot;height&quot;:&quot;350px&quot;},&quot;border&quot;:{&quot;border_type&quot;:&quot;none&quot;,&quot;border_color&quot;:&quot;#000&quot;,&quot;border_width&quot;:&quot;3&quot;,&quot;border_radius&quot;:&quot;0&quot;,&quot;border_margin&quot;:&quot;0&quot;},&quot;shadow&quot;:{&quot;shadow_color&quot;:&quot;#ccc&quot;,&quot;shadow_type&quot;:&quot;outset&quot;,&quot;shadow_x_offset&quot;:&quot;0&quot;,&quot;shadow_y_offset&quot;:&quot;0&quot;,&quot;shadow_blur&quot;:&quot;0&quot;,&quot;shadow_spread&quot;:&quot;0&quot;},&quot;css&quot;:{&quot;custom_css&quot;:&quot;.spu-content .hs-form {\r\ndisplay: flex;\r\nalign-items: flex-start;\r\njustify-content: center;\r\npadding-bottom: 20px;\r\n}\r\n\r\n.spu-content .hs_email {\r\nwidth: 75%;\r\n}\r\n\r\n.spu-content .hs-input {\r\nheight: 46px;\r\n}\r\n\r\n.hs-error-msgs {\r\ncolor: #fff;\r\n}\r\n\r\n.spu-content .hs_submit {\r\nwidth: 20%;\r\n}&quot;},&quot;id&quot;:&quot;174203&quot;,&quot;field_id&quot;:1,&quot;rules&quot;:{&quot;group_0&quot;:{&quot;rule_0&quot;:{&quot;rule&quot;:&quot;page_type&quot;,&quot;operator&quot;:&quot;==&quot;,&quot;value&quot;:&quot;all_pages&quot;}}},&quot;global_rules&quot;:{&quot;group_0&quot;:{&quot;rule_0&quot;:{&quot;rule&quot;:&quot;page_type&quot;,&quot;operator&quot;:&quot;==&quot;,&quot;value&quot;:&quot;all_pages&quot;}}},&quot;settings&quot;:{&quot;popup_title&quot;:&quot;Newsletter Popup - Email Only&quot;,&quot;popup_desc&quot;:&quot;&quot;,&quot;test_mode&quot;:&quot;0&quot;,&quot;powered_link&quot;:&quot;0&quot;,&quot;popup_class&quot;:&quot;&quot;,&quot;popup_hidden_class&quot;:&quot;&quot;,&quot;disable_scroll&quot;:&quot;0&quot;,&quot;close_on_conversion&quot;:&quot;1&quot;,&quot;autoclose&quot;:0,&quot;disable_close&quot;:&quot;0&quot;,&quot;advanced_close&quot;:&quot;0&quot;,&quot;conversion_cookie_name&quot;:&quot;spu_conversion_174196&quot;,&quot;conversion_cookie_duration&quot;:&quot;5&quot;,&quot;conversion_cookie_type&quot;:&quot;d&quot;,&quot;closing_cookie_name&quot;:&quot;spu_closing_174196&quot;,&quot;closing_cookie_duration&quot;:&quot;5&quot;,&quot;closing_cookie_type&quot;:&quot;d&quot;},&quot;triggers&quot;:{&quot;trigger_0&quot;:{&quot;trigger&quot;:&quot;exit&quot;}},&quot;success&quot;:{&quot;optin_success_seconds&quot;:0}}" data-need_ajax="0"><div class="spu-container "><div class="spu-content">
<a href="https://webinars.devops.com/in-article-newsletter-popup"><img class="alignnone size-full wp-image-174197" src="https://devops.com/wp-content/uploads/2024/11/Copy-of-DO-Banners-1540x660-1.png" alt="" width="1540" height="660" /></a>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script>
<script>
hbspt.forms.create({
portalId: "1628905",
formId: "a818e690-a8e5-4d1c-861c-010e5829d98c"
});
</script>
</div><a href="#" class="spu-close spu-close-popup spu-close-top_right">&times;</a><span class="spu-timer"></span></div></div><!--spu-box--></div><script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
const termsSpans = document.querySelectorAll('.pt-cv-meta-fields .terms');
termsSpans.forEach(termsSpan => {
if (termsSpan) {
const councilLink = termsSpan.querySelector('a.pt-cv-tax-techstrong-council');
const titleDiv = termsSpan.closest('.pt-cv-meta-fields').previousElementSibling;
termsSpan.innerHTML = '';
if (councilLink && titleDiv && titleDiv.classList.contains('pt-cv-title')) {
const icon = document.createElement('img');
icon.src = 'https://techstrong.ai/wp-content/uploads/2025/03/IMG_1495.png';
icon.style.width = '35px';
icon.style.height = '35px';
titleDiv.insertBefore(icon, titleDiv.firstChild);
titleDiv.style.display = 'flex';
titleDiv.style.alignItems = 'center';
// Add margin to the icon
icon.style.marginRight = '10px';
}
}
});
});
</script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
const iframe = document.getElementById('vimeo-event-player');
const player = new Vimeo.Player(iframe);
// Force mute initially
player.setVolume(0);
// Re-mute on every play event, including loops or returning to the tab
player.on('play', () => {
player.setVolume(0);
});
// Safety net: if Vimeo tries to raise volume on its own
player.on('volumechange', (data) => {
if (data.volume > 0) {
player.setVolume(0);
}
});
</script>
<script id="ep-visibility-tz">
(function(){try{var tz=Intl.DateTimeFormat().resolvedOptions().timeZone;if(tz&&/^[A-Za-z0-9_\-\/+]+$/.test(tz)){document.cookie="ep_visitor_tz="+encodeURIComponent(tz)+";path=/;max-age=2592000;SameSite=Lax";}}catch(e){}})();
</script>
<style type="text/css">
.relevanssi-live-search-results {
opacity: 0;
transition: opacity .25s ease-in-out;
-moz-transition: opacity .25s ease-in-out;
-webkit-transition: opacity .25s ease-in-out;
height: 0;
overflow: hidden;
z-index: 9999995; /* Exceed SearchWP Modal Search Form overlay. */
position: absolute;
display: none;
}
.relevanssi-live-search-results-showing {
display: block;
opacity: 1;
height: auto;
overflow: auto;
}
.relevanssi-live-search-no-results, .relevanssi-live-search-didyoumean {
padding: 0 1em;
}
</style>
<script> /* <![CDATA[ */var tribe_l10n_datatables = {"aria":{"sort_ascending":": activate to sort column ascending","sort_descending":": activate to sort column descending"},"length_menu":"Show _MENU_ entries","empty_table":"No data available in table","info":"Showing _START_ to _END_ of _TOTAL_ entries","info_empty":"Showing 0 to 0 of 0 entries","info_filtered":"(filtered from _MAX_ total entries)","zero_records":"No matching records found","search":"Search:","all_selected_text":"All items on this page were selected. ","select_all_link":"Select all pages","clear_selection":"Clear Selection.","pagination":{"all":"All","next":"Next","previous":"Previous"},"select":{"rows":{"0":"","_":": Selected %d rows","1":": Selected 1 row"}},"datepicker":{"dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesMin":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Prev","currentText":"Today","closeText":"Done","today":"Today","clear":"Clear"}};/* ]]> */ </script> <script>
( () => {
const lazyloadRunObserver = () => {
const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
entries.forEach( ( entry ) => {
if ( entry.isIntersecting ) {
let lazyloadBackground = entry.target;
if( lazyloadBackground ) {
lazyloadBackground.classList.add( 'e-lazyloaded' );
}
lazyloadBackgroundObserver.unobserve( entry.target );
}
});
}, { rootMargin: '200px 0px 200px 0px' } );
lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
lazyloadBackgroundObserver.observe( lazyloadBackground );
} );
};
const events = [
'DOMContentLoaded',
'elementor/lazyload/observe',
];
events.forEach( ( event ) => {
document.addEventListener( event, lazyloadRunObserver );
} );
} )();
</script>
<style id="mutliple-author-box-inline-style">.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-author-boxes-avatar img {
width: 35px !important;
height: 35px !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-author-boxes-avatar img {
border-radius: 0% !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-author-boxes-meta a {
background-color: #655997 !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-author-boxes-meta a {
color: #ffffff !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-author-boxes-meta a:hover {
color: #ffffff !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_email-profile-data {
background-color: #655997 !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_email-profile-data {
border-radius: 100% !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_email-profile-data {
color: #ffffff !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_email-profile-data:hover {
color: #ffffff !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_url-profile-data {
background-color: #655997 !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_url-profile-data {
border-radius: 100% !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_url-profile-data {
color: #ffffff !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .ppma-author-user_url-profile-data:hover {
color: #ffffff !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-author-boxes-recent-posts-title {
border-bottom-style: dotted !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-author-boxes-recent-posts-item {
text-align: left !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-multiple-authors-boxes-li {
border-style: solid !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-multiple-authors-boxes-li {
border-color: #999999 !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list.multiple-authors-target-the-content .pp-multiple-authors-boxes-li {
color: #3c434a !important;
}
.pp-multiple-authors-boxes-wrapper.pp-multiple-authors-layout-simple_list .pp-multiple-authors-boxes-ul li {
border-left: none !important;
border-right: none !important;
}</style><link rel='stylesheet' id='multiple-authors-widget-css-css' href='https://devops.com/wp-content/plugins/publishpress-authors/src/assets/css/multiple-authors-widget.css' media='all' />
<style id="multiple-authors-widget-css-inline-css">
:root { --ppa-color-scheme: #655997; --ppa-color-scheme-active: #514779; }
/*# sourceURL=multiple-authors-widget-css-inline-css */
</style>
<link rel='stylesheet' id='multiple-authors-fontawesome-css' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.1/css/all.min.css' media='all' />
<script id="wppopups-js-extra">
var wppopups_vars = {"is_admin":"","ajax_url":"https://devops.com/wp-admin/admin-ajax.php","pid":"186658","is_front_page":"","is_blog_page":"","is_category":"","site_url":"https://devops.com","is_archive":"","is_search":"","is_singular":"1","is_preview":"","facebook":"","twitter":"","val_required":"This field is required.","val_url":"Please enter a valid URL.","val_email":"Please enter a valid email address.","val_number":"Please enter a valid number.","val_checklimit":"You have exceeded the number of allowed selections: {#}.","val_limit_characters":"{count} of {limit} max characters.","val_limit_words":"{count} of {limit} max words.","disable_form_reopen":"__return_false"};
//# sourceURL=wppopups-js-extra
</script>
<script id="wppopups-js" src="https://devops.com/wp-content/plugins/wppopups/src/assets/js/wppopups.js?ver=2.2.0.3"></script>
<script id="leadin-script-loader-js-js-extra">
var leadin_wordpress = {"userRole":"visitor","pageType":"post","leadinPluginVersion":"11.3.69"};
//# sourceURL=leadin-script-loader-js-js-extra
</script>
<script async defer id='hs-script-loader' src="https://js.hs-scripts.com/1628905.js?integration=WordPress&#038;ver=11.3.69"></script>
<script id="script-webinars-js" src="https://devops.com/wp-content/themes/genesis-devops/webinars.js?ver=1.0.0"></script>
<script id="script-any-pre-js" src="https://devops.com/wp-content/themes/genesis-devops/js/slider/any/js/jquery.easing.1.2.js?ver=1.0.0"></script>
<script id="script-any-js" src="https://devops.com/wp-content/themes/genesis-devops/js/slider/any/js/jquery.anythingslider.min.js?ver=1.0.0"></script>
<script id="relevanssi-live-search-client-js-extra">
var relevanssi_live_search_params = [];
relevanssi_live_search_params = {"ajaxurl":"https:\/\/devops.com\/wp-admin\/admin-ajax.php","config":{"default":{"input":{"delay":300,"min_chars":3},"results":{"position":"bottom","width":"auto","offset":{"x":0,"y":5},"static_offset":true}}},"msg_no_config_found":"No valid Relevanssi Live Search configuration found!","msg_loading_results":"Loading search results.","messages_template":"<div class=\"live-ajax-messages\">\n\t<div id=\"relevanssi-live-ajax-search-spinner\"><\/div>\n<\/div>\n"};;
//# sourceURL=relevanssi-live-search-client-js-extra
</script>
<script id="relevanssi-live-search-client-js" src="https://devops.com/wp-content/plugins/relevanssi-live-ajax-search/assets/javascript/dist/script.min.js?ver=2.5"></script>
<script id="hoverIntent-js" src="https://devops.com/wp-includes/js/hoverIntent.min.js?ver=1.10.2"></script>
<script id="megamenu-js" src="https://devops.com/wp-content/plugins/megamenu/js/maxmegamenu.js?ver=3.10.6"></script>
<script id="megamenu-pro-js" src="https://devops.com/wp-content/plugins/megamenu-pro/assets/public.js?ver=2.5"></script>
<script id="bdt-uikit-js-extra">
var element_pack_ajax_login_config = {"ajaxurl":"https://devops.com/wp-admin/admin-ajax.php","language":"en","loadingmessage":"Sending user info, please wait...","unknownerror":"Unknown error, make sure access is correct!"};
var ElementPackConfig = {"ajaxurl":"https://devops.com/wp-admin/admin-ajax.php","nonce":"da44eca00f","data_table":{"language":{"sLengthMenu":"Show _MENU_ Entries","sInfo":"Showing _START_ to _END_ of _TOTAL_ entries","sSearch":"Search :","sZeroRecords":"No matching records found","oPaginate":{"sPrevious":"Previous","sNext":"Next"}}},"contact_form":{"sending_msg":"Sending message please wait...","captcha_nd":"Invisible captcha not defined!","captcha_nr":"Could not get invisible captcha response!"},"mailchimp":{"subscribing":"Subscribing you please wait..."},"search":{"more_result":"More Results","search_result":"SEARCH RESULT","not_found":"not found"},"words_limit":{"read_more":"[read more]","read_less":"[read less]"},"elements_data":{"sections":[],"columns":[],"widgets":[]}};
//# sourceURL=bdt-uikit-js-extra
</script>
<script id="bdt-uikit-js" src="https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/js/bdt-uikit.min.js?ver=3.21.7"></script>
<script id="element-pack-helper-js" src="https://devops.com/wp-content/plugins/bdthemes-element-pack/assets/js/common/helper.min.js?ver=9.8.9"></script>
<script id="pt-cv-content-views-script-js-extra">
var PT_CV_PUBLIC = {"_prefix":"pt-cv-","page_to_show":"5","_nonce":"820a19745d","is_admin":"","is_mobile":"","ajaxurl":"https://devops.com/wp-admin/admin-ajax.php","lang":"","loading_image_src":"data:image/gif;base64,R0lGODlhDwAPALMPAMrKygwMDJOTkz09PZWVla+vr3p6euTk5M7OzuXl5TMzMwAAAJmZmWZmZszMzP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAPACwAAAAADwAPAAAEQvDJaZaZOIcV8iQK8VRX4iTYoAwZ4iCYoAjZ4RxejhVNoT+mRGP4cyF4Pp0N98sBGIBMEMOotl6YZ3S61Bmbkm4mAgAh+QQFCgAPACwAAAAADQANAAAENPDJSRSZeA418itN8QiK8BiLITVsFiyBBIoYqnoewAD4xPw9iY4XLGYSjkQR4UAUD45DLwIAIfkEBQoADwAsAAAAAA8ACQAABC/wyVlamTi3nSdgwFNdhEJgTJoNyoB9ISYoQmdjiZPcj7EYCAeCF1gEDo4Dz2eIAAAh+QQFCgAPACwCAAAADQANAAAEM/DJBxiYeLKdX3IJZT1FU0iIg2RNKx3OkZVnZ98ToRD4MyiDnkAh6BkNC0MvsAj0kMpHBAAh+QQFCgAPACwGAAAACQAPAAAEMDC59KpFDll73HkAA2wVY5KgiK5b0RRoI6MuzG6EQqCDMlSGheEhUAgqgUUAFRySIgAh+QQFCgAPACwCAAIADQANAAAEM/DJKZNLND/kkKaHc3xk+QAMYDKsiaqmZCxGVjSFFCxB1vwy2oOgIDxuucxAMTAJFAJNBAAh+QQFCgAPACwAAAYADwAJAAAEMNAs86q1yaWwwv2Ig0jUZx3OYa4XoRAfwADXoAwfo1+CIjyFRuEho60aSNYlOPxEAAAh+QQFCgAPACwAAAIADQANAAAENPA9s4y8+IUVcqaWJ4qEQozSoAzoIyhCK2NFU2SJk0hNnyEOhKR2AzAAj4Pj4GE4W0bkJQIAOw==","is_mobile_tablet":"","sf_no_post_found":"No posts found.","lf__separator":"____"};
var PT_CV_PAGINATION = {"first":"\u00ab","prev":"\u2039","next":"\u203a","last":"\u00bb","goto_first":"Go to first page","goto_prev":"Go to previous page","goto_next":"Go to next page","goto_last":"Go to last page","current_page":"Current page is","goto_page":"Go to page"};
//# sourceURL=pt-cv-content-views-script-js-extra
</script>
<script id="pt-cv-content-views-script-js" src="https://devops.com/wp-content/plugins/content-views-query-and-display-post-page/public/assets/js/cv.js?ver=4.5.1.2"></script>
<script id="pt-cv-public-pro-script-js" src="https://devops.com/wp-content/plugins/pt-content-views-pro/public/assets/js/cvpro.min.js?ver=7.4"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://devops.com/wp-includes/js/wp-emoji-release.min.js?ver=7c595869f5825518f39b22142cea17d5"}}
</script>
<script type="module">
/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://devops.com/wp-includes/js/wp-emoji-loader.min.js
</script>
<!-- Shortcodes Ultimate custom CSS - start -->
<style type="text/css">
.su-posts-default-loop {
margin-left: 15px !important;
}
.su-posts-default-loop .su-post {
margin-bottom: 1.5em;
line-height: 1.2 !important;
}
.su-box {
margin-top: 5px;
}
.su-row {
margin-bottom: 0em !important;
}
.su-list ul li {
font-size: small !important;
}
.su-expand-link {
font-size: small !important;
}
</style>
<!-- Shortcodes Ultimate custom CSS - end -->
<script>
(function($) {
$(window).scroll(function(){
if($(window).scrollTop()<116){
$('.leftad').css('top', 156 - $(window).scrollTop());
$('.rightad').css('top', 156 - $(window).scrollTop());
}
else {
$('.leftad').css('top', 42);
$('.rightad').css('top', 42);
}
});
})( jQuery );
</script><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a392b7aa783cd436',t:'MTc4OTA4ODIzNw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script><script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"e8343d3985db47d9b898e118af12e75f","spa":2}' crossorigin="anonymous"></script>
</body></html>