Files
nexus/sreweekly/articles/466/01-no-you-don-t-have-to-run-like-google.html
2026-09-12 17:23:01 +08:00

2267 lines
231 KiB
HTML
Raw 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" xml:lang="en-US" dir="ltr" xmlns="http://www.w3.org/1999/xhtml" data-edition="us" data-edition-default="us" data-lang="en" data-audience="enterprise" data-brand="iw" data-hub="b2b">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<style>:root { --advertisement-label-text: "Advertisement"; }</style> <meta name="category" content="Cloud Computing">
<link rel="profile" href="https://gmpg.org/xfn/11">
<script>
window.isBrandPostSeriesLanding = "false";
</script>
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
<meta name="amazonbot" content="noarchive">
<script>
window._sp_analytics = {
config: {
accountId: 146,
events: {
onDetectionComplete: function() {
console.log('onMessageReady');
}
},
}
};
</script>
<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v23.3) - https://yoast.com/wordpress/plugins/seo/ -->
<title>No, you don’t have to run like Google | InfoWorld</title>
<meta name="twitter:label1" content="Written by" />
<meta name="twitter:data1" content="Matt Asay" />
<meta name="twitter:label2" content="Est. reading time" />
<meta name="twitter:data2" content="6 minutes" />
<!-- / Yoast SEO Premium plugin. -->
<link rel='dns-prefetch' href='//cdn.onthe.io' />
<link rel="alternate" type="application/rss+xml" title="InfoWorld &raquo; Feed" href="https://www.infoworld.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="InfoWorld &raquo; Comments Feed" href="https://www.infoworld.com/comments/feed/" />
<script>
//CMP Stub
"use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){for(var t,e,o=[],n=window,r=n;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(a){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o){if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5)}return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];if(!n.length)return o;"setGdprApplies"===n[0]?n.length>3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(n){}else o=t.data;var r="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;r&&window.__tcfapi(r.command,r.version,function(o,n){var a={__tcfapiReturn:{returnValue:o,success:n,callId:r.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")},r.parameter)},!1))};"undefined"!=typeof module?module.exports=t:t()}();
window.__gpp_addFrame=function(e){if(!window.frames[e]){if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)}},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],s=e.length>1?e[1]:null,a=e.length>2?e[2]:null;if("ping"===t)s({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct",],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:s,parameter:a}),s({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct",],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var p=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==a){__gpp.events.splice(i,1),p=!0;break}s({eventName:"listenerRemoved",listenerId:a,data:p,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnat","8:usca","9:usva","10:usco","11:usut","12:usct",],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?s(!1,!0):"getSection"===t||"getField"===t?s(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var s=t?JSON.parse(e.data):e.data}catch(a){s=null}if("object"==typeof s&&null!==s&&"__gppCall"in s){var n=s.__gppCall;window.__gpp(n.command,function(s,a){var p={__gppReturn:{returnValue:s,success:a,callId:n.callId}};e.source.postMessage(t?JSON.stringify(p):p,"*")},"parameter"in n?n.parameter:null,"version"in n?n.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator"));
</script>
<link rel='stylesheet' id='wp-block-library-css' href='https://www.infoworld.com/wp-includes/css/dist/block-library/style.min.css?ver=6.8.8' 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}
</style>
<style id='co-authors-plus-coauthors-style-inline-css'>
.wp-block-co-authors-plus-coauthors.is-layout-flow [class*=wp-block-co-authors-plus]{display:inline}
</style>
<style id='co-authors-plus-avatar-style-inline-css'>
.wp-block-co-authors-plus-avatar :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-avatar :where(img){vertical-align:middle}.wp-block-co-authors-plus-avatar:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-avatar.aligncenter{display:table;margin-inline:auto}
</style>
<style id='co-authors-plus-image-style-inline-css'>
.wp-block-co-authors-plus-image{margin-bottom:0}.wp-block-co-authors-plus-image :where(img){height:auto;max-width:100%;vertical-align:bottom}.wp-block-co-authors-plus-coauthors.is-layout-flow .wp-block-co-authors-plus-image :where(img){vertical-align:middle}.wp-block-co-authors-plus-image:is(.alignfull,.alignwide) :where(img){width:100%}.wp-block-co-authors-plus-image:is(.alignleft,.alignright){display:table}.wp-block-co-authors-plus-image.aligncenter{display:table;margin-inline:auto}
</style>
<style id='elasticpress-facet-style-inline-css'>
.widget_ep-facet input[type=search],.wp-block-elasticpress-facet input[type=search]{margin-bottom:1rem}.widget_ep-facet .searchable .inner,.wp-block-elasticpress-facet .searchable .inner{max-height:20em;overflow:scroll}.widget_ep-facet .term.hide,.wp-block-elasticpress-facet .term.hide{display:none}.widget_ep-facet .empty-term,.wp-block-elasticpress-facet .empty-term{opacity:.5;position:relative}.widget_ep-facet .empty-term:after,.wp-block-elasticpress-facet .empty-term:after{bottom:0;content:" ";display:block;left:0;position:absolute;right:0;top:0;width:100%;z-index:2}.widget_ep-facet .level-1,.wp-block-elasticpress-facet .level-1{padding-left:20px}.widget_ep-facet .level-2,.wp-block-elasticpress-facet .level-2{padding-left:40px}.widget_ep-facet .level-3,.wp-block-elasticpress-facet .level-3{padding-left:60px}.widget_ep-facet .level-4,.wp-block-elasticpress-facet .level-4{padding-left:5pc}.widget_ep-facet .level-5,.wp-block-elasticpress-facet .level-5{padding-left:75pt}.widget_ep-facet input[disabled],.wp-block-elasticpress-facet input[disabled]{cursor:pointer;opacity:1}.widget_ep-facet .term a,.wp-block-elasticpress-facet .term a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.widget_ep-facet .term a:hover .ep-checkbox,.wp-block-elasticpress-facet .term a:hover .ep-checkbox{background-color:#ccc}.ep-checkbox{-webkit-box-align:center;-ms-flex-align:center;-ms-flex-negative:0;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:#eee;display:-webkit-box;display:-ms-flexbox;display:flex;flex-shrink:0;height:1em;justify-content:center;margin-right:.25em;width:1em}.ep-checkbox:after{border:solid #fff;border-width:0 .125em .125em 0;content:"";display:none;height:.5em;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:.25em}.ep-checkbox.checked{background-color:#5e5e5e}.ep-checkbox.checked:after{display:block}
</style>
<link rel='stylesheet' id='elasticpress-related-posts-block-css' href='https://www.infoworld.com/wp-content/mu-plugins/search/elasticpress/dist/css/related-posts-block-styles.min.css?ver=4.2.2' 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,rgba(6,147,227,1) 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,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 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 rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}: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;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.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;}
: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-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;}
</style>
<link rel='stylesheet' id='editions-desktop-css' href='https://www.infoworld.com/wp-content/client-mu-plugins/idg-editions/dist/styles/main.css?ver=0.1.0' media='all' />
<link rel='stylesheet' id='idg-sponsored-price-style-css' href='https://www.infoworld.com/wp-content/client-mu-plugins/idg-sponsored-price-comparison/dist/styles/main.css?ver=1789061465' media='all' />
<link rel='stylesheet' id='third-party-integrations-style-css' href='https://www.infoworld.com/wp-content/client-mu-plugins/idg-third-party/dist/styles/index.css?ver=1789061466' media='all' />
<style id='miso-tldr-inline-inline-css'>
</style>
<link rel='stylesheet' id='frontend-jwplayer-styles-css' href='https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/styles/jwplayer.css?ver=1789061466' media='all' />
<link rel='stylesheet' id='frontend-shared-styles-css' href='https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/styles/shared.css?ver=1789061466' media='all' />
<link rel='stylesheet' id='frontend-styles-css' href='https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/styles/bundle.css?ver=1789061466' media='all' />
<link rel='stylesheet' id='iw-amp-styles-css' href='https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/dist/styles/amp.css?ver=1789061466' media='all' />
<script type="text/javascript" src="https://www.infoworld.com/wp-includes/js/dist/hooks.min.js?m=1787604888g" ></script><script src="https://www.infoworld.com/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script>
<script id="wp-i18n-js-after">
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
</script>
<script type="text/javascript" src="https://www.infoworld.com/wp-content/client-mu-plugins/idg-editions/dist/scripts/editions-front.js?m=1789061465g" ></script><script id="third-party-integrations-script-js-extra">
var IDG = {"settings":{"cmp":{"account":{"id":"146","base_endpoint":"https:\/\/cmpv2.infoworld.com","href":"https:\/\/www.infoworld.com","is_cp_multi_campaign_enabled":true},"gdpr":{"script":"https:\/\/cmpv2.infoworld.com\/unified\/wrapperMessagingWithoutDetection.js","privacy_manager_id":"1096030","property_id":"9220","privacy_manager_id_amp":"1096030","href_amp":"https:\/\/amp.infoworld.com"},"ccpa":{"script":"https:\/\/ccpa.sp-prod.net\/ccpa.js","origin":"https:\/\/ccpa-service.sp-prod.net","privacy_manager_id":"1096053","privacy_manager_uuid":"5dfa75f712068b42714ed7b8","property_id":"16077","href_amp":"https:\/\/ccpa.amp.infoworld.com"},"gpp":{"usnat_pm_id":"1316752","is_gpp_enabled":true},"contentpass":{"cp_base_url":"https:\/\/cp.infoworld.com","cp_property_id":"17801f76","is_cp_enabled":true,"contentpass_geos":"DE,AT,IE,GB"}},"gtm":{"account":{"id":"GTM-NN43QC7W","amp_id":"","ua_number":"UA-6647659-1"}},"gpt":{"consent":{"vendor_id":"5e74df5ff443bb795772df9c"},"config":{"prefix":"\/8456\/IDG.G_B2B_InfoWorld.com\/","threshold":"0.7","slots":[{"name":"gpt-leaderboard","template":"banner","disabled":false,"sticky_duration":"12","pos":"ATF1","size":"728x90","size_definitions":[{"breakpoint":"970","sizes":"728x90"},{"breakpoint":"728","sizes":"728x90"},{"breakpoint":"320","sizes":"300x50,320x50,300x250"}],"insert_after_p":"1"},{"name":"gpt-leaderboardmainbod","template":"article","disabled":false,"refresh_interval":"8","refresh_amount":"6","size":"300x50","pos":"BTF{{count}}","size_definitions":[{"breakpoint":"970","sizes":"970x250,728x90,300x250"},{"breakpoint":"728","sizes":"728x90,300x250"},{"breakpoint":"320","sizes":"300x50,320x50,300x250,300x240"}],"page_template":[{"custom_template":"Homepage","desktop":"3,10","mobile":"3,10","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]},{"custom_template":"Article","desktop":"3,6,9,12,15,18,21,24,27,30,33,36,39","mobile":"3,6,9,12,15,18,21,24,27,30,33,36,39","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]},{"custom_template":"Archive","desktop":"0","mobile":"0","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]},{"custom_template":"Topic landing page","desktop":"3,9","mobile":"3,9","feed_v2_articlelisting":[{"feed_v2":"Feed-V2","desktop":"3,5,9","mobile":"3,5,9","block_name":"feed_v2"}]}],"insert_after_p":"1"},{"name":"gpt-rightrail","template":"right_rail","disabled":false,"size":"120x600","section":"Sidebardfpatf{{count}}","pos":"BTF{{count}}","size_definitions":[{"breakpoint":"970","sizes":"300x250,300x600,160x600,120x600"},{"breakpoint":"728","sizes":""},{"breakpoint":"320","sizes":""}],"insert_after_p":"1","refresh_interval":"10","refresh_amount":"20"},{"name":"gpt-oc_ad_1","template":"oc_ad_1","disabled":false,"size":"7x7","pos":"ATF1","size_definitions":[{"breakpoint":"970","sizes":"7x7,1x2"},{"breakpoint":"728","sizes":"7x7"},{"breakpoint":"320","sizes":"7x7"}],"insert_after_p":"1"},{"name":"gpt-topimu","template":"topimu","disabled":false,"size":"300x50","pos":"ATF1","size_definitions":[{"breakpoint":"970","sizes":"300x250,300x600,160x600,120x600"},{"breakpoint":"728","sizes":""},{"breakpoint":"320","sizes":""}],"insert_after_p":"1"},{"name":"gpt-overlay","template":"overlay","disabled":false,"size":"640x480","pos":"gpt-overlay","size_definitions":[{"breakpoint":"970","sizes":"640x480"},{"breakpoint":"728","sizes":"640x480"},{"breakpoint":"320","sizes":""}],"insert_after_p":"1"},{"name":"gpt-skin","template":"skin","disabled":false,"size":"1x1","pos":"gpt-skin","size_definitions":[{"breakpoint":"970","sizes":"1x1"},{"breakpoint":"728","sizes":""},{"breakpoint":"320","sizes":""}],"insert_after_p":"1"}],"aps_pub_id":"0"}},"permutive":{"account":{"workspace_id":"f5b3be27-f789-4ef1-8867-37c67da5b361","api_key":"84c7e805-5ce9-41f4-b988-3529488bab1c"}},"outbrain":[],"admiral":{"config":{"id":"A-5AF8EB64CCA9836B6A69CC6F-18","enable_ad_block":true}},"hellobar":{"config":{"insert_first_hello_bar_after_p":"6","insert_second_hello_bar_after_p":"12"}},"nativo":{"config":{"script":"https:\/\/s.ntv.io\/serve\/load.js","page_template":[{"custom_template":"Homepage","desktop":"5,8,13","mobile":"5,8,13"},{"custom_template":"Article","desktop":"22,32,37","mobile":"22,32,37"},{"custom_template":"Archive","desktop":"3","mobile":"3"}],"relatedcontent":[{"related_content_block":"Related Content","desktop":"3","block_name":"related_content"}],"populartopic":[{"nativopopulartopic":"Popular Topics","desktop":"2","mobile":"2","block_name":"popular_topics"}],"herov2":[{"nativoherov2":"Hero V2","desktop":"2","mobile":"2","block_name":"hero_v2","variant":[{"variant_name":"Default","desktop":"3,5","mobile":"3,5","Variant_value":"default"},{"variant_name":"Card 4 By 4","desktop":"4","mobile":"4","Variant_value":"fourByFour"},{"variant_name":"Card Small 4 By 4","desktop":"4","mobile":"4","Variant_value":"oneByThree"}]}],"variouscontentlisting":[{"various_content_listing":"Various content listings","desktop":"3,5,9","mobile":"3,5,9","block_name":"various_content_listing"}]}},"miso":{"miso_placements":{"default_position_smart_answers":"10","default_position_ipp":"6"}},"newsletter_register_para_details":{"nrp_info":{"paracount":"0"}},"newsletter_subscribe_btn_redirect_url":[],"subscribers":{"config":{"id":"d73925e9-37f6-478a-9804-7901f9e3a2ae","script":"https:\/\/cdn.subscribers.com\/assets\/subscribers.js"}},"jw_player":{"config":{"insert_after_p":"4","insert_after_article":"","player_library_id":"8yHZorDV","amp_player_library_id":"Q4xdwtHS","floating_player_playlist_id":"wj1ht0vS","adscheduleid":"LxK3nuOJ","floating_player_adscheduleid":"LxK3nuOJ","description_url":"http:\/\/www.infoworld.com","sz":"640x480|640x360","ciu_szs":"300x250,728x90","amp_insert_after_p":"4","floating_player_delay":"5"}},"io_script":{"config":{"id":"OmWzZwn3Mi5H","io_amp_id":"45650"}},"ms_clarity":{"config":{"project_id":"s1gr1xsv4j","is_enabled":true}},"topic_landing_brandpost_configuration":{"tlp_config":{"tlp_config_page_template":[{"tlp_config_template":"Content Listing Articles","desktop":"5"}]}},"overlays_privacy_policies":{"consent_overlays":{"english_overlay_message":"<div class=\"external-embed-wrapper hide-overlay-${platform}\"><div class=\"overlay-div\"><h4>External content from ${platformName}<\/h4><p>This article contains external content from ${platformName}. To view the content, we request your permission.<\/p><a class=\"consent-button\" data-cmp=\"${cmp}\" data-callback=\"${callback}\" data-type=\"hide-overlay-${platform}\" href=\"javascript:void(0)\">Show external content from ${platformName}<\/a><p>By clicking on \u201cShow external content from ${platformName}\u201d I agree that the content will be displayed to me. This allows personal data to be transmitted to ${platformName} and other third parties. You can find more information about this in our <a target=\"_blank\" href=\"${foundryPPLink}\">data protection declaration<\/a> and <a target=\"_blank\" href=\"${privacyPolicyLink}\">${platformName}<\/a>\u2019s Privacy Policy.<p><\/div><\/div>","german_overlay_message":"<div class=\"external-embed-wrapper hide-overlay-${platform}\"><div class=\"overlay-div\"><h4>Externer Inhalt von ${platformName}<\/h4><p>An dieser Stelle hat die Redaktion einen zum Inhalt des Artikels passenden externen Inhalt von ${platformName} platziert. Damit dieser angezeigt werden kann, ben\u00f6tigen wir Ihre Zustimmung.<\/p><p><a class=\"consent-button\" data-cmp=\"${cmp}\" data-callback=\"${callback}\" data-type=\"hide-overlay-${platform}\" href=\"javascript:void(0)\" style=\"border: 2px solid black;padding: 5px 10px;color: black;\">Externen Inhalt von ${platformName} anzeigen<\/a><\/p><p>Mit einem Klick auf \"Externe Inhalte von ${platformName} anzeigen\" erkl\u00e4re ich mich damit einverstanden, dass mir der Inhalt angezeigt wird. Dadurch k\u00f6nnen personenbezogene Daten an ${platformName} und andere Drittanbieter \u00fcbermittelt werden. Mehr Informationen dazu finden Sie in unserer <a target=\"_blank\" href=\"${foundryPPLink}\">Datenschutzerkl\u00e4rung<\/a> und unter <a target=\"_blank\" href=\"${privacyPolicyLink}\">${platformName}<\/a>\u2019s.<p><\/div><\/div>","sweden_overlay_message":"<div class=\"external-embed-wrapper hide-overlay-${platform}\"><div class=\"overlay-div\"><h4>Externt inneh\u00e5ll fr\u00e5n ${platformName}<\/h4><p>Den h\u00e4r artikeln inneh\u00e5ller externt inneh\u00e5ll fr\u00e5n ${platformName}. F\u00f6r att se inneh\u00e5llet ber vi om ditt tillst\u00e5nd.<\/p><p><a class=\"consent-button\" data-cmp=\"${cmp}\" data-callback=\"${callback}\" data-type=\"hide-overlay-${platform}\" href=\"javascript:void(0)\" style=\"border: 2px solid black;padding: 5px 10px;color: black;\">Visa externt inneh\u00e5ll fr\u00e5n ${platformName}<\/a><\/p><p>Genom att klicka p\u00e5 \"Visa externt inneh\u00e5ll fr\u00e5n ${platformName}\" godk\u00e4nner jag att inneh\u00e5llet kommer att visas f\u00f6r mig. Detta g\u00f6r att personuppgifter kan \u00f6verf\u00f6ras till ${platformName} och tredje part. Du kan hitta mer information om detta i v\u00e5r <a target=\"_blank\" href=\"${foundryPPLink}\">dataskyddsdeklaration<\/a> and <a target=\"_blank\" href=\"${privacyPolicyLink}\">${platformName}<\/a>\u2019s sekretesspolicy.<p><\/div><\/div>","english_generic_overlay_message":"<div class=\"external-embed-wrapper custom-html-consent-notice-${platform}\"><div class=\"overlay-div\"><h4>Allow External content<\/h4><p>This article contains external content in this section. To view the content, we request your permission.<\/p><a class=\"consent-button-generic\" platform=\"${platform}\" href=\"javascript:void(0)\">Show external content<\/a><p>By clicking on \u201cShow external content\u201d, I agree that the content will be displayed to me. This allows personal data to be transmitted to other third parties. You can find more information about this in our <a target=\"_blank\" href=\"${foundryPPLink}\">data protection declaration<\/a> and the external source\u2019s privacy policy.<p><\/div><\/div>","german_generic_overlay_message":"<div class=\"external-embed-wrapper custom-html-consent-notice-${platform}\"><div class=\"overlay-div\"><h4>Allow External content<\/h4><p>This article contains external content in this section. To view the content, we request your permission.<\/p><a class=\"consent-button-generic\" platform=\"${platform}\" href=\"javascript:void(0)\">Show external content<\/a><p>By clicking on \u201cShow external content\u201d, I agree that the content will be displayed to me. This allows personal data to be transmitted to other third parties. You can find more information about this in our <a target=\"_blank\" href=\"${foundryPPLink}\">data protection declaration<\/a> and the external source\u2019s privacy policy.<p><\/div><\/div>","sweden_generic_overlay_message":"<div class=\"external-embed-wrapper custom-html-consent-notice-${platform}\"><div class=\"overlay-div\"><h4>Allow External content<\/h4><p>This article contains external content in this section. To view the content, we request your permission.<\/p><a class=\"consent-button-generic\" platform=\"${platform}\" href=\"javascript:void(0)\">Show external content<\/a><p>By clicking on \u201cShow external content\u201d, I agree that the content will be displayed to me. This allows personal data to be transmitted to other third parties. You can find more information about this in our <a target=\"_blank\" href=\"${foundryPPLink}\">data protection declaration<\/a> and the external source\u2019s privacy policy.<p><\/div><\/div>"},"foundry_privacy_policies":{"contentpass":"https:\/\/foundryco.com\/about-us\/privacy-compliance\/","gdpr":"https:\/\/foundryco.com\/about-us\/privacy-compliance\/","ccpa":"https:\/\/foundryco.com\/about-us\/privacy-compliance\/"},"megaphone_privacy_policies":{"contentpass":"https:\/\/megaphone.spotify.com\/legal","gdpr":"https:\/\/megaphone.spotify.com\/legal","ccpa":"https:\/\/megaphone.spotify.com\/legal"},"instagram_privacy_policies":{"contentpass":"https:\/\/privacycenter.instagram.com\/policy\/version\/25238980265745528\/","gdpr":"https:\/\/privacycenter.instagram.com\/policy\/version\/25238980265745528\/","ccpa":"https:\/\/privacycenter.instagram.com\/policy\/version\/25238980265745528\/"},"facebook_privacy_policies":{"contentpass":"https:\/\/www.facebook.com\/privacy\/policy\/version\/25238980265745528","gdpr":"https:\/\/www.facebook.com\/privacy\/policy\/version\/25238980265745528","ccpa":"https:\/\/www.facebook.com\/privacy\/policy\/version\/25238980265745528"},"twitter_privacy_policies":{"contentpass":"https:\/\/x.com\/de\/privacy","gdpr":"https:\/\/x.com\/en\/privacy","ccpa":"https:\/\/x.com\/en\/privacy"},"toutube_privacy_policies":{"contentpass":"https:\/\/support.google.com\/youtube\/answer\/10364219?hl=de","gdpr":"https:\/\/support.google.com\/youtube\/answer\/10364219?hl=en-GB","ccpa":"https:\/\/support.google.com\/youtube\/answer\/10364219?hl=en-GB"},"tiktok_privacy_policies":{"contentpass":"https:\/\/www.tiktok.com\/legal\/page\/eea\/privacy-policy\/de","gdpr":"https:\/\/www.tiktok.com\/legal\/page\/eea\/privacy-policy\/en","ccpa":"https:\/\/www.tiktok.com\/legal\/page\/us\/privacy-policy\/en"},"infogram_privacy_policies":{"contentpass":"https:\/\/infogram.com\/privacy","gdpr":"https:\/\/infogram.com\/privacy","ccpa":"https:\/\/infogram.com\/privacy"},"apple_podcast_privacy_policies":{"contentpass":"https:\/\/www.apple.com\/legal\/privacy\/data\/de\/apple-podcasts\/","gdpr":"https:\/\/www.apple.com\/legal\/privacy\/data\/en\/apple-podcasts","ccpa":"https:\/\/www.apple.com\/legal\/privacy\/data\/en\/apple-podcasts"},"slideshare_privacy_policies":{"contentpass":"https:\/\/www.slideshare.net\/privacy","gdpr":"https:\/\/www.slideshare.net\/privacy","ccpa":"https:\/\/www.slideshare.net\/privacy"},"jetpack_podcast_player_privacy_policies":{"contentpass":"https:\/\/jetpack.com\/support\/jetpack-blocks\/podcast-player-block\/","gdpr":"https:\/\/jetpack.com\/support\/jetpack-blocks\/podcast-player-block\/","ccpa":"https:\/\/jetpack.com\/support\/jetpack-blocks\/podcast-player-block\/"},"vimeo_privacy_policies":{"contentpass":"https:\/\/vimeo.com\/privacy","gdpr":"https:\/\/vimeo.com\/privacy","ccpa":"https:\/\/vimeo.com\/privacy"},"soundcloud_privacy_policies":{"contentpass":"https:\/\/soundcloud.com\/pages\/privacy","gdpr":"https:\/\/soundcloud.com\/pages\/privacy","ccpa":"https:\/\/soundcloud.com\/pages\/privacy"},"giphy_privacy_policies":{"contentpass":"https:\/\/support.giphy.com\/hc\/en-us\/articles\/360032872931-GIPHY-Privacy-Policy ","gdpr":"https:\/\/support.giphy.com\/hc\/en-us\/articles\/360032872931-GIPHY-Privacy-Policy ","ccpa":"https:\/\/support.giphy.com\/hc\/en-us\/articles\/360032872931-GIPHY-Privacy-Policy "},"reddit_privacy_policies":{"contentpass":"https:\/\/www.reddit.com\/policies\/privacy-policy ","gdpr":"https:\/\/www.reddit.com\/policies\/privacy-policy ","ccpa":"https:\/\/www.reddit.com\/policies\/privacy-policy "},"spotify_privacy_policies":{"contentpass":"https:\/\/www.spotify.com\/de-en\/legal\/privacy-policy\/","gdpr":"https:\/\/www.spotify.com\/de-en\/legal\/privacy-policy\/","ccpa":"https:\/\/www.spotify.com\/de-en\/legal\/privacy-policy\/"},"bluesky_privacy_policies":{"contentpass":"https:\/\/bsky.social\/about\/support\/privacy-policy","gdpr":"https:\/\/bsky.social\/about\/support\/privacy-policy","ccpa":"https:\/\/bsky.social\/about\/support\/privacy-policy "},"linkedin_privacy_policies":{"contentpass":"https:\/\/www.linkedin.com\/legal\/privacy-policy","gdpr":"https:\/\/www.linkedin.com\/legal\/privacy-policy","ccpa":"https:\/\/www.linkedin.com\/legal\/privacy-policy"}}},"GPT":{"ad_slot_name":"cloud-computing_section","prefix":"\/8456\/IDG.G_B2B_InfoWorld.com\/","targeting":{"articleId":"2260708","author":"Matt Asay","browser":"Mozilla\/5.0(Macintosh;IntelMacOSX10_15_7)AppleWebKit\/537.36(KHTML,likeGecko)Chrome\/125.0Safari\/537.36","templateType":"article","categorySlugs":"cloud-computing","tags":"","categoryIds":"1924","env":null,"productId":"","goldenIds":"932","channel":"cloud-computing","fireplace":"false","type":"analysis","typeId":"9","sponsored":"false","video-autoplay":"true","manufactuer":"microsoft","url":"https:\/\/www.infoworld.com\/article\/2260708\/no-you-dont-have-to-run-like-google.html","zone":"analysis-article\/cloud-computing","wpsponsorshipId":""},"isViaAdapex":false,"isStickyAdsRightRailActive":true},"geolocation":"US","suppress_monetization":{},"supressBb2bRightrail":"","products":[],"vendor_pricing":{"amazon":[]},"APS":[],"isB2B":"1","isSingle":"1","isCPEnabled":"1","isCPActiveOnThisGeo":"","isEuVisitor":"","isInstantBuybox":""};
</script>
<script id="third-party-integrations-script-js-before">
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({"adBlockerEnabled":true,"arenaId":"","audience":"enterprise","ccpaOptedOut":"false","environment":"wp_production","sessionNumber":"@TODO","firstSessionDate":"@TODO","lastSessionDate":"@TODO","timestamp":1789195061,"url":"https:\/\/www.infoworld.com\/article\/2260708\/no-you-dont-have-to-run-like-google.html","triblioPixelCode":"","isAdapexActive":false,"prodIds":"","prodCategories":"","prodManufacturers":"","prodNames":"","prodVendors":"","productBlocks":"","categories":"cloud computing","categoryIds":"1924","categoriesSlugs":"cloud-computing","channel":"cloud-computing","primaryCategory":"cloud computing","primaryAncestorCategoryList":"cloud computing","primaryAncestorCategoryListSlugs":"cloud-computing","ancestorGoldenCategories":"cloud-computing","goldenTaxonomyIdPrimary":"932","gtaxPrimaryIdsList":"932","gtaxPrimarySlugsList":"cloud-computing","gtaxIdList":"932","gtaxList":"cloud computing","bcGtaxIdList":[932],"bcGtaxList":["cloud computing"],"language":"English","author":"Matt Asay","translation":"no","translationOriginalArticleId":"","translationOriginalPublication":"","translationOriginalLanguage":"","translationOriginalBrand":"","dateFirstPublished":"2020-10-12","dateFirstTimePublished":"2020-10-12T06:00:00-04:00","datePublished":"2020-10-12","dateTimePublished":"2020-10-12T06:00:00-04:00","daysSinceUpdated":"2161","dateTimeUpdate":"2020-10-12T06:00:00-04:00","dateUpdate":"2020-10-12","articleId":"2260708","articleTitle":"No, you don\u2019t have to run like Google","articleType":"default","isBlog":"false","blogname":"","blogId":"","brandpost":"false","content_type":"Analysis","daysSincePublished":"2161","description":"Just because Google, Amazon, or Facebook does it doesn\u2019t mean you should. Here are four \u2018best practices\u2019 of the hyperscalers you have permission to ignore.","displayType":"article","fireplace":"false","pageNumber":"1","page_type":"article","platform":"web","podcastSponsored":"false","property":"infoworld","source":"infoworld","sponsorName":"","sponsorshipId":"","tags":[],"legacyCmsId":"3585176","edition":"us","articleLocale":"","isInsiderContent":"false","insiderSignedIn":"false","adSuppression":"false","BCUID":"","legacyCmsName":"Onecms","idgAppID":{"SITE_TYPE":[{"brand_short":"iw","brand":"IW","connectedhub":"b2b","site":"infoworld.com","sourcecms":"onecms","staff":"Infoworld Staff","type":"delivery"}],"IDG_APP_ID":9049},"adestraId":"","linkwrapSuppressed":"false","paragraphCount":0});
(function(){
const isContentPassOn = true;
const isDeAt = ['DE','AT'].indexOf(IDG.geolocation) !== -1; // special case
const isContentPassCookiePresent = function () {
const data = (document.cookie.match(/^(?:.*;)?\s*_cpauthhint\s*=\s*([^;]+)(?:.*)?$/) || [,null])[1]; //eslint-disable-line
console.log('^^CP cookie value = '+data);
if (data) return true;
return false
};
const fireGtm = function(){
console.log('^^GTM Firing');
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NN43QC7W');
};
console.log('^^Content pass is active =',isContentPassOn);
if(isContentPassOn) {
const userHasCPCookie = isContentPassCookiePresent(); //does the user have the Content pass cookie
console.log('^^User has contentpass cookie=',userHasCPCookie, ', User is DE/AT =',isDeAt);
if(userHasCPCookie || isDeAt){
document.addEventListener('consentManagerReady', () => {
if(consentManager.gdprApplies) {
const hasConsent = consentManager.checkConsentByVendor('Google Inc');
console.log('^^ContentPass on and GTM consent =',hasConsent);
if(hasConsent===true)fireGtm();
} else {//not gdpr so fire
fireGtm();
}
});
} else {//no cookie so fire
fireGtm();
}
} else {
fireGtm();
}
})();
// Permutive Stub
!function(n,e,i){if(!n){n=n||{},window.permutive=n,n.q=[],n.config={}||{},n.config.apiKey=e,n.config.environment=n.config.environment||"production";for(var o=["addon","identify","track","trigger","query","segment","segments","ready","on","once","user","consent"],r=0;r<o.length;r++){var t=o[r];n[t]=function(e){return function(){var i=Array.prototype.slice.call(arguments,0);n.q.push({functionName:e,arguments:i})}}(t)}}}( window.permutive,
'84c7e805-5ce9-41f4-b988-3529488bab1c'
);
window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.googletag.cmd.push(function(){if(0===window.googletag.pubads().getTargeting("permutive").length){var g=window.localStorage.getItem("_pdfps");window.googletag.pubads().setTargeting("permutive",g?JSON.parse(g):[])}});
let categorySlug = 'cloud-computing';
const stripOutIllegal = s => s.replace(/[~'"=!+#;^()<>&[]]/g,'');
window.ntvConfig = window.ntvConfig || {} ;
window.ntvConfig.keyValues = window.ntvConfig.keyValues || {};
const segs = localStorage.getItem('_pnativo');
if (segs) {
window.ntvConfig.keyValues.permutive = JSON.parse(segs).join(",");
}
const metaKeywordsTag = document.querySelector("meta[name='keywords']");
if ( metaKeywordsTag && (metaKeywordsTag.hasAttribute('content')) ) {
const kwds = metaKeywordsTag.content.split(',').filter(kw => kw.length <= 40);
window.ntvConfig.keyValues.contextual = stripOutIllegal(kwds.join(','));
}
[categorySlug].forEach(function(val) {
if (val.length !== 0) {
window.ntvConfig.keyValues.channel = stripOutIllegal(val);
}
});
if (typeof(window.ntvConfig.keyValues.channel) === "undefined") {
window.ntvConfig.keyValues.channel = "";
}
const doSomething = () => {
const boxes = document.querySelectorAll('.nativo-loading');
boxes.forEach(box => {
box.classList.remove('nativo-loading');
});
}
var ntv=ntv||{};ntv.cmd=ntv.cmd||[]; // setup command queue
ntv.cmd.push(function(){ setTimeout(doSomething, 1000) });
window._io_config = window?._io_config || {};
window._io_config["0.2.0"] = window?._io_config["0.2.0"] || [];
window._io_config["0.2.0"].push({"page_url":"https:\/\/www.infoworld.com\/article\/2260708\/no-you-dont-have-to-run-like-google.html","page_url_canonical":"","page_title":"No, you don\u2019t have to run like Google | InfoWorld","page_type":"article","page_language":"en","article_authors":["Matt Asay"],"article_type":"Analysis","article_publication_date":"Mon, 12 Oct 2020 6:00:00 EDT","article_categories":["Cloud Computing"]});
</script>
<script src="https://www.infoworld.com/wp-content/client-mu-plugins/idg-third-party/dist/scripts/index.js?ver=1789061466" id="third-party-integrations-script-js"></script>
<script type="text/javascript" src="https://www.infoworld.com/_static/??-eJydzMENgzAMAMCF6hokFOCBOkuII3AUUss2QmxfZujrfoeXQPo2z80xVX6A4wSp58bNkGkD31kJJKrfSGyOlpTFDcslNd5Z38Ve+H8jmlcmiGRP9DmWfpzmLvRDCOUHaHU55Q==" ></script><script async src="https://cdn.onthe.io/io.js/OmWzZwn3Mi5H?ver=1" id="io_script_code-js"></script>
<script type="text/javascript" src="https://www.infoworld.com/_static/??-eJzTLy/QzcxLzilNSS3WzwKiwtLUokoopZebmaeXVayjj0+Rbm5melFiSSpUsX2uraG5hbmZgYmFhUUWAK/QIjE=" ></script><script type="text/javascript" src="https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/scripts/custom-multiselect.js?m=1789061466g" ></script>
<script src="https://cp.infoworld.com/now.js" async fetchPriority="high" onerror="cp('fatal', arguments)"></script>
<!-- ContentPass configuration -->
<script type="text/javascript" data-description="contentpass integration">
/**
* If contentpass is enabled, we need the acps param,
* otherwise, we need type GDPR that will be called from
* client-mu-plugins/idg-third-party/src/modules/sourcepoint.js#L140.
*/
window._sp_.config.gdpr.targetingParams.acps = 'false';
window._sp_.config.isSPA = true;
(function() {
// get contentpass configuration details
var contentpassBaseUrl = 'https://cp.infoworld.com';
var contentpassPropertyId = '17801f76';
var cpController = contentpassBaseUrl + '/now.js';//todo - never used?
!function(C,o,n,t,P,a,s){C.CPObject=n,C[n]||(C[n]=function(){
for(var e=arguments.length,i=new Array(e),c=0;c<e;c++)i[c]=arguments[c];const[r,u,l]=i;if(C[n].q||(C[n].q=[]),
t=Array.prototype.slice.call(arguments,0),!C[n].patched&&("fatal"===r&&u&&(C[n].le=u,
Array.prototype.forEach.call(C[n].q,(function(e){"error"===e[0]&&"function"==typeof e[1]&&e[1](u)}))),
"error"===r&&"function"==typeof u&&C[n].le&&u(C[n].le),"extension"===r&&u&&l&&"function"==typeof l.init&&(l.init(),
l.initialized=!0),"authenticate"===r&&u)){try{
P=-1===(o.cookie||"").indexOf("_cpauthhint=")&&!(C.localStorage||{})._cpuser&&-1===C.location.href.toLowerCase().indexOf("cpauthenticated")
}catch(e){P=!1}P&&(a={isLoggedIn:function(){return!1},hasValidSubscription:function(){return!1}},
"function"==typeof u&&u(null,a),t=["authenticate",null])}C[n].q.push(t)});try{
((s=(o.cookie.split("_cpauthhint=")[1]||"").split(";")[0])?Number(s[1]):NaN)>0&&(o.body?o.body.classList.add("cpauthenticated"):o.addEventListener("DOMContentLoaded",(function(){
o.body.classList.add("cpauthenticated")})))}catch(e){}C[n].l=+new Date,C[n].sv=5}(window,document,"cp");
// Will activate contentpass and initialize basic interfaces for
// communicating with contentpass.
cp('create', contentpassPropertyId, {
baseUrl: contentpassBaseUrl
});
// This function will trigger rendering of the Sourcepoint consent layer. First, it will check
// whether the current user is an authenticated contentpass user. If so, the targeting parameter
// acps is set to the string value 'true' (important: the value is not a bool, but a string!).
// If the user is not an authenticated contentpass user, the targeting parameter is set to
// 'false'. Make sure to not show the consent layer when the targeting parameter is set to 'true'
// in your Sourcepoint scenario. When login status is determined, Sourcepoint is automatically
// triggered by calling window._sp_.executeMessaging().
cp('render', {
onFullConsent: function() {
console.log('[CP] onFullConsent');
//! set the below or use the above code
//window.visitorConsentedAll = true;
// Init advertising here
//
// Attention:
// When you update your vendor list without asking for re-consent
// then Sourcepoint does not signal full consent for previously
// fully consented visitors. Thus this callback is not executed,
// and partially consented impressions are not monetized at all!
//
// We therefore strongly recommend to configure your Sourcepoint
// scenario setup to always ask for re-consent on vendor updates.
//
// Alternatively you can always load vendors specifically based
// on their respective consent status according to the TCF API.
// You can find a sample integration for this on
// https://docs.contentpass.net/docs/3rdparty
}
});
(function () {
cp('authenticate', function(err, user) {
if (err || (!user.isLoggedIn() && !user.hasValidSubscription())) {
(function spExecMsg(attempt) {
var maxAttempts = 100;
if (window._sp_ && window._sp_.executeMessaging) {
if (!window._sp_.config.isSPA) {
console.warn('###### Contentpass [SPCP] Sourcepoint not in SPA mode!');
} else if (window._sp_.version) {
console.log('###### Contentpass [SPCP] Sourcepoint already running');
} else {
console.log('###### Contentpass [SPCP] Starting Sourcepoint');
window._sp_.executeMessaging();
}
return;
}
if (attempt >= maxAttempts) {
console.warn('###### Contentpass [SPCP] Sourcepoint not loaded. Stopping retry.');
return;
}
setTimeout(function () {
spExecMsg(attempt + 1);
}, 100);
})(0);
}
if (user.isLoggedIn() && user.hasValidSubscription()) {
console.log('###### Contentpass user.isLoggedIn() && hasValidSubscription. Setting acps to true');
window._sp_.config.gdpr.targetingParams.acps = 'true';
window.cpLoggedInUser = true;
}
window.cpLoggedInUser = window.cpLoggedInUser || false;
});
})();
})();
</script>
<!-- ContentPass configuration end -->
<script>
window.blocksForConsent = {
"instagram": {
"platform": "instagram",
"platformName": "Instagram.com",
"selector": ".wp-block-embed-instagram",
"privacyPolicyLink": 'instagram_privacy_policies',
"callback": "instagramCallback()"
},
"megaphone": {
"platform": "megaphone",
"platformName": "Megaphone.fm",
"selector": ".wp-block-embed-megaphone, iframe[data-src*=\"megaphone\"]",
"privacyPolicyLink": 'megaphone_privacy_policies',
"callback": "megaphoneCallback()"
},
"slideshare": {
"platform": "slideshare",
"platformName": "Slideshare.net",
"selector": "iframe[data-src*=\"slideshare.net\"]",
"privacyPolicyLink": 'slideshare_privacy_policies',
"callback": "slideshareCallback()"
},
"facebook": {
"platform": "facebook",
"platformName": "Facebook.com",
"selector": ".embed_url_facebook, iframe[data-src*=\"facebook\"]",
"privacyPolicyLink": 'facebook_privacy_policies',
"callback": "loadFacebookEmbed()"
},
"twitter": {
"platform": "twitter",
"platformName": "Twitter.com",
"selector": ".wp-block-embed-twitter",
"privacyPolicyLink": 'twitter_privacy_policies',
"callback": "twitterCallback()"
},
"x": {
"platform": "x",
"platformName": "X.com",
"selector": ".wp-block-embed-x",
"privacyPolicyLink": 'twitter_privacy_policies',
"callback": "twitterCallback()"
},
"youtube": {
"platform": "youtube",
"platformName": "Youtube.com",
"selector": ".wp-block-embed-youtube, [data-type=\"youtube\"], .youtube-video .video-container",
"privacyPolicyLink": 'toutube_privacy_policies',
"callback": "youtubeCallback()"
},
"tiktok": {
"platform": "tiktok",
"platformName": "Tiktok.com",
"selector": ".wp-block-embed-tiktok",
"privacyPolicyLink": 'tiktok_privacy_policies',
"callback": "tiktokCallback()"
},
"infogram": {
"platform": "infogram",
"platformName": "Infogram.com",
"selector": ".infogram-embed",
"privacyPolicyLink": 'infogram_privacy_policies',
"callback": "infogramCallback()"
},
"applepodcast": {
"platform": "apple",
"platformName": "Apple.com",
"selector": ".apple_podcasts iframe",
"privacyPolicyLink": 'apple_podcast_privacy_policies',
"callback": "loadApplePodcastplayer()"
},
"jetpackpodcastplayer": {
"platform": "jetpack",
"platformName": "Jetpack.com",
"selector": ".wp-block-jetpack-podcast-player",
"privacyPolicyLink": 'jetpack_podcast_player_privacy_policies',
"callback": "loadPodcastplayer()"
},
"flourish": {
"platform": "flourish",
"platformName": "Flourish.studio",
"selector": ".flourish-chart",
"privacyPolicyLink": 'flourish_privacy_policies',
"callback": "flourishCallback()",
"vendorName": "Flourish"
},
"vimeo": {
"platform": "vimeo",
"platformName": "Vimeo.com",
"selector": ".wp-block-embed-vimeo",
"privacyPolicyLink": 'vimeo_privacy_policies',
"callback": "vimeoCallback()"
},
"soundcloud": {
"platform": "soundcloud",
"platformName": "Soundcloud.com",
"selector": ".wp-block-embed-soundcloud",
"privacyPolicyLink": 'soundcloud_privacy_policies',
"callback": "soundcloudCallback()"
},
"giphy": {
"platform": "giphy",
"platformName": "Giphy.com",
"selector": ".wp-block-jetpack-gif",
"privacyPolicyLink": 'giphy_privacy_policies',
"callback": "giphyCallback()"
},
"reddit": {
"platform": "reddit",
"platformName": "Reddit.com",
"selector": ".wp-block-embed-reddit",
"privacyPolicyLink": 'reddit_privacy_policies',
"callback": "redditCallback()"
},
"spotify": {
"platform": "spotify",
"platformName": "Spotify.com",
"selector": ".wp-block-embed-spotify",
"privacyPolicyLink": 'spotify_privacy_policies',
"callback": "spotifyCallback()"
},
"bluesky": {
"platform": "bluesky",
"platformName": "Bluesky.com",
"selector": ".wp-block-embed-bluesky-social,.wp-block-embed-bluesky",
"privacyPolicyLink": 'bluesky_privacy_policies',
"callback": "blueskyCallback()"
},
"linkedin": {
"platform": "linkedin",
"platformName": "LinkedIn.com",
"selector": "iframe[data-src*=\"linkedin.com\"]",
"privacyPolicyLink": 'linkedin_privacy_policies',
"callback": "linkedinCallback()"
}
};
function getOverlayMessage(platform, platformName, privacyPolicyLink, foundryPPLink, callback, cmpType) {
let customHTMLTextOverlay = window?.IDG?.settings?.overlays_privacy_policies?.consent_overlays?.english_overlay_message ?? '';
customHTMLTextOverlay = customHTMLTextOverlay.replace(/\$\{platformName\}/g, platformName).replace(/\$\{privacyPolicyLink\}/g, privacyPolicyLink).replace(/\$\{foundryPPLink\}/g, foundryPPLink).replace(/\$\{platform\}/g, platform).replace(/\$\{callback\}/g, callback).replace(/\$\{cmp\}/g, cmpType);
return customHTMLTextOverlay;
}
function setOverlayCookie(name, value, days) {
let expires = "";
if (days) {
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function getOverlayCookie(name) {
const nameEQ = name + "=";
const ca = document.cookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
}
return null;
}
function renderOverlay(element, platform, platformName, ppLink, foundryPPLink, callback, cmpType) {
const cookieName = `hide-overlay-${platform}`;
const consentGiven = getOverlayCookie(cookieName);
console.log('[Consent] renderOverlay cookieName %s consent given %s',cookieName, consentGiven);
if (consentGiven !== 'true') {
const overlayNextExists = jQuery(element).next(`.${cookieName}`).length > 0;
const overlayPrevExists = jQuery(element).prev(`.${cookieName}`).length > 0;
if (!overlayNextExists && !overlayPrevExists) {
const textOverlay = getOverlayMessage(platform, platformName, ppLink, foundryPPLink, callback, cmpType);
jQuery(textOverlay).insertAfter(element);
jQuery(element).hide();
}
} else {
jQuery(element).show();
//eval(callback);
window[callback.split('(')[0]]();//dont think any of the have actual arguments
const src = element.getAttribute('src');
const dataSrc = element.getAttribute('data-src');
console.log('[Consent] renderOverlay src %s dataSrc %s',src, dataSrc);
if (dataSrc ) {
element.setAttribute('src', dataSrc); // Move data-src to src
}
}
}
function showOverlays(cmpType) {
console.log('[Consent] showOverlays cmpType ',cmpType);
const blocksForConsent = window?.blocksForConsent ?? [];
Object.entries(blocksForConsent).forEach(function([key, value]) {
//key = slideshare, twitter etc
const { platform, platformName, selector, privacyPolicyLink, callback } = value;
const elements = document.querySelectorAll(`${selector}`);
// selector for iframes and scripts within 'legacy_content' for the custom blcok.
const legacySelector = `.legacy_content iframe[data-src*="${platform}"], .legacy_content script[src*="${platform}"], .legacy_content script[data-src*="${platform}"], .legacy_content blockquote[class*="${platform}"]`;
// Select all iframes and scripts within the div with class 'legacy_content' that match the dynamic selectors.
const legacyElements = document.querySelectorAll(legacySelector);
const ppLink = window?.IDG?.settings?.overlays_privacy_policies?.[privacyPolicyLink]?.[cmpType];
const foundryPPLink = window?.IDG?.settings?.overlays_privacy_policies?.foundry_privacy_policies?.[cmpType];
elements.forEach(function(element) {
renderOverlay(element, platform, platformName, ppLink, foundryPPLink, callback, cmpType)
});
legacyElements.forEach(function(element) {
renderOverlay(element, platform, platformName, ppLink, foundryPPLink, `renderCustomBlockInLegacyContent('${platform}', '${callback}')`, cmpType);
});
});
}
</script>
<script>
/**
* Load podcast player if user accepted consent
**/
function iframeLoaded( podcastIframe ) {
if( podcastIframe ) {
const height = podcastIframe.contentWindow.document.body.scrollHeight + 'px';
podcastIframe.style.height = height;
}
}
function loadPodcastplayer(){
const podcastElements = document.querySelectorAll('.wp-block-jetpack-podcast-player');
if( podcastElements ){
let count = 1;
Array.from(podcastElements).map(function(element) {
if (!element.querySelector('iframe')) {
let postId = element.getAttribute('post_id');
let podcastIframe = document.createElement("iframe");
const siteUrl = document.location.origin;
podcastIframe.src = siteUrl+"/podcast-player?id="+postId+"&position="+count+'&_ajaxnonce=469a05ceb4';
podcastIframe.width = "100%";
podcastIframe.frameBorder ="0";
podcastIframe.scrolling = "0";
podcastIframe.style.border= "none";
podcastIframe.scrolling = "no";
element.appendChild(podcastIframe);
podcastIframe.onload = function() {
setTimeout( function() { iframeLoaded( podcastIframe ); }, 1000);
};
count++;
}
});
}
}
/**
* Load Apple podcast-block if user accepted consent
**/
function loadApplePodcastplayer(){
const applePodcastElements = document.querySelectorAll('.apple_podcasts iframe');
if( applePodcastElements ){
Array.from(applePodcastElements).map(function(element) {
const dataSrc = element.getAttribute('data-url');
const dataHeight = element.getAttribute('data-height');
element.src = dataSrc;
element.height = dataHeight;
});
}
}
/**
* Load custom HTML block if user accepted consent
*/
function customHTMLCallback() {
jQuery('.legacy_content iframe, .legacy_content script, .legacy_content img').each(function(index, element) {
const dataSrc = jQuery(element).attr('data-src');
if(dataSrc) {
if( element.nodeName.toLowerCase() === 'script' ) {
let genericScript = document.createElement("script");
genericScript.type = "text/javascript";
genericScript.async = true;
genericScript.src = dataSrc;
element.parentNode.insertBefore(genericScript, element);
element.remove();
} else {
jQuery(element).attr('src', jQuery(element).attr('data-src'));
}
jQuery(element).show();
}
});
jQuery("[class*='custom-html-consent-notice-']").hide();
}
function renderCustomBlockInLegacyContent(selector, callback) {
const legacySelector = `.legacy_content iframe[data-src*="${selector}"], .legacy_content script[src*="${selector}"], .legacy_content script[data-src*="${selector}"], .legacy_content blockquote[class*="${selector}"], .legacy_content img[data-src*="${selector}"]`;
jQuery(legacySelector).each(function(index, element) {
if( element.nodeName.toLowerCase() === 'script' ) {
let genericScript = document.createElement("script");
genericScript.async = true;
genericScript.src = jQuery(element).attr('data-src');
element.parentNode.insertBefore(genericScript, element);
element.remove();
} else {
jQuery(element).attr('src', jQuery(element).attr('data-src'));
}
jQuery(element).show();
});
//eval(callback);
console.log('[Consent] renderCustomBlockInLegacyContent calling callback');
window[callback.split('(')[0]]();//dont think any of the have actual arguments
}
/**
* Load Spotify if user accepted consent.
*/
/**
* Load bluesky if user accepted consent.
*/
document.addEventListener('consentManagerReady', () => {
const debug = consentManager.debug;
if(debug)console.log('#### Widget Consent Check consentRequired %s', consentManager.consentRequired);
let vendors = [];
if(loadPodcastplayer)
vendors.push({
name: "Podigee",
callback: loadPodcastplayer,
consentOk: false
});
if(loadApplePodcastplayer)
vendors.push({
name: "Apple Podcasts",
callback: loadApplePodcastplayer,
consentOk: false
});
//if we need consent then check if - includes US optout too
if(consentManager.consentRequired === true){
vendors.forEach( (vendor)=>{
const vendorNames = (vendor.checkAdditional ?? []);
vendorNames.push(vendor.name);// array of primary i.e. name and additionals
//must pass all
vendor.consentOk = vendorNames.every( name => {
return consentManager.checkConsentByVendor(name) === true;
});
});
} else {
//no consent needed could default to this above
vendors.forEach( (vendor)=>{
vendor.consentOk = true;
});
}
//no specific vendor - need all or not applicable
if( ( consentManager.consentRequired && consentManager.consentedAll ) || !consentManager.consentRequired){
setTimeout(customHTMLCallback, 0);
if(debug)console.log('#### Widget Consent Allowing Custom');
}else if ( consentManager.consentRequired && !consentManager.consentedAll ) {
if(consentManager.gdprApplies === true)showOverlays('gdpr');
else if(consentManager.usOptOutApplies === true)showOverlays('ccpa');//todo - gpp too?
}
vendors.forEach( (vendor)=>{
if(vendor.consentOk) {
if(debug)console.log('#### Widget Consent Allowing %s', vendor.name);
try {
setTimeout(vendor.callback, 0);
} catch (error) {
console.error('#### Widget Consent Callback Error - FIX ME %s', vendor.name, error);
}
}else{
if(debug)console.log('#### Widget Consent Denying %s', vendor.name);
}
});
});
</script>
<script type="application/ld+json">[{"@context":"https:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infoworld.com\/"},{"@type":"ListItem","position":2,"name":"Cloud Computing","item":"https:\/\/www.infoworld.com\/cloud-computing\/"}]},{"@context":"https:\/\/schema.org","@type":"Article","url":"https:\/\/www.infoworld.com\/article\/2260708\/no-you-dont-have-to-run-like-google.html","publisher":{"@type":"Organization","name":"InfoWorld","url":"https:\/\/www.infoworld.com","logo":{"@type":"ImageObject"}},"author":{"@type":"Person","name":"Matt Asay","jobTitle":"Contributing Writer","url":"https:\/\/www.infoworld.com\/profile\/matt-asay\/"},"name":"No, you don\u2019t have to run like Google","headline":"No, you don\u2019t have to run like Google","articleBody":"Years ago, Google struggled with how to pitch its cloud offerings. Back in 2017 I suggested\u00a0that the company should help mainstream enterprises to \u201crun like Google,\u201d but in a conversation with a senior Google Cloud product executive, he suggested that the company shied away from this approach. The concern? That maybe mainstream enterprises didn\u2019t share Google\u2019s needs, or maybe Google would simply intimidate them.\nFor the mere mortals that run IT within such mainstream enterprises (read: almost everyone), fear not. It turns out there are many things that Google might do that make no sense for your own IT needs.\n\nJust ask Colm MacC\u00e1rthaigh, AWS engineer and one of the authors of the Apache HTTP Server, who asked for \u201cexamples of technical things that don\u2019t make sense for everyone just because Amazon, Google, Microsoft, Facebook\u201d do them. The answers\u2014excessive uptime guarantees, site reliablity engineering, microservices, and monorepos among the highlights\u2014are instructive.\nExcessive uptime guarantees\n\u201cFive or five-plus nines availability guarantees,\u201d says Pete Ehlke. \u201cOutside of medicine and 911 call centers, I can\u2019t think of anything shy of FAANG [Facebook, Amazon, Apple, Netflix, and Google] scale that actually needs five nines, and the ROI pretty much never works out.\u201d\nI remember this one well from the variety of startups for which I worked, as well as when I was at Adobe (whose service-level commitments tend not to be five nines, but are arguably higher than necessary). Are you going to be OK if the multi-player game goes down? Yep. What about Office 365 for a few minutes, or even hours? Yes and yes.\nSite reliability engineering\nA bit of a spin on devops (though it predates the devops movement), SRE (named in multiple replies to MacC\u00e1rthaigh) came out of Google in 2003, and was designed to infuse engineering with an operational focus. A few core principles guide SRE:\n\nEmbrace risk\nUtilize service level objectives (SLOs)\nEliminate toil\nMonitor distributed systems\nLeverage automation and embrace simplicity\n\nOr, as Ben Traynor, who developed Google\u2019s SRE practice, describes it:\n\nSRE is fundamentally doing work that has historically been done by an operations team, but using engineers with software expertise and banking on the fact that these engineers are inherently both predisposed to, and have the ability to, substitute automation for human labor. In general, an SRE team is responsible for availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning.\n\nSREs spend much of their time on automation, with the ultimate goal being to automate away their job. They spend considerable time on \u201coperations\/on-call duties and developing systems and software that help increase site reliability and performance,\u201d says Silvia Pressard.\nThis sounds important, and even more so if you equate \u201csite reliability\u201d with \u201cbusiness availability.\u201d But do most companies really need their developers to become operational experts? SRE might be critical at Google or Amazon, but it\u2019s arguably a heavy lift for most enterprises, tasking developers with too much of an operational load for them to manage it successfully.\nMicroservices architecture\nAs commentator \u201cBuzzy\u201d tells it, \u201cDefinitely microservices. The number of 20-staff-in-total companies I\u2019ve had to talk down from that ledge\u2026.\u201d Nor is he the only one to call out microservices as a needless complication for most enterprises. Many of the replies to MacC\u00e1rthaigh\u2019s tweet mentioned microservices.\nAs Martin Fowler has argued, \u201cWhile [microservices] is a useful architecture\u2014many, indeed most, situations would do better with a monolith.\u201d Wait, what? Aren\u2019t monoliths an evil relic of the past? Of course it\u2019s not that simple.\u00a0As I\u2019ve written,\n\nThe great promise of microservices is freedom. Freedom to break up an application into distinct services that are independently deployable. Freedom to build these disparate services with different teams using their preferred programming language, tooling, database, etc. In short, freedom for development teams to get stuff done with minimal bureaucracy.\n\nBut for many applications, that freedom comes at unnecessary costs, as Fowler highlights:\n\nDistribution: Distributed systems are harder to program, since remote calls are slow and are always at risk of failure.\nEventual consistency: Maintaining strong consistency is extremely difficult for a distributed system, which means everyone has to manage eventual consistency.\nOperational complexity: You need a mature operations team to manage lots of services, which are being redeployed regularly.\n\nThis last point is underlined by Sam Newman: \u201cFor a small team, a microservice architecture can be hard to justify, as there is work required just to handle the deployment and management of the microservices themselves.\u201d\nIt\u2019s not to say that a microservices approach is always wrong. No, it\u2019s simply a suggestion that we shouldn\u2019t default to a more complicated (but scalable) approach simply because the hyperscalers use it (generally because scale is so critical).\nA monorepo to rule them all\nWhether microservices or monolithic in nature, you probably shouldn\u2019t store your code in a \u201cmonorepo.\u201d This was a common response to MacC\u00e1rthaigh\u2019s request. Monorepos store all of a company\u2019s code in a single version control system (VCS), to seize on the (supposed) benefits of reducing duplication of code and increasing collaboration between teams.\nThat\u2019s the theory.\nThe practice, however, is very different. \u201cIt quickly becomes unreasonable for a single developer to have the entire repository on their machine, or to search through it using tools like grep,\u201d says Matt Klein, an engineer who has built some of the most sophisticated systems at Amazon, Twitter, and now Lyft. \u201cGiven that a developer will only access small portions of the codebase at a time, is there any real difference between checking out a portion of the tree via a VCS or checking out multiple repositories? There is no difference.\u201d\nKlein continues:\n\nIn terms of collaboration and code sharing, at scale, developers are exposed to subsections of code through higher layer tooling. Whether the code is in a monorepo or polyrepo is irrelevant; the problem being solved is the same, and the efficacy of collaboration and code sharing has everything to do with engineering culture and nothing to do with code storage.\n\nYou be you\nOf course, some companies may benefit from monorepos or five-nines availability or microservices or SRE. They might also benefit from rolling their own framework, building their own infrastructure, or any of the other things that commentators on MacC\u00e1rthaigh deride. The point is that just because Google, Facebook, Amazon, or another hyperscaler does it, doesn\u2019t mean you should. When in doubt, doubt. Start with the individual needs of your company and figure out the right approach to building and managing software according to who you are, not who you wish you were.","wordCount":1113,"image":["https:\/\/www.infoworld.com\/wp-content\/uploads\/2024\/06\/07_future-100692258-orig.jpg?quality=50&strip=all"],"datePublished":"2020-10-12T06:00:00-04:00","dateModified":"2020-10-12T06:00:00-04:00","keywords":"Cloud Computing","mainEntityOfPage":"https:\/\/www.infoworld.com\/article\/2260708\/no-you-dont-have-to-run-like-google.html"}]</script> <script>
window._conv_q = window._conv_q || [];
var _conv_page_type = "Analysis";
var _conv_category_name = "Cloud Computing";
var _conv_custom_v1 = "";
var _conv_custom_v2 = "article";
var _conv_custom_v3 = "";
(function () {
//document.addEventListener('DOMContentLoaded', function() {
const fireScript = function() {
console.log('[Convert] loading convert script');
const script = document.createElement('script');
script.src = '//cdn-4.convertexperiments.com/v1/js/100411965-100412823.js?environment=production';
script.async = true;
document.head.appendChild(script);
if (consentManager.eventDispatched === true) {
if( consentManager.checkConsentByVendor('Convert') !== false ){
console.log('[Convert]1 Setting cookie consent for Convert _conv_q = ' + (typeof _conv_q));
if (_conv_q) _conv_q.push({ what: "consentGiven" });
}
} else {
document.addEventListener('consentManagerReady', () => {
if( consentManager.checkConsentByVendor('Convert') !== false ){
console.log('[Convert]2 Setting cookie consent for Convert _conv_q = ' + (typeof _conv_q));
if (_conv_q) _conv_q.push({ what: "consentGiven" });
}
});
}
};
const ifCPActiveForGeo = window.IDG?.isCPActiveOnThisGeo === '1';
if (ifCPActiveForGeo && typeof window.cp === 'function') {
document.addEventListener('consentManagerReady', () => {
console.log('[Convert] CP is active for this geo, checking if user is logged in and has valid subscription');
window.cp('authenticate', function (error, user) {
if (error || (user.isLoggedIn() && user.hasValidSubscription())) {
console.log('[Convert] CP user is authenticated and has valid subscription, not loading convert script');
return;// error or CP users, do nothing
} else {
console.log('[Convert] CP user is not authenticated with valid subscription');
fireScript();
}
});
});
} else {
fireScript();
}
//});
}());
</script>
<style>
:root {
--nativo-loader-color: #424a45;
--sponsored-links--border-bottom-color: #9d9490;
--sponsored-container--background-color: #fff;
}
</style>
<link rel="shortcut icon" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/favicon.ico" type="image/x-icon"/>
<link rel="apple-touch-icon" sizes="180x180" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/favicon-16x16.png">
<link rel="manifest" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/site.webmanifest">
<link rel="mask-icon" href="https://www.infoworld.com/wp-content/themes/iw-b2b-child-theme/src/static/img/safari-pinned-tab.svg" color="#0000cc">
<meta name="msapplication-TileColor" content="#0000cc">
<meta name="theme-color" content="#ffffff">
<style>
:root {
/*Host Speaker Profile*/
--host-speaker-profile-heading-color: #141414;
--host-speaker-profile-heading-font-family: inherit;
--host-speaker-profile-title-description-font-family: inherit;
--host-speaker-title-color: #808080;
--host-speaker-description-color: #141414;
--host-speaker-label-color: #AAA;
--host-speaker-remove-link-color: #c30e0e;
--host-speaker-horizontal-line-color: #DEDEDE;
--host-speaker-company-name-font-color: #75757A;
/* Agenda Block */
--agenda-heading-event-name-color: #141414;
--agenda-heading-font-family: inherit;
--agenda-event-name-font-family: inherit;
--agenda-horizontal-block-divider-color: #dedede;
--agenda-event-month-day-date-color: #322a2a;
--agenda-event-month-date-color: #969696;
--agenda-start-end-time-color: #75757a;
--agenda-error-msg-color: #FF0000;
--agenda-day-time-text-shadow-color: #808080;
--agenda-note-text-color: #808080;
--agenda-label-text-color: #111;
--agenda-multi-day-button-background-color: #000;
--agenda-multi-day-button-text-color: #fff;
--agenda-heading-label-color: #AAA;
--agenda-details-link-color: #327F7C;
--agenda-block-mobile-background-color: #f5f5f5;
/*event content block */
--event-register-btn-bg-color: #ed1b24;
--event-register-btn-color: #fff;
--event-share-icons-color: white;
--event-share-icons-color-fb: #3b5998;
--event-share-icons-color-twitter: #00acee;
--event-share-icons-color-linkedin: #2867b2;
--event-description-top-border: #d8dad8;
--event-details-label-color: #B30000;
--event-details-text-color: #141414;
--event-logo-label: inherit, sans-serif;
--event-description-text-color: #322a2a;
--who-should-attend-heading: inherit;
--who-should-attend-text: inherit, sans-serif;
/* Event Index Page */
--border-color: #75757a;
--filter-background-color: #F6F6F6;
--base-font-color: #322a2a;
--index-more-events-title-color: #141414;
--myraid-font-family: inherit;
--myriad-regular: 400;
--myriad-bold: 700;
--base--global-white-color: #fff;
--base--global-black-color: #000;
--index-events-title-font-hover-color: #B30000;
/* Image Credit */
--image-credit-font-color: #555;
--image-credit-text: "Credit: ";
--event-hero-block-heading-color: #fff;--event-hero-dynamic-background-image: none; }
</style>
<style>
:root {
/* FAQ*/
--faq-heading-seprator-color: #d8d8d8;
--faq-input-box-border-color: #757575;
--faq-remove-link-color: #c30e0e;
--faq-heading-color: #141414;
--faq-heading-font-family: inherit;
--faq-title-description-font-family: inherit;
--faq-label-color: #AAA;
--faq-company-name-font-color: #75757A;
--faq-horizontal-line-color: #DEDEDE;
--faq-head-title--font-family: "graphik", sans-serif;
}
</style>
<style>
:root {
}
</style>
<style>
:root {
--nav-menu-error: #b32d2e;
--promo-unit-hr: #d55d5d;
--promo-unit-title-after: #d04949;
--promo-unit-title: #322a2a;
--promo-unit-before-one: #e42e22;
--promo-unit-before-two: #f3f5f6;
--promo-unit-item-bg: #000;
/* Deals Collection Block */
--deal-collection-productIndex-border-color: #12C7F1;
--deal-collection-deal-header-color: #000;
--deal-collection-deal--view-button--background-color: #21873A;
--deal-collection-deal-price-color: #CD0912;
--site-primary: #3399cc;
--view-button--green: #3e873a;
/* Jobs Collection Block */
--job-collection-productIndex-border-color: #12C7F1;
--job-collection-job-header-color: #000;
--job-collection-job--view-button--background-color: #21873A;
--job-collection-job-price-color: #CD0912;
/* Publication list pop-up pn edit edition page */
--publication-list-container-bg: rgba(255, 255, 255, 1);
--publication-list-container-border: #111;
--publication-list-container-bs: #222;
--publication-list-bg:rgba(100, 100, 100, .6);
--publication-list-popup-header-border: #ddd;
--publication-list-popup-header-bg: #e9e9e9;
/*Lineup Element*/
--lineup-element-error-font-color: #cd423b;
--lineup-element-disabled-button-background-color: #ddd;
--lineup-element-disabled-button-font-color: #eee;
--lineup-element-button-tooltip-background-color: #757575;
--lineup-element-button-tooltip-font-color: #fff;
--lineup-element-note-font-color: #757575;
--lineup-element-button-disabled: hsla(0,0%,100%,.4);
/* LineUp Popover.*/
--lineup-popover-a-color: white;
--lineup-popover-err-color: red;
--lineup-popover-th-color: #d4d4d4;
--lineup-popover-tr-color: #f2f2f2;
--lineup-popover-paginate-a-active-color: #ddd;
--lineup-popover-paginate-a-non-active-color: #006ba1;
/* Slotting settings */
--slotting-settings-taxonomy-help-text-color: #808080;
/* Author section top */
--sponsorship-brandpost-divider-line-color: #D8D8D8;
/* Author Archive Page */
--author-archive-title: rgba(0, 0, 0, .87);
--author-job-title: #000;
--author-share-icons-divider-color: #D8D8D8;
--author-share-icon-fill-color: #111;
/* Sponsors index Page */
--sponsored-index-page-slug-background-color: #eee;
--sponsorship-brandpost--title: 28px;
--sponsorship-title--line-height: 32px;
--uppercase-text: uppercase;
--sponsor-eyebrow--font-color: #75757A;
--sponsor-tooltip-learn-more--font-color: #111111;
--sponsorship-brandpost--title-color: #111111;
/** Block - Price Comparison */
--price-comparison--border-color: #2A7DA7;
--price-comparison--header--font-family: "proxima-nova-condensed", sans-serif;
--price-comparison--header--font-color: #fff;
--price-comparison--header--letter-spacing: 0.78px;
--price-comparison--header--background-color: #2A7DA7;
--price-comparison--record--font-family: "proxima-nova", sans-serif;
--price-comparison--record--border-color: #C7C7C7;
--price-comparison--delivery-text--font-color: #3E3E3E;
--price-comparison--view-button--background-color: #21873A;
--price-comparison--view-button--hover--color: #86D54B;
--price-comparison--view-button--letter-spacing: 0.72px;
--price-comparison--footer--font-color: #666666;
--price-comparison--view-more-button--font-color: #2A7DA7;
/** Block - Product chart */
--product-chart--title--font-family: "proxima-nova", sans-serif;
--product-chart--information-label--font-family: "proxima-nova", sans-serif;
--product-chart--information-value--font-color: #2A7DA7;
--product-chart--review-link--font-color: #2A7DA7;
--product-chart--description--font-color: #4D4D4D;
--product-chart--separator--background-color: #404040;
--product-price-comparison--record--border-color: #e2e1e1;
/** Block - Product chart Pros and Cons */
--product-chart--pros-cons-title--font-family:"proxima-nova", sans-serif;
--product-chart--pros-cons-title--font-color: #111111;
--product-chart--pros-cons-border: 1px solid #ccc;
/** Block - Product widget */
--product-widget--border-color: #878787;
--product-widget--block-title--background-color: #2A7DA7;
--product-widget--block-title--font-color: #fff;
--product-widget--block-title--letter-spacing: 0.78px;
--product-widget--block-title--font-family: "proxima-nova-condensed", sans-serif;
--product-widget--title--font-family: "proxima-nova", sans-serif;
--product-widget--title--font-color: #111111;
--product-widget--information-label--font-family: "proxima-nova", sans-serif;
--product-widget--information-value--font-color: #2A7DA7;
/* How to - at a glance block */
--how-to-at-glance-text-font-family: "canada-type-gibson", sans-serif;
--how-to--step-heading--font-family: "regis", serif;
--how-to--step-border--divider-color: #B6AEAA;
--how-to--at-a-glance--background-color: #E6DCD5;
/* Sponsorship Header. */
--sponsorship-header--font-color: #4d4d4d;
/* fonts */
--fira-sans-semibold: 700;
/* responsive table gradient */
--core-table--gradient--border-color: #C5C5C5;
--core-table--gradient--alpha--border-color: #faf6f445;
/* headings */
--heading-three: 24px;
--heading-four: 20px;
--heading-three-line-height: 30px;
/* Insider Popover.*/
--insider-popover-background-color: white;
--insider-popover-box-shadow-color: rgba(0, 0, 0, .31);
--insider-popover-help-text-color: #4a4a4a;
--insiderPopover-link-color: #322a2a;
--insider-popover-signing-button-text-color: white;
--insider-popover-signin-button-background: #4a3d3d;
--insider-popover-signout-button-background: #b43017;
--insiderPopover-welcome-font-color: #141414;
/* Listing Button */
--insider-listing-primary-button-background : #4e4242;
--insiderPopover-link-hover-color:#3c807c;
--mercury-form--insider-color: #6eae00;
}
</style>
<meta name="displaytype" content="article" />
<meta name="content_type" content="Analysis" />
<meta name="language" content="English" />
<meta name="source" content="https://www.infoworld.com/article/2260708/no-you-dont-have-to-run-like-google.html" />
<link rel="canonical" href="https://www.infoworld.com/article/2260708/no-you-dont-have-to-run-like-google.html" />
<meta name="date" content="October 12, 2020" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://www.infoworld.com/article/2260708/no-you-dont-have-to-run-like-google.html" />
<meta property="og:site_name" content="InfoWorld" />
<meta property="og:title" content="No, you don’t have to run like Google" />
<meta property="og:description" content="Just because Google, Amazon, or Facebook does it doesn’t mean you should. Here are four ‘best practices’ of the hyperscalers you have permission to ignore." />
<meta property="og:image" content="https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?quality=50&amp;strip=all&amp;w=800" />
<meta property="og:image:width" content="800" />
<meta property="og:image:height" content="600" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="https://www.infoworld.com/article/2260708/no-you-dont-have-to-run-like-google.html" />
<meta property="twitter:site" content="InfoWorld" />
<meta property="twitter:title" content="No, you don’t have to run like Google" />
<meta property="twitter:description" content="Just because Google, Amazon, or Facebook does it doesn’t mean you should. Here are four ‘best practices’ of the hyperscalers you have permission to ignore." />
<meta property="twitter:image" content="https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?quality=50&amp;strip=all&amp;w=800" />
<meta name="description" content="Just because Google, Amazon, or Facebook does it doesn’t mean you should. Here are four ‘best practices’ of the hyperscalers you have permission to ignore." />
<!-- There is no amphtml version available for this URL. -->
</head>
<body class="wp-singular post-template-default single single-post postid-2260708 single-format-standard wp-theme-idg-b2b-base-theme wp-child-theme-iw-b2b-child-theme static-header theme-iw">
<div class="advert">
<div class="container advert__container">
<div class="advert__content">
<div class="ad page-ad ad-oc_ad_1 tophat-ad" data-ad-template="oc_ad_1" data-ofp="false"></div>
</div>
</div>
</div> <div class="section-block--notificationbar" role="region" aria-label="Site notification"></div>
<div id="page" class="site">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" style="display:none">
<defs>
<symbol id="icon-search-ai" viewBox="0 0 24 24">
<path d="M11.9087 2.26686C12.0905 1.77563 12.7853 1.77563 12.9671 2.26686L13.8718 4.71189C13.9289 4.86633 14.0507 4.9881 14.2052 5.04525L16.6502 5.94999C17.1414 6.13176 17.1414 6.82655 16.6502 7.00832L14.2052 7.91307C14.0507 7.97021 13.9289 8.09198 13.8718 8.24642L12.9671 10.6914C12.7853 11.1827 12.0905 11.1827 11.9087 10.6914L11.004 8.24642C10.9468 8.09198 10.8251 7.97021 10.6706 7.91307L8.2256 7.00832C7.73436 6.82655 7.73436 6.13176 8.2256 5.94999L10.6706 5.04525C10.8251 4.9881 10.9468 4.86633 11.004 4.71189L11.9087 2.26686Z" fill="currentColor" />
<path d="M7.72486 3.74602C7.72309 3.74634 7.72133 3.74667 7.71957 3.747C4.51968 4.34251 2.75 6.74249 2.75 10.0005C2.75 13.7107 5.19081 16.3974 9.34679 16.3974C13.3099 16.3974 15.7134 13.9542 15.9279 10.5102L14.9012 10.6296C14.7816 11.9736 14.2759 13.0787 13.4842 13.8744C12.5748 14.7885 11.2002 15.3825 9.34679 15.3825C7.4934 15.3825 6.11875 14.7885 5.20936 13.8744C4.29731 12.9577 3.76489 11.6305 3.76489 10.0005C3.76489 8.32734 4.28754 7.00442 5.18471 6.10245C5.79958 5.48429 6.63902 5.01496 7.71957 4.78182C7.72254 4.78118 7.72551 4.78054 7.72849 4.7799L7.72486 3.74602Z" fill="currentColor" />
<path d="M15.6681 15.8041C15.4699 15.6059 15.1486 15.6059 14.9505 15.8041C14.7523 16.0022 14.7523 16.3235 14.9505 16.5217L20.5324 22.1036L21.25 21.386L15.6681 15.8041Z" fill="currentColor" />
</symbol>
<symbol id="icon-magnifying-glass" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.5 4C11.333 4 12.6865 4.57379 13.5792 5.46478C14.4734 6.35713 15 7.6619 15 9.30303C15 10.9091 14.4754 12.2169 13.5767 13.1201C12.6807 14.0207 11.3262 14.6061 9.5 14.6061C7.6738 14.6061 6.31932 14.0207 5.42327 13.1201C4.5246 12.2169 4 10.9091 4 9.30303C4 7.65444 4.51498 6.35093 5.39899 5.46219C6.28065 4.57582 7.63092 4 9.5 4ZM9.5 3C13.595 3 16 5.58424 16 9.30303C16 12.9588 13.595 15.6061 9.5 15.6061C5.405 15.6061 3 12.9588 3 9.30303C3 5.58424 5.34 3 9.5 3ZM15.7286 15.0214C15.5333 14.8262 15.2167 14.8262 15.0214 15.0214C14.8262 15.2167 14.8262 15.5333 15.0214 15.7286L20.5214 21.2286L21.2286 20.5214L15.7286 15.0214Z" fill="currentColor" />
</symbol>
<symbol id="icon-layer-group" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.06082 7.98196L11.5184 11.5864C11.8201 11.7548 12.1873 11.7556 12.4897 11.5884L18.9426 8.02034L12.485 4.41588C12.1833 4.24748 11.8161 4.24675 11.5137 4.41393L5.06082 7.98196ZM3.78756 8.41649L11.031 12.4596C11.6344 12.7964 12.3688 12.7979 12.9736 12.4635L20.2141 8.45997C20.5574 8.27015 20.5583 7.777 20.2158 7.58581L12.9724 3.54269C12.369 3.20591 11.6345 3.20444 11.0298 3.5388L3.7893 7.54234C3.44602 7.73215 3.44503 8.2253 3.78756 8.41649ZM5.83179 15.5596L4.80337 14.9855L3.79099 15.5453C3.4477 15.7351 3.44672 16.2283 3.78924 16.4195L11.0327 20.4626C11.6361 20.7994 12.3705 20.8008 12.9752 20.4665L20.2158 16.4629C20.559 16.2731 20.56 15.78 20.2175 15.5888L19.2034 15.0227L18.1727 15.5926L18.9442 16.0233L12.4914 19.5913C12.189 19.7585 11.8218 19.7578 11.5201 19.5894L5.0625 15.9849L5.83179 15.5596ZM4.80337 10.9855L5.83179 11.5596L5.0625 11.9849L11.5201 15.5894C11.8218 15.7578 12.189 15.7585 12.4914 15.5913L18.9442 12.0233L18.1727 11.5926L19.2034 11.0227L20.2175 11.5888C20.56 11.78 20.559 12.2731 20.2158 12.4629L12.9752 16.4665C12.3705 16.8008 11.6361 16.7994 11.0327 16.4626L3.78924 12.4195C3.44672 12.2283 3.4477 11.7351 3.79099 11.5453L4.80337 10.9855Z" fill="currentColor" />
</symbol>
<symbol id="icon-header-back-btn" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C14.9263 3 17.1512 3.94667 18.6453 5.48436C20.1438 7.02666 21 9.25935 21 12C21 14.6872 20.1458 16.9229 18.6428 18.4807C17.1454 20.0328 14.9194 21 12 21C9.08064 21 6.85464 20.0328 5.35716 18.4807C3.85419 16.9229 3 14.6872 3 12C3 9.25208 3.83549 7.02056 5.31975 5.48173C6.79835 3.94877 9.02006 3 12 3ZM12 2C18.3 2 22 6.1 22 12C22 17.8 18.3 22 12 22C5.7 22 2 17.8 2 12C2 6.1 5.6 2 12 2ZM13.5957 8.35355L10.0602 11.8891C9.86494 12.0843 9.86494 12.4009 10.0602 12.5962L13.5957 16.1317L12.8886 16.8388L9.3531 13.3033C8.76731 12.7175 8.76731 11.7678 9.3531 11.182L12.8886 7.64645L13.5957 8.35355Z" fill="currentColor" />
</symbol>
<symbol id="icon-globe" viewBox="0 0 24 24">
<path d="M19.4 4.8C17.6 3 15 2 12 2C8.9 2 6.4 3 4.6 4.8C2.9 6.6 2 9 2 12C2 14.9 2.9 17.4 4.6 19.2C6.4 21 9 22 12 22C15 22 17.6 21 19.4 19.2C21.1 17.4 22 14.9 22 12C22 9.1 21.1 6.6 19.4 4.8ZM21 11.5H17C17 8.8 16.5 6.5 15.7 4.8C15.4 4.2 15.1 3.7 14.7 3.3C16.3 3.7 17.6 4.4 18.6 5.5C20.1 7 20.9 9 21 11.5ZM12 21C10.9 21 9.9 20.2 9.2 18.7C8.5 17.2 8.1 15 8 12.5H16C15.9 15 15.5 17.2 14.8 18.7C14.1 20.2 13.1 21 12 21ZM8 11.5C8 8.9 8.5 6.8 9.2 5.2C9.9 3.7 10.9 3 12 3C13.1 3 14.1 3.7 14.8 5.2C15.5 6.7 16 8.9 16 11.5H8ZM5.3 5.5C6.3 4.4 7.7 3.7 9.2 3.3C8.9 3.7 8.5 4.2 8.2 4.8C7.4 6.5 7 8.8 6.9 11.5H3C3.1 9 3.9 7 5.3 5.5ZM3 12.5H7C7.1 15.2 7.5 17.5 8.3 19.2C8.6 19.8 8.9 20.3 9.3 20.7C7.7 20.3 6.4 19.6 5.4 18.5C3.9 17 3.1 14.9 3 12.5ZM18.6 18.5C17.6 19.6 16.2 20.3 14.7 20.7C15 20.3 15.4 19.8 15.7 19.2C16.5 17.5 17 15.2 17 12.5H21C20.9 14.9 20.1 17 18.6 18.5Z" fill="currentColor" />
</symbol>
<symbol id="icon-header-angle-down" viewBox="0 0 24 24" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.6022 14.5942L6.65242 9.64446L5.94531 10.3516L10.8951 15.3013C11.4808 15.8871 12.4306 15.8871 13.0164 15.3013L17.9661 10.3516L17.259 9.64446L12.3093 14.5942C12.114 14.7895 11.7974 14.7895 11.6022 14.5942Z" fill="currentColor" />
</symbol>
<symbol id="icon-header-angle-up" viewBox="0 0 24 24" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.3041 9.9058L17.2538 14.8555L17.9609 14.1484L13.0112 9.19869C12.4254 8.6129 11.4757 8.6129 10.8899 9.19869L5.94012 14.1484L6.64723 14.8555L11.597 9.9058C11.7922 9.71053 12.1088 9.71053 12.3041 9.9058Z" fill="currentColor" />
</symbol>
<symbol id="icon-header-angle-right" viewBox="0 0 24 24" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.5942 12.3978L9.64446 17.3476L10.3516 18.0547L15.3013 13.1049C15.8871 12.5192 15.8871 11.5694 15.3013 10.9836L10.3516 6.03387L9.64446 6.74098L14.5942 11.6907C14.7895 11.886 14.7895 12.2026 14.5942 12.3978Z" fill="currentColor" />
</symbol>
<symbol id="icon-circle-bars" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.6453 5.48436C17.1512 3.94667 14.9263 3 12 3C9.02006 3 6.79835 3.94877 5.31975 5.48173C3.83549 7.02056 3 9.25208 3 12C3 14.6872 3.85419 16.9229 5.35716 18.4807C6.85464 20.0328 9.08064 21 12 21C14.9194 21 17.1454 20.0328 18.6428 18.4807C20.1458 16.9229 21 14.6872 21 12C21 9.25935 20.1438 7.02666 18.6453 5.48436ZM22 12C22 6.1 18.3 2 12 2C5.6 2 2 6.1 2 12C2 17.8 5.7 22 12 22C18.3 22 22 17.8 22 12ZM7 10.5V9.5H17V10.5H7ZM7 13.5V14.5H17V13.5H7Z" fill="currentColor" />
</symbol>
<symbol id="icon-circle-xmark" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.6453 5.48436C17.1512 3.94667 14.9263 3 12 3C9.02006 3 6.79835 3.94877 5.31975 5.48173C3.83549 7.02056 3 9.25208 3 12C3 14.6872 3.85419 16.9229 5.35716 18.4807C6.85464 20.0328 9.08064 21 12 21C14.9194 21 17.1454 20.0328 18.6428 18.4807C20.1458 16.9229 21 14.6872 21 12C21 9.25935 20.1438 7.02666 18.6453 5.48436ZM22 12C22 6.1 18.3 2 12 2C5.6 2 2 6.1 2 12C2 17.8 5.7 22 12 22C18.3 22 22 17.8 22 12ZM12 11.2851L15.1777 8.10738L15.8848 8.81449L12.7071 11.9922L15.8934 15.1785L15.1863 15.8856L12 12.6993L8.81374 15.8856L8.10663 15.1785L11.2929 11.9922L8.1152 8.81449L8.8223 8.10738L12 11.2851Z" fill="currentColor" />
</symbol>
</defs>
</svg>
<header id="SiteHeader" class="SiteHeader bg-iw-black">
<div class="container">
<div class="SiteHeader__container">
<div class="SiteHeader__logo">
<a class="" href="https://www.infoworld.com" aria-label="Home page"><svg width="149" height="30" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 360 74"><defs><style>.cls-1{fill:none;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><g id="InfoWorld"><polygon points="0.53 3.28 0.53 11.67 8.67 11.67 8.67 63.88 0.53 63.88 0.53 72.3 29.17 72.3 29.17 63.88 20.89 63.88 20.89 11.67 29.17 11.67 29.17 3.28 0.53 3.28"/><path d="M46.72,24.8,44.22,27V20.15H25.91V28.2h6.18v44H44.24c0-1.42,0-36.91,0-36.91l.54-.44C48,32.28,51.17,31,54.31,31A5.28,5.28,0,0,1,59,33.28c.87,1.35,1.3,3.53,1.3,6.84V72.19H72.47c0-1.41,0-33.41,0-33.41,0-13.12-4.2-19.51-12.84-19.51-4.31,0-8.66,1.87-12.93,5.53"/><path d="M83.11,5.38h0a18.25,18.25,0,0,0-4,12v2.35H73.66v8.48h5.48V72.3H90.35V28.21H101.9V19.73H90.44V16.54c0-5.16,1.79-6.94,4.5-8,2.47-1,6.52-.79,10,1.24V2.82A25.63,25.63,0,0,0,94.84.7c-5,0-9.26,1.71-11.73,4.68"/><path d="M112.33,46.5c0-12.37,4.17-18.65,12.38-18.65a10.69,10.69,0,0,1,9.29,5c2.12,3.11,3.2,7.43,3.2,12.83,0,6.13-1.11,10.74-3.31,13.72a10.93,10.93,0,0,1-9.18,4.74,10.32,10.32,0,0,1-9.49-5.34,24,24,0,0,1-2.89-12.31M106.71,26h0c-4.93,4.82-7.41,11.57-7.41,20s2.48,15.21,7.41,20a25,25,0,0,0,18.05,7.19A24.73,24.73,0,0,0,142.91,66c4.86-4.87,7.32-11.57,7.32-20s-2.49-15.22-7.39-20a26.29,26.29,0,0,0-36.13,0"/><path d="M224.75,46.5c0-12.37,4.16-18.65,12.36-18.65a10.73,10.73,0,0,1,9.31,5c2.11,3.11,3.17,7.43,3.17,12.83,0,6.13-1.1,10.74-3.3,13.72a10.92,10.92,0,0,1-9.18,4.74,10.31,10.31,0,0,1-9.48-5.34,24.06,24.06,0,0,1-2.88-12.31M219.13,26h0c-4.93,4.82-7.43,11.57-7.43,20s2.5,15.21,7.43,20A26.26,26.26,0,0,0,255.32,66c4.86-4.87,7.32-11.57,7.32-20s-2.49-15.22-7.4-20a26.26,26.26,0,0,0-36.11,0"/><path d="M279.68,33.37V20.15H262.8V28.2h4.9s0,42.56,0,44h12.21V53.75c0-4.85.27-8.88,1.8-12.33,1.61-3.62,3.74-6,6.33-7.16a26.8,26.8,0,0,1,8.57-1.51V19.3c-5.48,0-13.95,5.73-16.89,14.07"/><polygon points="295.59 1.12 295.59 9.85 300.01 9.85 300.01 72.3 312.36 72.3 312.36 1.12 295.59 1.12"/><path d="M337.76,64.15c-3.71,0-6.52-1.79-8.35-5.34a26.62,26.62,0,0,1-2.55-12.31c0-12.37,3.67-18.65,10.9-18.65,3.45,0,6.21,1.68,8.19,5,1.86,3.11,2.81,7.43,2.81,12.83,0,6.13-1,10.74-2.92,13.72-2,3.15-4.76,4.74-8.08,4.74m4.54-63V9.85h4.77v14a15.41,15.41,0,0,0-11.25-5c-5.72,0-10.62,2.43-14.57,7.19s-6,11.56-6,20,2,15.21,6,20,8.85,7.19,14.57,7.19a15.78,15.78,0,0,0,11.25-5v3.86h12.4V1.12Z"/><path d="M200,3v9.25h5.56l-9,40.57L187,3.07h0V3H170.84v9.25h6.35l0,.24L168.6,52.91l-9.75-40.66h6V3H141.63v9.25h4.87S161.8,71,162.09,72h10l9.27-40.83,9,40.83h10.77c.3-1,13.6-59.7,13.6-59.7h5.13V3Z"/></g><rect class="cls-1" width="360" height="74"/></g></g></svg></a> </div>
<nav class="PrimaryNav" aria-label="Primary">
<ol class="PrimaryNav__list" data-count="6"><li class="PrimaryNav__item PrimaryNav__item--topics"><button type="button" class="PrimaryNav__trigger PrimaryNav__link" data-lightbox-open="topics" aria-haspopup="dialog" aria-expanded="false"><i class="icon-layer-group" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-layer-group"></use></svg></i><span class="PrimaryNav__text">Topics</span></button></li><li class="PrimaryNav__item"><a href="https://www.infoworld.com/news/" class="PrimaryNav__link"><span class="PrimaryNav__text">Latest</span></a></li><li class="PrimaryNav__item"><a href="/newsletters/signup/" class="PrimaryNav__link"><span class="PrimaryNav__text">Newsletters</span></a></li><li class="PrimaryNav__item"><a href="https://us.resources.infoworld.com/" class="PrimaryNav__link"><span class="PrimaryNav__text">Resources</span></a></li><li class="PrimaryNav__item"><a href="https://www.infoworld.com/enterprise-buyers-guide/" class="PrimaryNav__link"><span class="PrimaryNav__text">Buyer’s Guides</span></a></li><li class="PrimaryNav__item"><a href="https://www.infoworld.com/events/" class="PrimaryNav__link"><span class="PrimaryNav__text">Events</span></a></li></ol> </nav>
<div class="HeaderActions">
<div class="HeaderActions__item" data-type="search">
<a href="https://www.infoworld.com/search/" class="HeaderActions__link HeaderActions__search">
<span class="sr-only">
Search </span>
<i class="icon-magnifying-glass" aria-hidden="true">
<svg focusable="false" aria-hidden="true">
<use href="#icon-magnifying-glass"></use>
</svg>
</i>
</a>
</div>
<div class="HeaderActions__item" data-type="menu">
<button
class="HeaderActions__trigger"
data-menu-open="default"
type="button"
aria-expanded="false"
aria-controls="MenuAside"
aria-haspopup="true">
<span class="sr-only">
Menu </span>
<i class="icon-circle-bars" aria-hidden="true">
<svg focusable="false" aria-hidden="true">
<use href="#icon-circle-bars"></use>
</svg>
</i>
</button>
</div>
</div>
</div>
</div>
</header>
<div class="Lightbox bg-iw-black" data-lightbox="topics" aria-hidden="true" tabindex="-1" role="dialog" aria-modal="true">
<div class="Lightbox__overlay"></div>
<div class="Lightbox__panel">
<div class="Lightbox__header">
<div class="Lightbox__header-left">
<h2 class="Lightbox__title">
<span>Topics</span>
</h2>
</div>
<div class="Lightbox__header-right">
<button class="Lightbox__close reset-button">
<span class="sr-only">Close</span>
<i class="icon-circle-xmark" aria-hidden="true">
<svg focusable="false" aria-hidden="true">
<use href="#icon-circle-xmark"></use>
</svg>
</i>
</button>
</div>
</div>
<div class="Lightbox__body">
<div class="Lightbox__body-inner">
<ol class="TopicsList"><li class="TopicsList__item"><a href="https://www.infoworld.com/analytics/" class="TopicsList__link"><span>Analytics</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/artificial-intelligence/" class="TopicsList__link"><span>Artificial Intelligence</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/careers/" class="TopicsList__link"><span>Careers</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/cloud-computing/" class="TopicsList__link"><span>Cloud Computing</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/data-management/" class="TopicsList__link"><span>Data Management</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/database/" class="TopicsList__link"><span>Databases</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/development-tools/" class="TopicsList__link"><span>Development Tools</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/devops/" class="TopicsList__link"><span>Devops</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/emerging-technology/" class="TopicsList__link"><span>Emerging Technology</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/enterprise-buyers-guide/" class="TopicsList__link"><span>Enterprise Buyer’s Guides</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/generative-ai/" class="TopicsList__link"><span>Generative AI</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/it-leadership/" class="TopicsList__link"><span>IT Leadership</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/java/" class="TopicsList__link"><span>Java</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/javascript/" class="TopicsList__link"><span>JavaScript</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/microsoft-net/" class="TopicsList__link"><span>Microsoft .NET</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/open-source/" class="TopicsList__link"><span>Open Source</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/programming-languages/" class="TopicsList__link"><span>Programming Languages</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/python/" class="TopicsList__link"><span>Python</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/security/" class="TopicsList__link"><span>Security</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/software-development/" class="TopicsList__link"><span>Software Development</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="TopicsList__item"><a href="https://www.infoworld.com/technology-business/" class="TopicsList__link"><span>Technology Industry</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li></ol> </div>
</div>
</div>
</div>
<aside id="MenuAside" class="MenuAside" aria-hidden="true" aria-label="Site menu">
<div class="MenuAside__panel">
<header class="MenuAside__header">
<div class="MenuAside__header-left">
<button type="button" class="MenuAside__trigger" data-menu-open="default" aria-controls="MenuAside" aria-haspopup="true" aria-expanded="false">
<i class="icon-header-back-btn" aria-hidden="true">
<svg focusable="false" aria-hidden="true">
<use href="#icon-header-back-btn"></use>
</svg>
</i>
<span>Back</span>
</button>
</div>
<div class="MenuAside__header-right">
<button class="MenuAside__close">
<span class="sr-only">Close</span>
<i class="icon-circle-xmark" aria-hidden="true">
<svg focusable="false" aria-hidden="true">
<use href="#icon-circle-xmark"></use>
</svg>
</i>
</button>
</div>
</header>
<div class="MenuAside__body">
<section
class="MenuAside__section"
data-menu-section="default"
role="region">
<div class="MenuAside__top"></div>
<div class="MenuAside__nav-wrapper">
<nav class="MenuAside__nav">
<div class="MenuGroup MenuGroup--single MenuGroup--search">
<a href="https://www.infoworld.com/search/" class="MenuGroup__link" tabindex="0">
<i class="icon-magnifying-glass" aria-hidden="true">
<svg focusable="false" aria-hidden="true">
<use href="#icon-magnifying-glass"></use>
</svg>
</i>
<span class="MenuGroup__label">Search</span>
</a>
</div>
<button type="button" class="MenuGroup__toggle PrimaryNav__topicsTrigger" data-menu-open="topics" aria-controls="MenuAside" aria-haspopup="dialog" aria-expanded="false"><i class="icon-layer-group" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-layer-group"></use></svg></i><span class="MenuGroup__label">Topics</span></button><div class="MenuGroup MenuGroup--single"><a href="https://www.infoworld.com/news/" class="MenuGroup__link"><span class="MenuGroup__label">Latest</span></a></div><div class="MenuGroup MenuGroup--single"><a href="/newsletters/signup/" class="MenuGroup__link"><span class="MenuGroup__label">Newsletters</span></a></div><div class="MenuGroup MenuGroup--single"><a href="https://us.resources.infoworld.com/" class="MenuGroup__link"><span class="MenuGroup__label">Resources</span></a></div><div class="MenuGroup MenuGroup--single"><a href="https://www.infoworld.com/enterprise-buyers-guide/" class="MenuGroup__link"><span class="MenuGroup__label">Buyer’s Guides</span></a></div><div class="MenuGroup"><button type="button" class="MenuGroup__toggle reset-button" id="aside-100057179-toggle" aria-expanded="false" aria-controls="aside-100057179-panel"><span class="MenuGroup__label">More</span><span class="MenuGroup__icon"><i class="icon-header-angle-down" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-down"></use></svg></i></span></button><div class="MenuGroup__panel" id="aside-100057179-panel" role="region" aria-labelledby="aside-100057179-toggle" aria-hidden="true"><ol class="MenuGroup__list"><li class="MenuGroup__item"><a href="https://www.infoworld.com/features/" class="MenuGroup__link"><span>Features</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/blogs/" class="MenuGroup__link"><span>Blogs</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/brandposts/" class="MenuGroup__link"><span>BrandPosts</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/videos/" class="MenuGroup__link"><span>Videos</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li></ol></div></div> </nav>
</div>
</section>
<section
class="MenuAside__section"
data-menu-section="topics"
role="region">
<div class="MenuAside__top"></div>
<div class="MenuAside__nav-wrapper">
<nav class="MenuAside__nav">
<button
type="button"
class="MenuGroup__toggle PrimaryNav__topicsTrigger"
style="border-bottom: 1px solid transparent;"
tabindex="-1"
data-prev-tabindex="0">
<span class="MenuGroup__label">Topics</span>
<i class="icon-layer-group" aria-hidden="true">
<svg focusable="false" aria-hidden="true">
<use href="#icon-layer-group"></use>
</svg>
</i>
</button>
<div class="MenuGroup is-active"><button type="button" class="MenuGroup__toggle reset-button" id="topics-1-toggle" aria-expanded="true" aria-controls="topics-1-panel"><span class="MenuGroup__label">Topics</span><span class="MenuGroup__icon"><i class="icon-header-angle-down" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-down"></use></svg></i></span></button><div class="MenuGroup__panel" id="topics-1-panel" role="region" aria-labelledby="topics-1-toggle" aria-hidden="false"><ol class="MenuGroup__list"><li class="MenuGroup__item"><a href="https://www.infoworld.com/analytics/" class="MenuGroup__link"><span>Analytics</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/artificial-intelligence/" class="MenuGroup__link"><span>Artificial Intelligence</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/careers/" class="MenuGroup__link"><span>Careers</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/cloud-computing/" class="MenuGroup__link"><span>Cloud Computing</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/data-management/" class="MenuGroup__link"><span>Data Management</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/database/" class="MenuGroup__link"><span>Databases</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/development-tools/" class="MenuGroup__link"><span>Development Tools</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/devops/" class="MenuGroup__link"><span>Devops</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/emerging-technology/" class="MenuGroup__link"><span>Emerging Technology</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/enterprise-buyers-guide/" class="MenuGroup__link"><span>Enterprise Buyer’s Guides</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/generative-ai/" class="MenuGroup__link"><span>Generative AI</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/it-leadership/" class="MenuGroup__link"><span>IT Leadership</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/java/" class="MenuGroup__link"><span>Java</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/javascript/" class="MenuGroup__link"><span>JavaScript</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/microsoft-net/" class="MenuGroup__link"><span>Microsoft .NET</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/open-source/" class="MenuGroup__link"><span>Open Source</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/programming-languages/" class="MenuGroup__link"><span>Programming Languages</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/python/" class="MenuGroup__link"><span>Python</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/security/" class="MenuGroup__link"><span>Security</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/software-development/" class="MenuGroup__link"><span>Software Development</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li><li class="MenuGroup__item"><a href="https://www.infoworld.com/technology-business/" class="MenuGroup__link"><span>Technology Industry</span><i class="icon-header-angle-right" aria-hidden="true"><svg focusable="false" aria-hidden="true"><use href="#icon-header-angle-right"></use></svg></i></a></li></ol></div></div> </nav>
</div>
</section>
</div>
</div>
</aside>
<div id="MenuOverlay" class="MenuOverlay" aria-hidden="true"></div>
<div class="advert-sticky ad ad-banner has-ad-prefix is-sticky page-ad advert--bg-iw-black" data-ad-template="banner" data-ofp="false"></div><main id="primary">
<div class="article-hero">
<div class="container">
<div class="affiliate-disclaimer"><p><br></p></div> <nav class="breadcrumbs-nav" aria-label="Breadcrumb">
<ol class="breadcrumb-list" itemprop="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a itemprop="item" href="https://www.infoworld.com/" >
<span itemprop="name">Home</span>
</a>
<meta itemprop="position" content="1">
</li><li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
<a itemprop="item" href="https://www.infoworld.com/cloud-computing/" style="pointer-events: auto;">
<span itemprop="name">Cloud Computing</span>
</a>
<meta itemprop="position" content="2">
</li> </ol>
</nav>
<div class="grid article-hero__top">
<div class="col-12 col-8@md col-6@lg col-start-3@lg">
<div class="author" itemscope itemtype="https://schema.org/Person">
<div class="author__image">
<div class="image image--rounded image--aspect-ratio-1-1" itemprop="image">
<img data-hero alt="Matt Asay" src="https://www.infoworld.com/wp-content/uploads/2026/09/2002-0-82901800-1788879033-screen-shot-2017-10-02-at-10.44.49-am-100796432-orig.png?w=109" class="author_photo" height="150" width="150" /> </div>
</div>
<div class="author__content">
<div class="author__name" itemprop="name">
by <a href="https://www.infoworld.com/profile/matt-asay/" itemprop="url">Matt Asay</a>
</div>
<div class="author__info">
<span itemprop="jobTitle">Contributing Writer</span>
</div>
</div>
</div>
</div>
<div class="col-12 col-4@md">
<div class="article-hero__social">
<div class="social-share-menu">
<ul class="social-share-menu__buttons"><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="linkedin" aria-label="Share on LinkedIn">
<i class="icon-linkedin"><svg><use xlink:href="#icon-linkedin"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="bluesky" aria-label="Share on Bluesky">
<i class="icon-bluesky"><svg><use xlink:href="#icon-bluesky"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="x" aria-label="Share on X">
<i class="icon-x"><svg><use xlink:href="#icon-x"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="facebook" aria-label="Share on Facebook">
<i class="icon-facebook"><svg><use xlink:href="#icon-facebook"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="reddit" aria-label="Share on Reddit">
<i class="icon-reddit"><svg><use xlink:href="#icon-reddit"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="email" aria-label="Share via Email">
<i class="icon-email"><svg><use xlink:href="#icon-email"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="print" aria-label="Print">
<i class="icon-print"><svg><use xlink:href="#icon-print"></use></svg></i>
</button>
</li></ul> </div>
</div>
</div>
</div>
<div class="grid article-hero__main">
<div class="col-12 col-9@lg col-start-3@lg">
<h1 class="article-hero__title">No, you don’t have to run like Google</h1>
<div class="card">
<div class="card__info">
<span class="card_story">analysis</span>
</div>
<div class="card__info card__info--light">
<span>Oct 12, 2020</span><span>6 mins</span></div>
</div>
<div class="article-hero__social">
<div class="social-share-menu">
<ul class="social-share-menu__buttons">
<li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="linkedin" aria-label="Share on LinkedIn">
<i class="icon-linkedin"><svg aria-hidden="true"><use xlink:href="#icon-linkedin"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="x" aria-label="Share on X">
<i class="icon-x"><svg aria-hidden="true"><use xlink:href="#icon-x"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="bluesky" aria-label="Share on Bluesky">
<i class="icon-bluesky"><svg aria-hidden="true"><use xlink:href="#icon-bluesky"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="facebook" aria-label="Share on Facebook">
<i class="icon-facebook"><svg aria-hidden="true"><use xlink:href="#icon-facebook"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="reddit" aria-label="Share on Reddit">
<i class="icon-reddit"><svg aria-hidden="true"><use xlink:href="#icon-reddit"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="email" aria-label="Share via Email">
<i class="icon-email"><svg aria-hidden="true"><use xlink:href="#icon-email"></use></svg></i>
</button>
</li><li class="social-share-menu__button">
<button class="social-share-button" type="button" data-platform="print" aria-label="Print">
<i class="icon-print"><svg aria-hidden="true"><use xlink:href="#icon-print"></use></svg></i>
</button>
</li> </ul>
</div>
</div>
</div>
</div>
</div>
</div>
<aside class="social-share-sticky-menu is-collapsed ">
<div class="social-share-sticky-menu__wrapper">
<ol class="social-share-sticky-menu__buttons">
<li class="social-share-sticky-menu__button">
<button class="social-share-button reset-button"
type="button"
data-platform="linkedin"
aria-label="Share on LinkedIn">
<i class="icon-linkedin"><svg aria-hidden="true">
<use xlink:href="#icon-linkedin"></use>
</svg></i>
</button>
</li>
<li class="social-share-sticky-menu__button">
<button class="social-share-button reset-button"
type="button"
data-platform="x"
aria-label="Share on X">
<i class="icon-x"><svg aria-hidden="true">
<use xlink:href="#icon-x"></use>
</svg></i>
</button>
</li>
<li class="social-share-sticky-menu__button">
<button class="social-share-button reset-button"
type="button"
data-platform="bluesky"
aria-label="Share on ">
<i class="icon-bluesky"><svg aria-hidden="true">
<use xlink:href="#icon-bluesky"></use>
</svg></i>
</button>
</li>
<li class="social-share-sticky-menu__button">
<button class="social-share-button reset-button"
type="button"
data-platform="facebook"
aria-label="Share on Facebook">
<i class="icon-facebook"><svg aria-hidden="true">
<use xlink:href="#icon-facebook"></use>
</svg></i>
</button>
</li>
<li class="social-share-sticky-menu__button">
<button class="social-share-button reset-button"
type="button"
data-platform="reddit"
aria-label="Share on Reddit">
<i class="icon-reddit"><svg aria-hidden="true">
<use xlink:href="#icon-reddit"></use>
</svg></i>
</button>
</li>
<li class="social-share-sticky-menu__button">
<button class="social-share-button reset-button"
type="button"
data-platform="email"
aria-label="Share via Email">
<i class="icon-email"><svg aria-hidden="true">
<use xlink:href="#icon-email"></use>
</svg></i>
</button>
</li>
<li class="social-share-sticky-menu__button">
<button class="social-share-button reset-button"
type="button"
data-platform="print"
aria-label="Print this page">
<i class="icon-print"><svg aria-hidden="true">
<use xlink:href="#icon-print"></use>
</svg></i>
</button>
</li>
</ol>
<button type="button" aria-label="Expand/Collapse" class="social-share-sticky-menu__toggle-button">
<div class="social-share-sticky-menu__toggle-button-icon">
<i class="icon-chevron-down"><svg aria-hidden="true">
<use xlink:href="#icon-chevron-down"></use>
</svg></i>
</div>
</button>
</div>
</aside>
<article id="post-2260708" class="post-legacy post-2260708 post type-post status-publish format-standard has-post-thumbnail category-cloud-computing languages-en editions-global publication-infoworld publication-us-default story_types-analysis article_type-default origin-onecms">
<section class="foundry-layout-article article">
<div class="foundry-layout-grid container grid entry-content">
<div class="foundry-layout-content col-12 col-10@md col-8@lg">
<div class="core">
<div class="article__main">
<header class="article-column grid grid--cols-10@md grid--cols-8@lg">
<div class="col-12 col-10@md col-6@lg col-start-3@lg ">
<div class="article-column__content">
<div class="core">
<? if ( !emtpy($headline_subheadline ) ) : ?>
<h2 class="content-subheadline">
Just because Google, Amazon, or Facebook does it doesn’t mean you should. Here are four ‘best practices’ of the hyperscalers you have permission to ignore. </h2>
<? endif; ?>
<p></p>
</div>
<div class="media-with-label">
<figure>
<div class="image">
<img width="800" height="600" src="https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?quality=50&amp;strip=all&amp;w=800" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="07 future" data-hero="" loading="eager" decoding="async" fetchpriority="high" srcset="https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?quality=50&amp;strip=all 800w, https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?resize=300%2C225&amp;quality=50&amp;strip=all 300w, https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?resize=768%2C576&amp;quality=50&amp;strip=all 768w, https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?resize=224%2C168&amp;quality=50&amp;strip=all 224w, https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?resize=112%2C84&amp;quality=50&amp;strip=all 112w, https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?resize=640%2C480&amp;quality=50&amp;strip=all 640w, https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?resize=480%2C360&amp;quality=50&amp;strip=all 480w, https://www.infoworld.com/wp-content/uploads/2024/06/07_future-100692258-orig.jpg?resize=333%2C250&amp;quality=50&amp;strip=all 333w" sizes="(max-width: 800px) 100vw, 800px" /> </div>
<div class="media-with-label__label boo">
Credit: Thinkstock </div>
</figure>
</div>
</div>
</div>
</header>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<div id="remove_no_follow">
<body><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="article-column__content">
<p>Years ago, Google struggled with how to pitch its cloud offerings. Back in 2017 <a href="https://www.infoworld.com/article/2261091/google-cloud-platforms-secret-sauce-its-time-is-now-2.html">I suggested</a>&nbsp;that the company should help mainstream enterprises to &ldquo;run like Google,&rdquo; but in a conversation with a senior Google Cloud product executive, he suggested that the company shied away from this approach. The concern? That maybe mainstream enterprises didn&rsquo;t share Google&rsquo;s needs, or maybe Google would simply intimidate them.</p>
<p>For the mere mortals that run IT within such mainstream enterprises (read: almost everyone), fear not. It turns out there are many things that Google might do that make no sense for your own IT needs.</p>
<p>Just ask Colm MacC&aacute;rthaigh, AWS engineer and one of the authors of the Apache HTTP Server, who <a href="https://twitter.com/colmmacc/status/1311721955406479362" rel="nofollow">asked</a> for &ldquo;examples of technical things that don&rsquo;t make sense for everyone just because Amazon, Google, Microsoft, Facebook&rdquo; do them. The answers&mdash;excessive uptime guarantees, site reliablity engineering, microservices, and monorepos among the highlights&mdash;are instructive.</p><div class="show@md">
<div class="grid grid--cols-10@md grid--cols-8@lg">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="advert advert--bleed-right">
<div class="advert__container">
<div class="advert__content">
<div class="ad page-ad has-ad-prefix ad-article" data-ad-template="article" data-ofp="false"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<h2 id="excessive-uptime-guarantees">Excessive uptime guarantees</h2>
<p>&ldquo;Five or five-plus nines availability guarantees,&rdquo; <a href="https://twitter.com/pdehlke/status/1311725177558855681" rel="nofollow">says Pete Ehlke</a>. &ldquo;Outside of medicine and 911 call centers, I can&rsquo;t think of anything shy of FAANG [Facebook, Amazon, Apple, Netflix, and Google] scale that actually needs five nines, and the ROI pretty much never works out.&rdquo;<aside class="jwPlayer--floatingContainer" role="complementary" data-nosnippet>
<div id="jwplayer--floatingVideo" class="jwplayer" data-media-id="wj1ht0vS"></div>
</aside></p>
<p>I remember this one well from the variety of startups for which I worked, as well as when I was at Adobe (<a href="https://www.adobe.com/legal/service-commitments.html" rel="nofollow">whose service-level commitments</a> tend not to be five nines, but are arguably higher than necessary). Are you going to be OK if the multi-player game goes down? Yep. What about Office 365 for a few minutes, or even hours? Yes and yes.</p>
<h2 id="site-reliability-engineering">Site reliability engineering</h2>
<p>A bit of a spin on devops (though it predates the devops movement), <a href="https://www.infoworld.com/article/2257232/what-is-an-sre-the-vital-role-of-the-site-reliability-engineer.html">SRE</a> (named in multiple replies to MacC&aacute;rthaigh) came out of Google in 2003, and was designed to infuse engineering with an operational focus. A few <a href="https://www.dragonspears.com/blog/the-sre-model-and-its-business-implications" rel="nofollow">core principles guide SRE</a>:</p><div class="hellobar" id="hello-bar-1"></div><div id="miso-ipp"></div><div class="show@md">
<div class="grid grid--cols-10@md grid--cols-8@lg">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="advert advert--bleed-right">
<div class="advert__container">
<div class="advert__content">
<div class="ad page-ad has-ad-prefix ad-article" data-ad-template="article" data-ofp="false"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul>
<li>Embrace risk</li>
<li>Utilize service level objectives (SLOs)</li>
<li>Eliminate toil</li>
<li>Monitor distributed systems</li>
<li>Leverage automation and embrace simplicity</li>
</ul>
<p>Or, as Ben Traynor, who developed Google&rsquo;s SRE practice, <a href="https://landing.google.com/sre/interview/ben-treynor.html" rel="nofollow">describes</a> it:</p>
<blockquote>
<p>SRE is fundamentally doing work that has historically been done by an operations team, but using engineers with software expertise and banking on the fact that these engineers are inherently both predisposed to, and have the ability to, substitute automation for human labor. In general, an SRE team is responsible for availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning.</p>
</blockquote>
<p>SREs spend much of their time on automation, with the ultimate goal being to automate away their job. They spend considerable time on &ldquo;operations/on-call duties and developing systems and software that help increase site reliability and performance,&rdquo; <a href="https://opensource.com/article/18/10/what-site-reliability-engineer" rel="nofollow">says</a> Silvia Pressard.</p>
<p>This sounds important, and even more so if you equate &ldquo;site reliability&rdquo; with &ldquo;business availability.&rdquo; But do most companies really need their developers to become operational experts? SRE might be critical at Google or Amazon, but it&rsquo;s arguably a heavy lift for most enterprises, tasking developers with too much of an operational load for them to manage it successfully.</p><div class="show@md">
<div class="grid grid--cols-10@md grid--cols-8@lg">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="advert advert--bleed-right">
<div class="advert__container">
<div class="advert__content">
<div class="ad page-ad has-ad-prefix ad-article" data-ad-template="article" data-ofp="false"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<h2 id="microservices-architecture">Microservices architecture</h2>
<p>As commentator &ldquo;Buzzy&rdquo; <a href="https://twitter.com/buzzyNZ/status/1311725797296676864" rel="nofollow">tells</a> it, &ldquo;Definitely microservices. The number of 20-staff-in-total companies I&rsquo;ve had to talk down from that ledge&hellip;.&rdquo; Nor is he the only one to call out microservices as a needless complication for most enterprises. Many of the replies to MacC&aacute;rthaigh&rsquo;s tweet mentioned microservices.</p><div id="miso-smart-answers-faq"></div>
<p>As <a href="https://martinfowler.com/microservices/" rel="nofollow">Martin Fowler has argued</a>, &ldquo;While [microservices] is a useful architecture&mdash;many, indeed most, situations would do better with a monolith.&rdquo; Wait, what? Aren&rsquo;t monoliths an evil relic of the past? Of course it&rsquo;s not that simple.&nbsp;As <a href="https://www.zdnet.com/article/best-practices-for-securing-microservices/" rel="nofollow">I&rsquo;ve written</a>,</p>
<blockquote>
<p>The great promise of microservices is freedom. Freedom to break up an application into distinct services that are independently deployable. Freedom to build these disparate services with different teams using their preferred programming language, tooling, database, etc. In short, freedom for development teams to get stuff done with minimal bureaucracy.</p>
</blockquote>
<p>But for many applications, that freedom comes at unnecessary costs, as Fowler highlights:</p><div class="hellobar" id="hello-bar-2"></div><div class="show@md">
<div class="grid grid--cols-10@md grid--cols-8@lg">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="advert advert--bleed-right">
<div class="advert__container">
<div class="advert__content">
<div class="ad page-ad has-ad-prefix ad-article" data-ad-template="article" data-ofp="false"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul>
<li>Distribution: Distributed systems are harder to program, since remote calls are slow and are always at risk of failure.</li>
<li>Eventual consistency: Maintaining strong consistency is extremely difficult for a distributed system, which means everyone has to manage eventual consistency.</li>
<li>Operational complexity: You need a mature operations team to manage lots of services, which are being redeployed regularly.</li>
</ul>
<p>This last point is <a href="https://www.oreilly.com/content/should-i-use-microservices/" rel="nofollow">underlined</a> by Sam Newman: &ldquo;For a small team, a microservice architecture can be hard to justify, as there is work required just to handle the deployment and management of the microservices themselves.&rdquo;</p>
<p>It&rsquo;s not to say that a microservices approach is always wrong. No, it&rsquo;s simply a suggestion that we shouldn&rsquo;t default to a more complicated (but scalable) approach simply because the hyperscalers use it (generally because scale is so critical).</p>
<h2 id="a-monorepo-to-rule-them-all">A monorepo to rule them all</h2>
<p>Whether microservices or monolithic in nature, you probably shouldn&rsquo;t store your code in a &ldquo;monorepo.&rdquo; This was a common response to MacC&aacute;rthaigh&rsquo;s request. Monorepos store all of a company&rsquo;s code in a single version control system (VCS), to seize on the (supposed) benefits of reducing duplication of code and increasing collaboration between teams.</p><div class="show@md">
<div class="grid grid--cols-10@md grid--cols-8@lg">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="advert advert--bleed-right">
<div class="advert__container">
<div class="advert__content">
<div class="ad page-ad has-ad-prefix ad-article" data-ad-template="article" data-ofp="false"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>That&rsquo;s the theory.</p>
<p>The practice, however, is very different. &ldquo;It quickly becomes unreasonable for a single developer to have the entire repository on their machine, or to search through it using tools like grep,&rdquo; <a href="https://medium.com/@mattklein123/monorepos-please-dont-e9a279be011b" rel="nofollow">says</a> Matt Klein, an engineer who has built some of the most sophisticated systems at Amazon, Twitter, and now Lyft. &ldquo;Given that a developer will only access small portions of the codebase at a time, is there any real difference between checking out a portion of the tree via a VCS or checking out multiple repositories? <em>There is no difference</em>.&rdquo;</p>
<p>Klein continues:</p><div class="show@md">
<div class="grid grid--cols-10@md grid--cols-8@lg">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="advert advert--bleed-right">
<div class="advert__container">
<div class="advert__content">
<div class="ad page-ad has-ad-prefix ad-article" data-ad-template="article" data-ofp="false"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<blockquote>
<p>In terms of collaboration and code sharing, at scale, developers are exposed to subsections of code through higher layer tooling. Whether the code is in a monorepo or polyrepo is irrelevant; the problem being solved is the same, and <em>the efficacy of collaboration and code sharing has everything to do with engineering culture and nothing to do with code storage</em>.</p>
</blockquote>
<h2 id="you-be-you">You be you</h2>
<p>Of course, some companies may benefit from monorepos or five-nines availability or microservices or SRE. They might also benefit from rolling their own framework, building their own infrastructure, or any of the other things that commentators on MacC&aacute;rthaigh deride. The point is that just because Google, Facebook, Amazon, or another hyperscaler does it, doesn&rsquo;t mean <em>you</em> should. When in doubt, doubt. Start with the individual needs of your company and figure out the right approach to building and managing software according to who you are, not who you wish you were.</p></div></div></div>
</body></div><div class="grid grid--cols-10@md grid--cols-8@lg article-column">
<div class="col-12 col-10@md col-6@lg col-start-3@lg">
<div class="card__tags"><span class="card__tag"><a href="https://www.infoworld.com/cloud-computing/" class="tag">Cloud Computing</a></span></div></div></div><div class="grid grid--cols-10@md grid--cols-8@lg article-column" id="newsletter-end-wrapper"><div class="col-12 col-10@md col-6@lg col-start-3@lg"><div class="article-column__content"><div id="newsletter-end" class="newsletter"></div></div></div></div> </div>
</div>
</div>
<div class="foundry-layout-sidebar col-12 col-10@md col-3@lg col-start-10@lg" id="rightrail-wrapper" data-sticky="true">
<div class="article__side">
<div class="show@lg rightTrailAd">
<div class="advert advert--bleed-left">
<div class="advert__container">
<div class="advert__content">
<div class="ad page-ad has-ad-prefix ad-right-rail is-sticky" data-ad-template="right_rail" data-ofp="false"></div>
</div>
</div>
</div>
</div> </div>
</div>
</div>
</section>
</article>
<div class="author-bio">
<div class="container grid">
<div class="col-12 col-8@md author-bio__content">
<div class="grid grid--cols-8@md author-bio__author">
<div class="col-12 col-8@md col-2@lg">
<div class="author-bio__image">
<div class="image image--rounded image--aspect-ratio-2-3">
<img data-hero alt="Matt Asay" src="https://www.infoworld.com/wp-content/uploads/2026/09/2002-0-82901800-1788879033-screen-shot-2017-10-02-at-10.44.49-am-100796432-orig.png?w=182" class="author_photo" height="250" width="250" /> </div>
</div>
</div>
<div class="col-12 col-8@md col-6@lg">
<div class="author-bio__details" itemscope itemtype="https://schema.org/Person">
<div class="author-bio__details-top">
<div class="author-bio__author">
<div class="author">
<div class="author__content">
<div class="author__name" itemprop="name">
by <a href="https://www.infoworld.com/profile/matt-asay/" itemprop="url" aria-label="Author profile">
Matt Asay </a>
</div>
<div class="author__info">
<span itemprop="jobTitle">Contributing Writer</span>
</div>
</div>
</div>
</div>
<div class="author-bio__social">
<ol>
<li><a href="https://www.twitter.com/mjasay" aria-label="Follow Matt Asay on X" target="_blank" rel="noreferrer noopener">
<i class="icon-x"><svg><use xlink:href="#icon-x"></use></svg></i>
<span class="sr-only">Follow Matt Asay on X</span>
</a></li><li><a href="https://www.linkedin.com/in/mjasay" aria-label="Follow Matt Asay on LinkedIn" target="_blank" rel="noreferrer noopener">
<i class="icon-linkedin"><svg><use xlink:href="#icon-linkedin"></use></svg></i>
<span class="sr-only">Follow Matt Asay on LinkedIn</span>
</a></li> </ol>
</div>
</div>
<div class="author-bio__bio">
<p itemprop="description">Matt Asay runs developer marketing at <a href="https://www.oracle.com/">Oracle</a>. Previously Asay ran developer relations at <a href="https://www.mongodb.com/">MongoDB</a>, and before that he was a Principal at <a href="https://aws.amazon.com/">Amazon Web Services and Head of Developer Ecosystem for <a href="https://www.adobe.com/">Adobe</a>. Prior to Adobe, Asay held a range of roles at open source companies: VP of business development, marketing, and community at MongoDB; VP of business development at real-time analytics company Nodeable (acquired by Appcelerator); VP of business development and interim CEO at mobile HTML5 start-up Strobe (acquired by Facebook); COO at <a href="https://canonical.com/">Canonical</a>, the Ubuntu Linux company; and head of the Americas at Alfresco, a content management startup. Asay is an emeritus board member of the <a href="https://opensource.org/">Open Source Initiative (OSI)</a> and holds a JD from Stanford, where he focused on open source and other IP licensing issues. The views expressed in Matt’s posts are Matt’s, and don’t represent the views of his employer.</p>
</div>
<details class="accordion" data-accordion-enabled="mobile,desktop" data-accordion-expanded="">
<summary data-accordion-summary class="accordion__summary">
<div class="accordion__title">
<h2 class="author-bio__cards-title">More from this author</h2>
</div>
<div class="accordion__icon">
<svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<use xlink:href="#icon-circle-chevron-down"></use>
</svg>
</div>
</summary>
<div class="accordion__content" data-accordion-content>
<div class="author-bio__cards-container">
<ul class="author-bio__cards"><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4218911/ai-wont-kill-saas.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">opinion</span></div><h3 class="card__title"><span>AI won’t kill SaaS</span></h3> <div class="card__info card__info--light"><span>Sep 8, 2026 </span><span>7 mins</span></div></a></li><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4215481/why-tech-needs-a-new-kind-of-english-major.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">opinion</span></div><h3 class="card__title"><span>Why tech needs a new kind of English major</span></h3> <div class="card__info card__info--light"><span>Sep 1, 2026 </span><span>7 mins</span></div></a></li><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4212596/giving-agents-bounded-autonomy.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">opinion</span></div><h3 class="card__title"><span>Giving agents bounded autonomy</span></h3> <div class="card__info card__info--light"><span>Aug 25, 2026 </span><span>7 mins</span></div></a></li><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4210007/accelerating-ai-innovation-through-open-weights.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">opinion</span></div><h3 class="card__title"><span>Accelerating AI innovation through open weights</span></h3> <div class="card__info card__info--light"><span>Aug 18, 2026 </span><span>8 mins</span></div></a></li><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4206933/getting-the-feedback-loop-correct-in-ai.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">opinion</span></div><h3 class="card__title"><span>Getting the feedback loop correct in AI</span></h3> <div class="card__info card__info--light"><span>Aug 11, 2026 </span><span>8 mins</span></div></a></li><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4204108/when-you-should-use-ai-and-when-you-shouldnt.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">opinion</span></div><h3 class="card__title"><span>When you should use AI, and when you shouldn’t</span></h3> <div class="card__info card__info--light"><span>Aug 4, 2026 </span><span>9 mins</span></div></a></li><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4201445/will-open-weights-make-ai-more-honest.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">analysis</span></div><h3 class="card__title"><span>Will open weights make AI more honest?</span></h3> <div class="card__info card__info--light"><span>Jul 28, 2026 </span><span>9 mins</span></div></a></li><li class="author-bio__card"><a class="card" href="https://www.infoworld.com/article/4198556/where-the-real-competition-is-in-ai.html" rel="noreferrer" aria-label="Go to content" itemprop="url"><div class="card__header"><span class="card__content-type">opinion</span></div><h3 class="card__title"><span>Where the real competition is in AI</span></h3> <div class="card__info card__info--light"><span>Jul 20, 2026 </span><span>6 mins</span></div></a></li></ul> </div>
</div>
</details>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function redirectURL(redirecturl) {
if (redirecturl) {
window.location = redirecturl;
}
}
</script>
<section class="suggested-content-various"><div class="container"><div class="grid suggested-content-various__content"><div class="col-12 col-3@lg">
<h2 class="suggested-content-various__title">Show me more</h2><div class="suggested-content-various__filters"><span class="suggested-content-various__filter"><button class="chip chip--filter chip--active" type="button" data-filter-key="latest">Popular</button></span><span class="suggested-content-various__filter"><button class="chip chip--filter" type="button" data-filter-key="article">Articles</button></span><span class="suggested-content-various__filter"><button class="chip chip--filter" type="button" data-filter-key="video">Videos</button></span></div>
</div><div class="col-12 col-9@lg suggested-content-various__items-wrap"><div class="grid grid--cols-9@lg suggested-content-various__items"><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value="
latest,article"><a class="suggested-content-various__link" href="https://www.infoworld.com/article/4221240/anthropic-finds-evidence-of-a-fourth-ai-escaping-from-containment-3.html" aria-label="Go to content"><div class="card">
<div class="card__header">
<span class="card__content-type">news</span> </div> <h3 class="card__title">Anthropic finds evidence of a fourth AI escaping from containment</h3> <div class="card__info"><span>By Maxwell Cooter</span></div><div class="card__info card__info--light"><span itemprop="datePublished" content="2026-09-11T15:19:39+00:00">Sep 11, 2026</span><span>2 mins</span></div>
<div class="card__tags"><span class="card__tag"><span class="tag">Artificial Intelligence</span></span><span class="card__tag"><span class="tag">Cyberattacks</span></span><span class="card__tag"><span class="tag">Cybercrime</span></span></div></div>
<div class="image"><img src="https://www.infoworld.com/wp-content/uploads/2026/09/4221240-0-39364100-1789139995-shutterstock_2777184899.jpg?quality=50&#038;strip=all&#038;w=375" alt="Image" /></div>
</a>
</div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value="
article"><a class="suggested-content-various__link" href="https://www.infoworld.com/article/4221163/openai-launches-managed-agents-api-to-simplify-enterprise-ai-agent-development.html" aria-label="Go to content"><div class="card">
<div class="card__header">
<span class="card__content-type">news</span> </div> <h3 class="card__title">OpenAI launches managed Agents API to simplify enterprise AI agent development</h3> <div class="card__info"><span>By Anirban Ghoshal</span></div><div class="card__info card__info--light"><span itemprop="datePublished" content="2026-09-11T12:23:49+00:00">Sep 11, 2026</span><span>5 mins</span></div>
<div class="card__tags"><span class="card__tag"><span class="tag">APIs</span></span><span class="card__tag"><span class="tag">Artificial Intelligence</span></span><span class="card__tag"><span class="tag">Generative AI</span></span></div></div>
<div class="image"><img src="https://www.infoworld.com/wp-content/uploads/2026/09/4221163-0-45684000-1789129449-shutterstock_2525341257.jpg?quality=50&#038;strip=all&#038;w=375" alt="Image" /></div>
</a>
</div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value="
article"><a class="suggested-content-various__link" href="https://www.infoworld.com/article/4220306/cloud-has-a-new-bulk-capacity-market.html" aria-label="Go to content"><div class="card">
<div class="card__header">
<span class="card__content-type">opinion</span> </div> <h3 class="card__title">Cloud has a new bulk capacity market </h3> <div class="card__info"><span>By David Linthicum</span></div><div class="card__info card__info--light"><span itemprop="datePublished" content="2026-09-11T09:00:00+00:00">Sep 11, 2026</span><span>5 mins</span></div>
<div class="card__tags"><span class="card__tag"><span class="tag">Artificial Intelligence</span></span><span class="card__tag"><span class="tag">Critical Infrastructure</span></span><span class="card__tag"><span class="tag">IaaS</span></span></div></div>
<div class="image"><img src="https://www.infoworld.com/wp-content/uploads/2026/09/4220306-0-06906300-1789117341-shutterstock_1009313164.jpg?quality=50&#038;strip=all&#038;w=375" alt="Image" /></div>
</a>
</div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value="
latest,video"><a class="suggested-content-various__link" href="https://www.infoworld.com/video/4221216/why-software-developers-are-token-maxxing-ai-and-what-it-means-for-jobs.html" aria-label="Go to content"><div class="card">
<div class="card__header">
<span class="card__content-type">video</span> </div> <h3 class="card__title">Why Software Developers Are “Token Maxxing” AI—and What It Means for Jobs</h3> <div class="card__info"><span></span></div><div class="card__info card__info--light"><span itemprop="datePublished" content="2026-09-11T14:01:55+00:00">Sep 11, 2026</span><span>7 mins</span></div>
<div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span></div></div>
<div class="image"><img src="https://www.infoworld.com/wp-content/uploads/2026/09/4221216-0-68973300-1789135331-youtube-thumbnail-5YqQzdrX0Cs_afe410.jpg?quality=50&#038;strip=all&#038;w=444" alt="Image" /></div>
</a>
</div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value="
latest,video"><a class="suggested-content-various__link" href="https://www.infoworld.com/video/4218279/webassembly-is-getting-wild-these-days.html" aria-label="Go to content"><div class="card">
<div class="card__header">
<span class="card__content-type">video</span> </div> <h3 class="card__title">WebAssembly is getting WILD these days</h3> <div class="card__info"><span></span></div><div class="card__info card__info--light"><span itemprop="datePublished" content="2026-09-03T17:29:46+00:00">Sep 3, 2026</span><span>6 mins</span></div>
<div class="card__tags"><span class="card__tag"><span class="tag">WebAssembly</span></span></div></div>
<div class="image"><img src="https://www.infoworld.com/wp-content/uploads/2026/09/4218279-0-92332600-1788456599-youtube-thumbnail-woEuEAwffOA.jpg?quality=50&#038;strip=all&#038;w=444" alt="Image" /></div>
</a>
</div><div class="col-4@md col-3@lg suggested-content-various__item suggested-content-various__item--active" data-filter-value="
video"><a class="suggested-content-various__link" href="https://www.infoworld.com/video/4216523/star-citizen-the-worst-case-of-scope-creep-ever.html" aria-label="Go to content"><div class="card">
<div class="card__header">
<span class="card__content-type">video</span> </div> <h3 class="card__title">Star Citizen: The Worst Case of Scope Creep Ever?</h3> <div class="card__info"><span></span></div><div class="card__info card__info--light"><span itemprop="datePublished" content="2026-08-31T15:58:11+00:00">Aug 31, 2026</span><span>9 mins</span></div>
<div class="card__tags"><span class="card__tag"><span class="tag">Python</span></span></div></div>
<div class="image"><img src="https://www.infoworld.com/wp-content/uploads/2026/08/4216523-0-63435500-1788191906-youtube-thumbnail-IPLtfzHk9hg_a9493c.jpg?quality=50&#038;strip=all&#038;w=444" alt="Image" /></div>
</a>
</div></div></div></div></div></section>
</main>
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" aria-hidden="true" xmlns="http://www.w3.org/2000/svg">
<defs>
<symbol id="logo-foundry" fill="none" viewBox="0 0 109 27">
<path fill="currentColor" d="M53.82.406c2.039 0 3.223 1.328 3.223 3.223 0 1.896-1.18 3.224-3.247 3.224-2.068 0-3.224-1.352-3.224-3.224S51.752.406 53.82.406ZM45.162 18.93c0 1.328-.125 2.483-.54 3.443-1.108 2.531-3.42 3.863-6.566 3.863-3.147 0-5.583-1.327-6.69-3.863-.421-.96-.54-2.115-.54-3.443V8.672h4.426v10.01c0 .788.048 1.428.273 1.943.468 1.084 1.475 1.476 2.535 1.476.936 0 1.944-.392 2.412-1.476.22-.515.272-1.155.272-1.943V8.672h4.427V18.93h-.01ZM61.121 15.582v10.306h-4.427v-9.986c0-.788-.047-1.427-.272-1.943-.468-1.084-1.475-1.576-2.607-1.576-1.132 0-2.14.492-2.608 1.576-.22.516-.272 1.155-.272 1.943v9.986h-4.427V15.582c0-1.327.124-2.483.54-3.443 1.108-2.53 3.42-3.887 6.762-3.887 3.343 0 5.659 1.352 6.762 3.887.42.96.54 2.116.54 3.443M100.38 15.387l3.639-6.715h4.699l-6.174 11.165v6.05h-4.528v-6.05L91.894 8.672h4.866l3.62 6.715ZM12.325 8.672H0v17.216h4.427v-5.826h7.359v-3.988h-7.36v-3.39h7.9V8.672Z" />
<path fill="currentColor" d="M53.82.406c2.039 0 3.223 1.328 3.223 3.223 0 1.896-1.18 3.224-3.247 3.224-2.068 0-3.224-1.352-3.224-3.224S51.752.406 53.82.406ZM45.162 18.93c0 1.328-.125 2.483-.54 3.443-1.108 2.531-3.42 3.863-6.566 3.863-3.147 0-5.583-1.327-6.69-3.863-.421-.96-.54-2.115-.54-3.443V8.672h4.426v10.01c0 .788.048 1.428.273 1.943.468 1.084 1.475 1.476 2.535 1.476.936 0 1.944-.392 2.412-1.476.22-.515.272-1.155.272-1.943V8.672h4.427V18.93h-.01ZM61.121 15.582v10.306h-4.427v-9.986c0-.788-.047-1.427-.272-1.943-.468-1.084-1.475-1.576-2.607-1.576-1.132 0-2.14.492-2.608 1.576-.22.516-.272 1.155-.272 1.943v9.986h-4.427V15.582c0-1.327.124-2.483.54-3.443 1.108-2.53 3.42-3.887 6.762-3.887 3.343 0 5.659 1.352 6.762 3.887.42.96.54 2.116.54 3.443M86.188 20.453h-2.78v5.435h-4.427V8.672h8.214c3.295 0 5.755 2.188 5.755 5.855 0 2.264-.936 3.983-2.56 5.02l2.655 6.346h-4.723l-2.14-5.435.006-.005Zm-2.78-3.863h2.78c1.647 0 2.359-.788 2.359-2.068 0-1.203-.712-2.044-2.36-2.044h-2.779v4.112Zm2.78 3.863h-2.78v5.435h-4.427V8.672h8.214c3.295 0 5.755 2.188 5.755 5.855 0 2.264-.936 3.983-2.56 5.02l2.655 6.346h-4.723l-2.14-5.435.006-.005Zm-2.78-3.863h2.78c1.647 0 2.359-.788 2.359-2.068 0-1.203-.712-2.044-2.36-2.044h-2.779v4.112ZM62.626 25.888V8.672h6.37c5.582 0 8.854 3.396 8.854 8.61 0 5.215-2.928 8.61-8.587 8.61h-6.642l.005-.004ZM67.052 22h1.844c2.88 0 4.427-1.576 4.427-4.723s-1.552-4.723-4.427-4.723h-1.844V22Zm-4.427 3.887V8.672h6.37c5.583 0 8.855 3.396 8.855 8.61 0 5.215-2.928 8.61-8.587 8.61h-6.642l.005-.004ZM67.053 22h1.844c2.88 0 4.427-1.576 4.427-4.723s-1.552-4.723-4.427-4.723h-1.844V22ZM21.375 8.329c5.19 0 8.266 3.81 8.266 8.953 0 5.144-3.2 8.954-8.266 8.954-5.067 0-8.29-3.786-8.29-8.954 0-5.167 3.223-8.954 8.29-8.954ZM21.351 22.2c2.335 0 3.81-1.943 3.81-4.794 0-3.147-1.475-5.043-3.69-5.043-2.412 0-3.888 1.896-3.888 4.794 0 3.1 1.476 5.043 3.763 5.043m.024-13.873c5.191 0 8.267 3.811 8.267 8.954 0 5.144-3.2 8.954-8.267 8.954-5.067 0-8.29-3.786-8.29-8.954 0-5.167 3.223-8.954 8.29-8.954Zm-.024 13.873c2.335 0 3.811-1.943 3.811-4.794 0-3.147-1.476-5.043-3.691-5.043-2.412 0-3.888 1.896-3.888 4.794 0 3.1 1.476 5.043 3.764 5.043M12.325 8.672H0v17.216h4.427v-5.826h7.359v-3.988h-7.36v-3.39h7.9V8.672Z" />
</symbol>
<symbol id="icon-quote" viewBox="0 0 16 16">
<path fill="currentColor" d="M12.314 13.333c-1.005 0-1.87-.326-2.597-.978-.726-.707-1.089-1.576-1.089-2.61 0-.815.252-1.929.754-3.342.503-1.468 1.564-2.908 3.183-4.321.056-.055.14-.082.252-.082.056 0 .111.027.167.082.056.054.056.108 0 .163-.447.815-.81 1.685-1.089 2.609-.279.87-.14 1.304.42 1.304 1.004 0 1.87.354 2.596 1.06.726.707 1.089 1.55 1.089 2.528 0 1.033-.363 1.902-1.089 2.609-.726.652-1.592.978-2.597.978Zm-8.628 0c-1.005 0-1.871-.326-2.597-.978C.363 11.648 0 10.779 0 9.745c0-.815.251-1.929.754-3.342.503-1.468 1.564-2.908 3.183-4.321.056-.055.14-.082.251-.082.056 0 .112.027.168.082.056.054.056.108 0 .163-.447.815-.81 1.685-1.089 2.609-.28.87-.14 1.304.419 1.304 1.005 0 1.87.354 2.597 1.06.726.707 1.089 1.55 1.089 2.528 0 1.033-.363 1.902-1.09 2.609-.725.652-1.59.978-2.596.978Z" />
</symbol>
<symbol id="icon-rss" viewBox="0 0 16 16">
<path d="M3.66406 11.3359C4.29406 11.3359 4.66406 11.7459 4.66406 12.3359C4.66406 12.9159 4.29406 13.3359 3.66406 13.3359C3.03406 13.3359 2.66406 12.9159 2.66406 12.3359C2.66406 11.7459 3.02406 11.3359 3.66406 11.3359Z" fill="currentColor" />
<path d="M12.5304 12.9852V13.1352H12.6804H13.118H13.268V12.9852C13.268 10.264 12.187 7.65438 10.2629 5.73017L10.1568 5.83624L10.2629 5.73017C8.33866 3.80596 5.72915 2.725 3.00781 2.725H2.85781V2.875V3.31264V3.46264H3.00781C5.53332 3.46264 7.95535 4.46592 9.74124 6.25173C11.5271 8.0377 12.5304 10.4599 12.5304 12.9852Z" fill="currentColor" stroke="currentColor" stroke-width="0.3" />
<path d="M8.26478 13.1652V12.9902C8.26478 11.5961 7.71088 10.2589 6.72502 9.273C6.72501 9.27299 6.72501 9.27299 6.72501 9.27299M8.26478 13.1652L3.00781 7.55827C4.44844 7.55827 5.83003 8.13057 6.84876 9.14925L6.72501 9.27299M8.26478 13.1652H8.43978M8.26478 13.1652H8.43978M6.72501 9.27299C5.7391 8.28713 4.40202 7.73327 3.00781 7.73327H2.83281V7.55827V7.3125V7.1375H3.00781C4.56014 7.1375 6.04869 7.75411 7.14631 8.85174L7.02257 8.97548M6.72501 9.27299L7.02257 8.97548M7.02257 8.97548L7.14631 8.85174C8.24391 9.94936 8.86055 11.438 8.86055 12.9902M7.02257 8.97548L8.86055 12.9902M8.43978 13.1652H8.68555H8.86055M8.43978 13.1652H8.86055M8.86055 13.1652V12.9902M8.86055 13.1652V12.9902" fill="currentColor" stroke="currentColor" stroke-width="0.35" />
</symbol>
<symbol id="icon-bluesky" viewBox="0 0 16 16">
<path d="M7.997 6.88C7.435 5.793 5.911 3.76 4.492 2.759c-1.359-.96-1.879-.794-2.216-.64-.393.18-.463.784-.463 1.138 0 .355.193 2.915.323 3.34.421 1.412 1.914 1.89 3.29 1.735.07-.01.14-.021.214-.028a4.47 4.47 0 0 1-.214.028C3.41 8.63 1.616 9.364 3.97 11.98c2.585 2.676 3.543-.572 4.035-2.223.492 1.647 1.057 4.78 3.986 2.223 2.202-2.223.604-3.35-1.412-3.649a4.47 4.47 0 0 1-.214-.028c.074.01.144.017.214.028 1.377.155 2.873-.323 3.29-1.735.127-.428.324-2.985.324-3.34 0-.354-.07-.958-.464-1.138-.34-.154-.857-.32-2.216.64C10.083 3.762 8.56 5.792 7.997 6.88Z" fill="currentColor" />
</symbol>
<symbol id="icon-facebook" viewBox="0 0 16 16">
<path d="M8.0026 2.33594C9.87894 2.33594 11.2705 2.94094 12.1937 3.89113C13.1214 4.84593 13.6693 6.24529 13.6693 8.0026C13.6693 9.72309 13.1234 11.1255 12.1913 12.0916C11.3742 12.9385 10.1949 13.5185 8.64591 13.6438V10.0727H10.0062L10.2658 8.33228H8.64591V7.20236C8.64591 6.72576 8.87436 6.26255 9.59866 6.26255H10.3359V4.78187C10.3359 4.78187 9.66615 4.66406 9.02753 4.66406C7.69315 4.66406 6.82088 5.49678 6.82088 7.0069V8.33496H5.33594V10.0754H6.82088V13.5799C5.53419 13.3763 4.53354 12.8375 3.81393 12.0916C2.8818 11.1255 2.33594 9.72309 2.33594 8.0026C2.33594 6.23802 2.87143 4.83983 3.78902 3.8885C4.70095 2.94304 6.08933 2.33594 8.0026 2.33594ZM8.0026 1.33594C12.2026 1.33594 14.6693 4.06927 14.6693 8.0026C14.6693 11.8693 12.2026 14.6693 8.0026 14.6693C3.8026 14.6693 1.33594 11.8693 1.33594 8.0026C1.33594 4.06927 3.73594 1.33594 8.0026 1.33594Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" />
</symbol>
<symbol id="icon-linkedin" viewBox="0 0 16 16">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.05661 2.66406C3.27583 2.66406 2.64062 3.29858 2.64062 4.0785C2.64062 4.85876 3.27583 5.49352 4.05661 5.49352C4.83678 5.49352 5.47146 4.85873 5.47146 4.0785C5.4715 3.29858 4.83678 2.66406 4.05661 2.66406ZM5.13075 6.09375H2.9849C2.88967 6.09375 2.8125 6.17095 2.8125 6.26615V13.1598C2.8125 13.2551 2.88967 13.3322 2.9849 13.3322H5.13075C5.22598 13.3322 5.30315 13.2551 5.30315 13.1598V6.26615C5.30315 6.17095 5.22598 6.09375 5.13075 6.09375ZM8.70451 6.71335C9.09094 6.29237 9.72804 5.92188 10.5899 5.92188C13.0068 5.92188 13.3327 7.66898 13.3327 9.37802V13.1593C13.3327 13.2546 13.2555 13.3317 13.1603 13.3317H11.0183C10.9231 13.3317 10.8459 13.2546 10.8459 13.1593V9.80765C10.8459 8.86922 10.7766 8.1514 9.90403 8.1514C9.10284 8.1514 8.79065 8.59917 8.79065 9.74852V13.1593C8.79065 13.2545 8.71348 13.3317 8.61824 13.3317H6.47709C6.38186 13.3317 6.30469 13.2545 6.30469 13.1593V6.26561C6.30469 6.17041 6.38186 6.09321 6.47709 6.09321H8.53211C8.62735 6.09321 8.70451 6.17041 8.70451 6.26561V6.71335Z" fill="currentColor" />
</symbol>
<symbol id="icon-email" viewBox="0 0 16 16">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.66927 4.33594H13.3359C13.52 4.33594 13.6693 4.48517 13.6693 4.66927V11.3359C13.6693 11.52 13.52 11.6693 13.3359 11.6693H2.66927C2.48518 11.6693 2.33594 11.52 2.33594 11.3359V4.66927C2.33594 4.48518 2.48517 4.33594 2.66927 4.33594ZM1.33594 4.66927C1.33594 3.93289 1.93289 3.33594 2.66927 3.33594H13.3359C14.0723 3.33594 14.6693 3.93289 14.6693 4.66927V11.3359C14.6693 12.0723 14.0723 12.6693 13.3359 12.6693H2.66927C1.93289 12.6693 1.33594 12.0723 1.33594 11.3359V4.66927ZM4.27735 5.58397L3.86133 5.30662L3.30662 6.13867L3.72265 6.41603L6.98305 8.58963C7.59887 9.00017 8.40113 9.00017 9.01695 8.58963L12.2774 6.41603L12.6934 6.13867L12.1387 5.30662L11.7227 5.58397L8.46225 7.75758C8.18233 7.94419 7.81767 7.94419 7.53775 7.75757L4.27735 5.58397Z" fill="currentColor" />
</symbol>
<symbol id="icon-x" viewBox="0 0 16 16">
<path d="M9.142 7.081 13.609 2H12.55L8.671 6.412 5.573 2H2l4.685 6.672L2 14h1.059l4.096-4.66L10.427 14H14L9.141 7.081Zm-1.45 1.65-.475-.665L3.44 2.78h1.626l3.048 4.266.475.664 3.962 5.546h-1.626L7.692 8.73Z" stroke="currentColor" stroke-width="0.3" fill="currentColor" />
</symbol>
<symbol id="icon-twitter" viewBox="0 0 16 16">
<path d="M9.142 7.081 13.609 2H12.55L8.671 6.412 5.573 2H2l4.685 6.672L2 14h1.059l4.096-4.66L10.427 14H14L9.141 7.081Zm-1.45 1.65-.475-.665L3.44 2.78h1.626l3.048 4.266.475.664 3.962 5.546h-1.626L7.692 8.73Z" fill="currentColor" />
</symbol>
<symbol id="icon-print" viewBox="0 0 16 16">
<path d="M5 2.33594V5.0026H4V2.33594V1.33594H5H11H12V2.33594V5.0026H11V2.33594H5ZM12 12H12.0026H13.3359C14.0723 12 14.6693 11.403 14.6693 10.6667V7.33333C14.6693 6.59695 14.0723 6 13.3359 6H2.66927C1.93289 6 1.33594 6.59695 1.33594 7.33333V10.6667C1.33594 11.403 1.93289 12 2.66927 12H4V13.6693V14.6693H5H11H12V13.6693V12ZM12 11H12.0026H13.3359C13.52 11 13.6693 10.8508 13.6693 10.6667V7.33333C13.6693 7.14924 13.52 7 13.3359 7H2.66927C2.48518 7 2.33594 7.14924 2.33594 7.33333V10.6667C2.33594 10.8508 2.48518 11 2.66927 11H4V10.3359V9.33594H5H11H12V10.3359V11ZM5 12H5.0026V11H5V10.3359H11V13.6693H5V12Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" />
</symbol>
<symbol id="icon-reddit" viewBox="0 0 16 16">
<path d="M8.003 2.328c1.876 0 3.268.605 4.19 1.555.928.955 1.476 2.354 1.476 4.112 0 1.72-.546 3.123-1.478 4.089-.926.96-2.319 1.578-4.188 1.578-1.87 0-3.262-.618-4.19-1.578-.931-.966-1.477-2.369-1.477-4.09 0-1.764.535-3.162 1.453-4.113.912-.946 2.3-1.553 4.214-1.553Zm0-1c4.2 0 6.666 2.733 6.666 6.667 0 3.866-2.466 6.667-6.666 6.667s-6.667-2.8-6.667-6.667c0-3.934 2.4-6.667 6.667-6.667Zm3.126 3.978a.636.636 0 0 0-.627-.642.597.597 0 0 0-.329.097.62.62 0 0 0-.226.264l-1.455-.318a.171.171 0 0 0-.12.022.176.176 0 0 0-.07.101L7.86 6.98c-.934.03-1.771.311-2.376.766a.877.877 0 0 0-.604-.252.891.891 0 0 0-.879.902c0 .174.049.344.141.49a.882.882 0 0 0 .38.332c-.015.087-.022.18-.022.275 0 1.385 1.568 2.504 3.508 2.504s3.508-1.119 3.508-2.504c0-.09-.007-.18-.02-.267a.936.936 0 0 0 .505-.83.891.891 0 0 0-.879-.902.832.832 0 0 0-.604.252c-.598-.44-1.428-.73-2.341-.765l.4-1.927 1.301.281a.65.65 0 0 0 .2.436.617.617 0 0 0 .87-.02.652.652 0 0 0 .182-.445Zm-5.14 3.732c0-.353.281-.642.627-.642.344 0 .625.288.625.642a.635.635 0 0 1-.625.642.635.635 0 0 1-.627-.642Zm2.756 0c0-.354.281-.642.625-.642.345 0 .626.289.626.642a.635.635 0 0 1-.625.642.635.635 0 0 1-.626-.642Zm-2.228 1.458a.162.162 0 0 1 .116-.049.16.16 0 0 1 .116.049c.267.274.843.375 1.258.375.415 0 .984-.101 1.258-.375a.163.163 0 0 1 .233 0 .189.189 0 0 1-.015.238c-.429.44-1.244.47-1.483.47-.239 0-1.061-.037-1.483-.47a.172.172 0 0 1 0-.238Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" />
</symbol>
<symbol id="icon-gnews" viewBox="0 0 16 16">
<path d="M2 2V12.8C2 13.4625 2.54062 14 3.2 14H10.4L14 10.4V2L12.8 3.2L11.6 2L10.4 3.2L9.2 2L8 3.2L6.8 2L5.6 3.2L4.4 2L3.2 3.2L2 2ZM4.4 3.5C4.4 3.5 5 4.4 5.6 4.4C6.18125 4.4 6.8 3.5 6.8 3.5C6.8 3.5 7.38125 4.4 8 4.4C8.58125 4.4 9.2 3.5 9.2 3.5C9.2 3.5 9.81875 4.4 10.4 4.4C10.9625 4.4 11.6 3.5 11.6 3.5C11.6 3.5 12.2188 4.4 12.8 4.4V10.4H8.6V11H10.4V11.6H8.6V12.2H10.4V12.8H3.2V4.4C3.7625 4.4 4.4 3.5 4.4 3.5ZM3.8 5V6.2H12.2V5H3.8ZM3.8 6.8V11H8V6.8H3.8ZM8.6 6.8V7.4H12.2V6.8H8.6ZM5 7.4V8L5.6 7.4H6.8L7.4 8H6.2V9.2L6.8 8.6H7.4V9.8L6.8 10.4H5L4.4 9.8V8L5 7.4ZM6.2 9.2L5.6 9.8H6.8V9.2H6.2ZM5.6 9.8V8H5V9.8H5.6ZM8.6 8V8.6H12.2V8H8.6ZM8.6 9.2V9.8H12.2V9.2H8.6ZM3.8 11.6V12.2H8V11.6H3.8Z" fill="currentColor" />
</symbol>
<symbol id="icon-instagram" viewBox="0 0 16 16">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.6667 3H5.33333C4.04467 3 3 4.04467 3 5.33333V10.6667C3 11.9553 4.04467 13 5.33333 13H10.6667C11.9553 13 13 11.9553 13 10.6667V5.33333C13 4.04467 11.9553 3 10.6667 3ZM5.33333 2C3.49238 2 2 3.49239 2 5.33333V10.6667C2 12.5076 3.49239 14 5.33333 14H10.6667C12.5076 14 14 12.5076 14 10.6667V5.33333C14 3.49238 12.5076 2 10.6667 2H5.33333ZM9.49154 6.53311C9.19623 6.22917 8.72134 6 8 6C7.26006 6 6.78835 6.23127 6.49975 6.53048C6.20549 6.83556 6 7.31708 6 8C6 8.65716 6.20669 9.14285 6.51091 9.45818C6.80964 9.76781 7.28564 10 8 10C8.71436 10 9.19036 9.76781 9.48909 9.45818C9.79331 9.14285 10 8.65716 10 8C10 7.32435 9.79134 6.84166 9.49154 6.53311ZM11 8C11 6.23 9.89 5 8 5C6.08 5 5 6.23 5 8C5 9.74 6.11 11 8 11C9.89 11 11 9.74 11 8ZM11.9974 4.66667C11.9974 4.27333 11.7507 4 11.3307 4C10.9041 4 10.6641 4.27333 10.6641 4.66667C10.6641 5.05333 10.9107 5.33333 11.3307 5.33333C11.7507 5.33333 11.9974 5.05333 11.9974 4.66667Z" fill="currentColor" />
</symbol>
<symbol id="icon-xing" viewBox="0 0 16 16">
<path d="M3.82 4.37c-.104 0-.191.037-.236.108-.045.074-.038.17.01.266l1.17 2.025c.003.004.003.007 0 .01l-1.838 3.245c-.048.096-.046.192 0 .266a.255.255 0 0 0 .226.118h1.73c.26 0 .384-.175.473-.335L7.223 6.77l-1.19-2.074c-.086-.154-.216-.325-.482-.325h-1.73ZM11.09 2c-.258 0-.37.163-.463.33l-3.85 6.829c.005.012 2.458 4.511 2.458 4.511.086.154.219.33.484.33h1.728c.105 0 .186-.04.23-.11.046-.074.045-.172-.003-.268l-2.44-4.458a.01.01 0 0 1 0-.011l3.831-6.775c.049-.096.05-.194.004-.267-.044-.072-.126-.111-.23-.111H11.09Z" fill="currentColor" />
</symbol>
<symbol id="icon-spotify" viewBox="0 0 16 16">
<path d="M8.0026 2.33594C9.87894 2.33594 11.2705 2.94094 12.1937 3.89113C13.1214 4.84593 13.6693 6.24529 13.6693 8.0026C13.6693 9.72309 13.1234 11.1255 12.1913 12.0916C11.2646 13.0521 9.87196 13.6693 8.0026 13.6693C6.13324 13.6693 4.74058 13.0521 3.81393 12.0916C2.8818 11.1255 2.33594 9.72309 2.33594 8.0026C2.33594 6.23802 2.87143 4.83983 3.78902 3.8885C4.70095 2.94304 6.08933 2.33594 8.0026 2.33594ZM8.0026 1.33594C12.2026 1.33594 14.6693 4.06927 14.6693 8.0026C14.6693 11.8693 12.2026 14.6693 8.0026 14.6693C3.8026 14.6693 1.33594 11.8693 1.33594 8.0026C1.33594 4.06927 3.73594 1.33594 8.0026 1.33594ZM10.2343 10.7759C10.4106 10.8842 10.6412 10.8282 10.7487 10.652C10.857 10.4757 10.8011 10.2457 10.6248 10.1375C9.04319 9.171 7.08272 8.94618 4.79716 9.46837C4.59538 9.51418 4.46974 9.7148 4.51582 9.91613C4.56172 10.1175 4.76233 10.2436 4.96357 10.1978C7.05212 9.72056 8.82557 9.91541 10.2343 10.7759ZM10.8397 9.17244C11.0597 9.30781 11.3477 9.23833 11.4831 9.01827C11.6185 8.79858 11.5491 8.51075 11.3291 8.3753C9.477 7.23713 6.76808 6.9169 4.58908 7.57806C4.34212 7.6533 4.20262 7.91403 4.27714 8.16145C4.3522 8.40842 4.61347 8.54783 4.86088 8.47313C6.76853 7.89396 9.22689 8.18107 10.8397 9.17244ZM4.57567 6.62322C6.42194 6.06287 9.61236 6.16844 11.5462 7.31705C11.812 7.47545 12.1576 7.38752 12.3152 7.12084C12.4736 6.85453 12.3862 6.51018 12.119 6.35187C9.89253 5.03009 6.36929 4.9058 4.24987 5.54923C3.95323 5.63932 3.78601 5.95262 3.87583 6.24926C3.96565 6.54582 4.27921 6.71313 4.57567 6.62322Z" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" />
</symbol>
<symbol id="icon-youtube" viewBox="0 0 16 16">
<path d="M8 3.355c-.392 0-3.85.008-4.821.265a1.989 1.989 0 0 0-1.412 1.395C1.503 5.99 1.5 7.917 1.5 7.998c0 .08.003 2.007.268 2.984.184.679.725 1.213 1.412 1.395.97.256 4.43.264 4.82.264.39 0 3.85-.008 4.821-.265a1.989 1.989 0 0 0 1.412-1.395c.265-.977.268-2.902.268-2.983 0-.081-.003-2.007-.268-2.983a1.989 1.989 0 0 0-1.412-1.395c-.97-.257-4.43-.265-4.82-.265H8Zm0 8.309c-1.026 0-3.848-.042-4.565-.232a1.002 1.002 0 0 1-.712-.703c-.231-.853-.234-2.713-.234-2.731 0-.019.003-1.878.234-2.731.093-.343.366-.613.712-.704.717-.189 3.539-.231 4.565-.231 1.026 0 3.848.042 4.565.232.347.091.62.361.712.703.231.853.234 2.712.234 2.73 0 .02-.003 1.879-.234 2.732a1.001 1.001 0 0 1-.712.703c-.717.19-3.539.232-4.565.232Z" fill="currentColor" />
<path d="M9.263 7.995 7.414 9.227V6.762l1.849 1.233Z" fill="currentColor" stroke="currentColor" />
</symbol>
<symbol id="icon-video" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 6.5h16a.5.5 0 0 1 .5.5v10a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5ZM2 7a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V7Zm11.57 5.857L10 15V9l3.57 2.143a1 1 0 0 1 0 1.714Z" fill="currentColor" />
</symbol>
<symbol id="icon-user" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 4.5c.925 0 1.512.293 1.87.66.363.375.63.974.63 1.84 0 .84-.264 1.444-.634 1.829-.363.375-.952.671-1.866.671-.914 0-1.503-.296-1.866-.671C9.764 8.444 9.5 7.84 9.5 7c0-.877.263-1.474.62-1.844.348-.36.93-.656 1.88-.656ZM12 3c2.52 0 4 1.64 4 4 0 2.32-1.48 4-4 4S8 9.32 8 7c0-2.36 1.44-4 4-4Zm4.814 13.275C15.772 15.203 14.184 14.5 12 14.5c-2.23 0-3.812.706-4.84 1.771C6.123 17.346 5.5 18.943 5.5 21H4c0-4.72 2.88-8 8-8 5.04 0 8 3.28 8 8h-1.5c0-2.046-.637-3.645-1.686-4.725Z" fill="currentColor" />
</symbol>
<symbol id="icon-apple-podcasts" viewBox="0 0 24 24">
<path d="M11.432 20.546c-.681-.244-.827-.575-1.107-2.515-.324-2.255-.395-3.65-.207-4.093.25-.586.927-.919 1.873-.922.94-.004 1.624.332 1.874.922.189.441.118 1.838-.207 4.093-.221 1.575-.342 1.974-.647 2.241-.418.37-1.012.473-1.575.274h-.004Zm-2.91-2.314c-2.351-1.157-3.858-3.114-4.406-5.718-.137-.673-.16-2.275-.03-2.893.342-1.655.997-2.95 2.085-4.094C7.739 3.874 9.756 3 12 3c2.222 0 4.231.858 5.761 2.461 1.164 1.21 1.819 2.491 2.154 4.179.114.561.114 2.092.007 2.724a8.091 8.091 0 0 1-3.082 5.04c-.58.437-1.994 1.2-2.222 1.2-.084 0-.092-.087-.053-.438.068-.563.136-.68.456-.814.51-.213 1.378-.831 1.91-1.366a7.27 7.27 0 0 0 1.91-3.363c.198-.784.176-2.527-.044-3.334-.695-2.567-2.787-4.56-5.351-5.093-.746-.153-2.101-.153-2.855 0-2.595.532-4.741 2.625-5.397 5.258-.175.714-.175 2.459 0 3.174.434 1.743 1.561 3.341 3.037 4.293.25.167.512.317.784.449.32.137.388.25.448.814.038.342.03.441-.053.441-.053 0-.441-.167-.852-.365l-.036-.028Zm.031-3.095c-.792-.632-1.491-1.752-1.78-2.851-.176-.664-.176-1.926.007-2.587.48-1.787 1.796-3.172 3.622-3.823.625-.22 2.008-.268 2.778-.1 2.648.588 4.529 3.24 4.165 5.871-.145 1.06-.51 1.931-1.157 2.74-.32.409-1.096 1.095-1.233 1.095-.022 0-.044-.26-.044-.575v-.573l.396-.472c1.492-1.787 1.385-4.282-.244-5.921-.631-.637-1.362-1.012-2.306-1.185-.609-.113-.738-.113-1.377-.007-.97.158-1.722.535-2.39 1.194-1.64 1.618-1.746 4.129-.254 5.917l.393.474v.58c0 .32-.026.58-.057.58-.031 0-.251-.152-.487-.343l-.032-.014Zm2.64-3.107c-.676-.316-1.042-.91-1.05-1.685 0-.696.389-1.304 1.058-1.66.427-.222 1.18-.222 1.606 0 .473.256.828.686.99 1.199.441 1.5-1.15 2.816-2.588 2.144l-.015.002Z" fill="currentColor" />
<path d="M12.114 12.325a1.898 1.898 0 1 0 0-3.795 1.898 1.898 0 0 0 0 3.796ZM12.298 13.06c.215.025.428.068.635.13a2.3 2.3 0 0 1 .636.318c.168.121.29.248.366.401.076.153.114.336.137.636.015.3.015.713-.053 1.491a53.146 53.146 0 0 1-.313 2.636c-.106.726-.182 1.05-.281 1.286a1.152 1.152 0 0 1-.845.738 1.83 1.83 0 0 1-.441.038 1.893 1.893 0 0 1-.442-.038c-.174-.038-.401-.106-.57-.243-.176-.137-.29-.335-.381-.594-.091-.259-.16-.57-.251-1.195a66.213 66.213 0 0 1-.29-2.26 18.148 18.148 0 0 1-.112-1.522c-.006-.328.008-.491.044-.647.036-.15.098-.291.183-.419a1.389 1.389 0 0 1 .661-.504c.157-.06.32-.106.485-.137.197-.038.426-.075.543-.091a.596.596 0 0 1 .248 0l.04-.024Z" fill="currentColor" />
</symbol>
<symbol id="icon-arrow-up-right-from-square" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="m19.19 3.75-9.72 9.72-.53.53L10 15.06l.53-.53 9.72-9.72v4.94h1.5V3a.747.747 0 0 0-.75-.75h-6.75v1.5h4.94ZM4 5.75a.25.25 0 0 0-.25.25v14c0 .138.112.25.25.25h14a.25.25 0 0 0 .25-.25V11.717h1.5V20A1.75 1.75 0 0 1 18 21.75H4A1.75 1.75 0 0 1 2.25 20V6c0-.966.784-1.75 1.75-1.75H12.283v1.5H4Z" fill="currentColor" />
</symbol>
<symbol id="icon-calendar" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20 5.5H4a.5.5 0 0 0-.5.5v2.25h17V6a.5.5 0 0 0-.5-.5ZM3.5 18V9.75h17V18a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5ZM4 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4Zm5.42 10.292c0 .75.198 1.092.696 1.092.48 0 .666-.354.666-1.098v-.156c0-.75-.198-1.098-.678-1.098-.486 0-.684.348-.684 1.092v.168Zm2.712-.03c0 1.38-.804 2.172-2.058 2.172-1.236 0-2.004-.768-2.004-2.136v-.168c0-1.374.882-2.13 2.028-2.13 1.14 0 2.034.678 2.034 2.1v.162Zm3.254 2.094h-1.362v-2.952l-.792.474V12.75l.984-.684h1.17v4.29Z" fill="currentColor" />
</symbol>
<symbol id="icon-caret-down" viewBox="0 0 24 24">
<path d="m6 8 4.3 7.1c.8 1.3 2.7 1.3 3.4 0L18 8H6Z" fill="currentColor" />
</symbol>
<symbol id="icon-circle-bars" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.287 5.833C16.902 4.408 14.815 3.5 12 3.5c-2.87 0-4.952.91-6.32 2.329C4.303 7.256 3.5 9.353 3.5 12c0 2.58.819 4.684 2.217 6.134C7.107 19.574 9.196 20.5 12 20.5c2.804 0 4.893-.926 6.283-2.366C19.681 16.684 20.5 14.58 20.5 12c0-2.636-.822-4.735-2.213-6.167ZM22 12c0-5.9-3.7-10-10-10C5.6 2 2 6.1 2 12c0 5.8 3.7 10 10 10s10-4.2 10-10ZM7 10.75v-1.5h10v1.5H7Zm0 2.5v1.5h10v-1.5H7Z" fill="currentColor" />
</symbol>
<symbol id="icon-circle-chevron-down" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C14.9263 3 17.1512 3.94667 18.6453 5.48436C20.1438 7.02666 21 9.25935 21 12C21 14.6872 20.1458 16.9229 18.6428 18.4807C17.1454 20.0328 14.9194 21 12 21C9.08064 21 6.85464 20.0328 5.35716 18.4807C3.85419 16.9229 3 14.6872 3 12C3 9.25208 3.83549 7.02056 5.31975 5.48173C6.79835 3.94877 9.02006 3 12 3ZM12 2C18.3 2 22 6.1 22 12C22 17.8 18.3 22 12 22C5.7 22 2 17.8 2 12C2 6.1 5.6 2 12 2ZM8.15043 10.1464L11.686 13.682C11.8812 13.8772 12.1978 13.8772 12.3931 13.682L15.9286 10.1464L16.6357 10.8536L13.1002 14.3891C12.5144 14.9749 11.5646 14.9749 10.9789 14.3891L7.44332 10.8536L8.15043 10.1464Z" fill="currentColor" />
</symbol>
<symbol id="icon-circle-chevron-left" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2Zm1.773 6.53-3.536 3.536a.25.25 0 0 0 0 .353l3.536 3.536-1.061 1.06-3.536-3.535a1.75 1.75 0 0 1 0-2.475l3.536-3.535 1.06 1.06Z" fill="currentColor" />
</symbol>
<symbol id="icon-circle-chevron-right" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3.5c2.815 0 4.902.908 6.287 2.333C19.678 7.265 20.5 9.364 20.5 12c0 2.58-.819 4.684-2.217 6.134-1.39 1.44-3.479 2.366-6.283 2.366-2.804 0-4.893-.926-6.283-2.366C4.319 16.684 3.5 14.58 3.5 12c0-2.647.803-4.744 2.18-6.171C7.048 4.41 9.13 3.5 12 3.5ZM12 2c6.3 0 10 4.1 10 10 0 5.8-3.7 10-10 10S2 17.8 2 12C2 6.1 5.6 2 12 2ZM9.712 8.53l3.535 3.536a.25.25 0 0 1 0 .353l-3.535 3.536 1.06 1.06 3.536-3.535a1.75 1.75 0 0 0 0-2.475L10.773 7.47 9.712 8.53Z" fill="currentColor" />
</symbol>
<symbol id="icon-circle-chevron-up" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 3C14.9263 3 17.1512 3.94667 18.6453 5.48436C20.1438 7.02666 21 9.25935 21 12C21 14.6872 20.1458 16.9229 18.6428 18.4807C17.1454 20.0328 14.9194 21 12 21C9.08064 21 6.85464 20.0328 5.35716 18.4807C3.85419 16.9229 3 14.6872 3 12C3 9.25208 3.83549 7.02056 5.31975 5.48173C6.79835 3.94877 9.02006 3 12 3ZM12 2C18.3 2 22 6.1 22 12C22 17.8 18.3 22 12 22C5.7 22 2 17.8 2 12C2 6.1 5.6 2 12 2ZM15.9257 14.3555L12.3902 10.82C12.1949 10.6247 11.8783 10.6247 11.6831 10.82L8.14753 14.3555L7.44042 13.6484L10.976 10.1129C11.5617 9.52712 12.5115 9.52712 13.0973 10.1129L16.6328 13.6484L15.9257 14.3555Z" fill="currentColor"/>
</symbol>
<symbol id="icon-circle-xmark" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.287 5.833C16.902 4.408 14.815 3.5 12 3.5c-2.87 0-4.952.91-6.32 2.329C4.303 7.256 3.5 9.353 3.5 12c0 2.58.819 4.684 2.217 6.134C7.107 19.574 9.196 20.5 12 20.5c2.804 0 4.893-.926 6.283-2.366C19.681 16.684 20.5 14.58 20.5 12c0-2.636-.822-4.735-2.213-6.167ZM22 12c0-5.9-3.7-10-10-10C5.6 2 2 6.1 2 12c0 5.8 3.7 10 10 10s10-4.2 10-10Zm-9.998-1.069 3-3 1.06 1.061-3 3 3.01 3.009-1.062 1.06-3.008-3.008-3.01 3.01-1.061-1.06 3.01-3.01L7.94 8.99 9 7.93l3.002 3.002Z" fill="currentColor" />
</symbol>
<symbol id="icon-chevron-down" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="m11.776 14.42-4.95-4.95-1.06 1.061 4.95 4.95a1.75 1.75 0 0 0 2.474 0l4.95-4.95-1.06-1.06-4.95 4.95a.25.25 0 0 1-.354 0Z" fill="currentColor" />
</symbol>
<symbol id="icon-chevron-left" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="m10.08 11.87 4.95-4.95-1.061-1.06-4.95 4.95a1.75 1.75 0 0 0 0 2.474l4.95 4.95 1.06-1.06-4.95-4.95a.25.25 0 0 1 0-.354Z" fill="currentColor" />
</symbol>
<symbol id="icon-chevron-right" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="m14.42 12.224-4.95 4.95 1.061 1.06 4.95-4.95a1.75 1.75 0 0 0 0-2.474l-4.95-4.95-1.06 1.06 4.95 4.95a.25.25 0 0 1 0 .354Z" fill="currentColor" />
</symbol>
<symbol id="icon-chevron-up" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="m12.13 10.08 4.95 4.95 1.06-1.061-4.95-4.95a1.75 1.75 0 0 0-2.474 0l-4.95 4.95 1.06 1.06 4.95-4.95a.25.25 0 0 1 .354 0Z" fill="currentColor" />
</symbol>
<symbol id="icon-globe" viewBox="0 0 24 24">
<path d="M19.4 4.8C17.6 3 15 2 12 2 8.9 2 6.4 3 4.6 4.8 2.9 6.6 2 9 2 12c0 2.9.9 5.4 2.6 7.2C6.4 21 9 22 12 22s5.6-1 7.4-2.8c1.7-1.8 2.6-4.3 2.6-7.2 0-2.9-.9-5.4-2.6-7.2Zm1.1 6.4H17c-.1-2.6-.5-4.8-1.3-6.5-.1-.3-.3-.6-.5-.8 1.2.4 2.2 1 3.1 1.8 1.3 1.5 2 3.3 2.2 5.5ZM12 20.5c-.9 0-1.7-.7-2.3-2-.7-1.4-1.1-3.4-1.2-5.8h7c-.1 2.3-.5 4.4-1.2 5.8-.6 1.3-1.4 2-2.3 2Zm-3.5-9.3c.1-2.3.5-4.3 1.2-5.8.6-1.3 1.4-1.9 2.3-1.9.9 0 1.7.7 2.3 1.9.7 1.4 1.1 3.4 1.2 5.8h-7ZM5.7 5.8C6.5 5 7.5 4.4 8.8 4c-.2.2-.4.5-.5.8-.8 1.6-1.2 3.8-1.3 6.4H3.5c.2-2.2.9-4 2.2-5.4Zm-2.2 6.9H7c.1 2.6.5 4.8 1.3 6.4.2.3.3.6.5.8-1.2-.4-2.2-1-3.1-1.9-1.3-1.2-2-3.1-2.2-5.3Zm14.8 5.4c-.8.9-1.9 1.5-3.1 1.9.2-.2.3-.5.5-.8.8-1.6 1.2-3.8 1.3-6.4h3.5c-.2 2.1-.9 4-2.2 5.3Z" fill="currentColor" />
</symbol>
<symbol id="icon-google-podcasts" viewBox="0 0 24 24">
<path d="M12 6.9c-.606 0-1.098-.476-1.098-1.063V4.562c0-.587.492-1.062 1.098-1.062.606 0 1.098.475 1.098 1.062v1.275c0 .587-.492 1.062-1.098 1.062ZM12 15.826c-.606 0-1.098-.476-1.098-1.063V9.24c0-.587.492-1.062 1.098-1.062.606 0 1.098.475 1.098 1.062v5.524c0 .587-.492 1.063-1.098 1.063ZM10.902 19.438c0 .587.492 1.062 1.098 1.062.606 0 1.098-.476 1.098-1.062v-1.275c0-.587-.492-1.063-1.098-1.063-.606 0-1.098.476-1.098 1.063v1.275ZM8.049 17.098c-.607 0-1.098-.476-1.098-1.063v-1.274c0-.587.491-1.063 1.098-1.063.606 0 1.097.476 1.097 1.063v1.274c0 .587-.49 1.063-1.097 1.063ZM14.854 9.24c0 .586.49 1.062 1.097 1.062s1.098-.476 1.098-1.063V7.964c0-.586-.491-1.062-1.098-1.062-.606 0-1.097.476-1.097 1.062V9.24ZM8.049 12.429c-.607 0-1.098-.476-1.098-1.062V7.542c0-.587.491-1.062 1.098-1.062.606 0 1.097.475 1.097 1.062v3.825c0 .586-.49 1.062-1.097 1.062ZM14.854 16.466c0 .587.49 1.062 1.097 1.062s1.098-.475 1.098-1.062V12.64c0-.586-.491-1.062-1.098-1.062-.606 0-1.097.476-1.097 1.062v3.825ZM4.098 13.704C3.49 13.704 3 13.228 3 12.64v-1.274c0-.587.491-1.063 1.098-1.063.606 0 1.097.476 1.097 1.063v1.274c0 .587-.491 1.063-1.097 1.063ZM18.805 12.641c0 .587.491 1.063 1.097 1.063.607 0 1.098-.476 1.098-1.063v-1.274c0-.587-.491-1.063-1.098-1.063-.606 0-1.097.476-1.097 1.063v1.274Z" fill="currentColor" />
</symbol>
<symbol id="icon-layer-group" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="m6.09 7.984 5.672 3.166a.5.5 0 0 0 .486 0l5.665-3.132-5.672-3.166a.5.5 0 0 0-.485 0L6.09 7.983Zm-1.546.855 6.487 3.62a2 2 0 0 0 1.943.005l6.482-3.585.055-.03.703-.389a.5.5 0 0 0 .002-.874l-.702-.392-.054-.03-6.488-3.621a2 2 0 0 0-1.942-.004L4.548 7.123l-.055.03-.704.39a.5.5 0 0 0-.001.873l.701.392.055.03Zm2.254 6.758-1.543-.861-.706.39-.055.03-.703.39a.5.5 0 0 0-.002.873l.702.392.054.03h.001l6.487 3.621a2 2 0 0 0 1.942.004l6.482-3.584.055-.03.704-.39a.5.5 0 0 0 .002-.873l-.702-.392-.055-.03-.711-.398-1.546.855.71.397-5.665 3.133a.5.5 0 0 1-.485-.001l-5.672-3.166.706-.39Zm-1.543-4.861 1.543.86-.706.391 5.672 3.166a.5.5 0 0 0 .485 0l5.666-3.132-.712-.397 1.547-.855.71.397h.001l.055.031.702.392a.5.5 0 0 1-.002.874l-.704.389-.054.03-6.483 3.585a2 2 0 0 1-1.942-.004l-6.487-3.621-.055-.03-.702-.393a.5.5 0 0 1 .002-.874l.703-.389.055-.03.706-.39Z" fill="currentColor" />
</symbol>
<symbol id="icon-search-ai" viewBox="0 0 64 64">
<path fill="currentColor" d="M31.268 6.6c.462-1.248 2.227-1.248 2.689 0l2.298 6.212c.146.392.455.702.847.847l6.212 2.298c1.248.462 1.248 2.227 0 2.689l-6.212 2.299a1.434 1.434 0 0 0-.847.846l-2.298 6.212c-.462 1.248-2.227 1.248-2.689 0l-2.298-6.212a1.434 1.434 0 0 0-.847-.846l-6.212-2.3c-1.248-.46-1.248-2.226 0-2.688l6.212-2.298c.392-.146.701-.455.847-.847L31.268 6.6Z" />
<path fill="currentColor" fill-rule="evenodd" d="M20.603 9.703C12.167 11.243 7.5 17.55 7.5 26.119c0 9.733 6.403 16.78 17.305 16.78 10.381 0 16.683-6.39 17.261-15.405l-4.045.45c-.335 3.12-1.533 5.616-3.306 7.399-2.097 2.107-5.343 3.563-9.91 3.563s-7.813-1.456-9.91-3.563c-2.107-2.118-3.402-5.243-3.402-9.224 0-4.108 1.278-7.216 3.338-9.286 1.375-1.383 3.28-2.485 5.803-3.062l-.03-4.068Zm21.255 31.17a1.997 1.997 0 0 0-2.824 2.823L53.676 58.34l2.824-2.824-14.642-14.642Z" clip-rule="evenodd" />
</symbol>
<symbol id="icon-magnifying-glass" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.5 4.5c1.726 0 2.943.538 3.726 1.319.785.783 1.274 1.952 1.274 3.484 0 1.495-.486 2.669-1.278 3.464-.787.792-2.006 1.34-3.722 1.34-1.716 0-2.935-.548-3.722-1.34-.792-.795-1.278-1.969-1.278-3.464 0-1.543.48-2.71 1.253-3.488C6.523 5.04 7.736 4.5 9.5 4.5Zm0-1.5C13.595 3 16 5.584 16 9.303c0 3.656-2.405 6.303-6.5 6.303-4.095 0-6.5-2.647-6.5-6.303C3 5.584 5.34 3 9.5 3Zm6.405 11.845a.75.75 0 1 0-1.06 1.06l5.5 5.5 1.06-1.06-5.5-5.5Z" fill="currentColor" />
</symbol>
<symbol id="icon-play" viewBox="0 0 24 24">
<path d="m7 20 10.002-6.155c1.374-.846 1.374-2.844 0-3.69L7 4v16Z" fill="currentColor" />
</symbol>
<symbol id="icon-podcast" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.75 2.25v19.5h-1.5V2.25h1.5Zm3 17.5V4.25h-1.5v15.5h1.5Zm-6-12.5v9.5h-1.5v-9.5h1.5Zm12 3v3.5h-1.5v-3.5h1.5Zm-3 5.5v-7.5h-1.5v7.5h1.5Zm-13-4.25c.473 0 .75.307.75.75 0 .435-.277.75-.75.75S2 12.685 2 12.25c0-.443.27-.75.75-.75Zm19.25.75c0-.443-.277-.75-.75-.75-.48 0-.75.307-.75.75 0 .435.277.75.75.75s.75-.315.75-.75Z" fill="currentColor" />
</symbol>
<symbol id="icon-soundcloud" viewBox="0 0 24 24">
<path d="M7 17h1.25V9.128a3.214 3.214 0 0 0-1.25.69V17Zm-2.5-5.325v5.316l.08.009h1.17v-5.334H4.58l-.08.009ZM2 14.332c0 .968.504 1.808 1.25 2.276V12.06A2.675 2.675 0 0 0 2 14.332ZM9.5 17h1.25V9.475A3.12 3.12 0 0 0 9.5 9.03V17Zm9.92-5.333h-.704c.036-.218.058-.439.058-.667 0-2.21-1.733-4-3.87-4-1.16 0-2.195.534-2.904 1.37V17h7.42c1.424 0 2.58-1.194 2.58-2.668 0-1.472-1.156-2.665-2.58-2.665Z" fill="currentColor" />
</symbol>
<symbol id="icon-messenger" viewBox="0 0 12 12">
<path fill="currentColor" d="M2.25 6.75 4.5 4.5l2.25.75L9 4.5 6.75 6.75 4.5 6Zm0 0" />
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width=".75" d="M5.625 1.125c-2.484 0-4.5 1.922-4.5 4.297 0 1.332.5 2.414 1.5 3.203v1.5l1.406-.938c.657.094 1.059.188 1.594.188 2.484 0 4.5-1.582 4.5-3.953 0-2.375-2.016-4.297-4.5-4.297Zm0 0" />
</symbol>
<symbol id="icon-whatsapp" viewBox="0 0 12 12">
<path fill="currentColor" d="M 5.625 0.75 C 2.9375 0.75 0.75 2.9375 0.75 5.625 C 0.75 6.597656 1.0625 7.488281 1.554688 8.25 L 0.714844 10.589844 L 3.324219 9.855469 C 4.015625 10.234375 4.78125 10.5 5.625 10.5 C 8.316406 10.5 10.5 8.316406 10.5 5.625 C 10.5 2.9375 8.316406 0.75 5.625 0.75 Z M 5.625 1.5 C 7.90625 1.5 9.75 3.34375 9.75 5.625 C 9.75 7.90625 7.90625 9.75 5.625 9.75 C 4.84375 9.75 4.121094 9.53125 3.492188 9.152344 L 3.355469 9.066406 L 1.910156 9.472656 L 2.378906 8.171875 L 2.265625 8.011719 C 1.785156 7.335938 1.5 6.515625 1.5 5.625 C 1.5 3.34375 3.34375 1.5 5.625 1.5 Z M 3.796875 3 C 3.710938 3 3.570312 3.035156 3.453125 3.175781 C 3.335938 3.3125 3 3.652344 3 4.335938 C 3 5.019531 3.464844 5.679688 3.527344 5.773438 C 3.59375 5.867188 4.4375 7.273438 5.734375 7.875 C 6.042969 8.019531 6.28125 8.105469 6.46875 8.167969 C 6.78125 8.273438 7.0625 8.257812 7.285156 8.222656 C 7.53125 8.183594 8.046875 7.886719 8.15625 7.5625 C 8.261719 7.238281 8.265625 6.957031 8.230469 6.898438 C 8.199219 6.839844 8.113281 6.804688 7.984375 6.738281 C 7.855469 6.667969 7.21875 6.332031 7.101562 6.289062 C 6.984375 6.238281 6.898438 6.21875 6.808594 6.355469 C 6.722656 6.496094 6.476562 6.808594 6.402344 6.898438 C 6.324219 6.992188 6.253906 7.003906 6.125 6.933594 C 5.992188 6.863281 5.574219 6.71875 5.082031 6.242188 C 4.699219 5.875 4.4375 5.421875 4.367188 5.28125 C 4.289062 5.140625 4.355469 5.066406 4.421875 5 C 4.480469 4.933594 4.550781 4.835938 4.613281 4.753906 C 4.679688 4.671875 4.699219 4.613281 4.742188 4.519531 C 4.789062 4.425781 4.765625 4.34375 4.734375 4.277344 C 4.699219 4.207031 4.441406 3.523438 4.335938 3.242188 C 4.230469 2.972656 4.121094 3.007812 4.042969 3.007812 C 3.96875 3 3.882812 3 3.796875 3 Z M 3.796875 3 " />
</symbol>
<symbol id="icon-telegram" viewBox="0 0 18 18">
<path fill="currentColor" d="M 15.429688 2.257812 C 15.179688 2.230469 14.910156 2.269531 14.636719 2.378906 C 14.300781 2.511719 9.011719 4.734375 4.082031 6.8125 L 2.453125 7.496094 C 1.820312 7.753906 1.503906 8.167969 1.503906 8.730469 C 1.503906 9.121094 1.667969 9.652344 2.460938 9.964844 L 5.210938 11.066406 C 5.449219 11.78125 6 13.4375 6.140625 13.878906 C 6.222656 14.140625 6.429688 14.796875 6.957031 14.949219 C 7.066406 14.988281 7.175781 15.007812 7.292969 15.003906 C 7.625 15.003906 7.863281 14.851562 7.980469 14.761719 L 9.726562 13.285156 L 11.851562 15.246094 C 11.933594 15.328125 12.363281 15.75 12.945312 15.75 C 13.671875 15.75 14.222656 15.144531 14.335938 14.5625 C 14.398438 14.242188 16.445312 3.964844 16.445312 3.96875 C 16.628906 3.140625 16.300781 2.714844 16.085938 2.53125 C 15.90625 2.378906 15.679688 2.285156 15.429688 2.257812 Z M 14.933594 3.878906 C 14.648438 5.296875 13.109375 13.035156 12.875 14.148438 L 9.773438 11.277344 L 7.667969 13.0625 L 8.25 10.78125 C 8.25 10.78125 12.273438 6.710938 12.515625 6.472656 C 12.710938 6.285156 12.75 6.21875 12.75 6.152344 C 12.75 6.0625 12.703125 6 12.601562 6 C 12.507812 6 12.378906 6.089844 12.3125 6.132812 C 11.453125 6.667969 7.804688 8.746094 6.007812 9.769531 L 3.398438 8.726562 L 4.664062 8.195312 C 7.886719 6.839844 13.628906 4.421875 14.933594 3.878906 Z M 14.933594 3.878906 " />
</symbol>
</defs>
</svg>
<footer id="SiteFooter" class="SiteFooter" role="contentinfo">
<div class="container">
<div class="SiteFooterSections">
<div class="SiteFooterSections__section"><div class="SiteFooterSection__inner"><h3 class="SiteFooterList__title"><button type="button" id="footer-trigger-100057018-1" class="SiteFooterList__trigger" aria-expanded="false" aria-controls="footer-panel-100057018-1"><span class="SiteFooterList__txt">About</span><span class="SiteFooterList__Icon"><i class="icon-circle-chevron-down"><svg aria-hidden="true"><use xlink:href="#icon-circle-chevron-down"></use></svg></i></span></button></h3><div id="footer-panel-100057018-1" class="SiteFooterList__wrapper" role="region" aria-labelledby="footer-trigger-100057018-1" hidden><ol class="SiteFooterList__list"><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/about-us/"><span>About Us</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/our-brands/infoworld/"><span>Advertise</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/contact-us/"><span>Contact Us</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/editorial-ethics-policy/"><span>Editorial Ethics Policy</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/work-here/"><span>Foundry Careers</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="/newsletters/signup/"><span>Newsletters</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/contact-us/#republication-permissions"><span>Reprints</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.google.com/preferences/source?q=infoworld.com"><span>Add InfoWorld as a Preferred Source in Google Search</span></a></li></ol></div></div></div><div class="SiteFooterSections__section"><div class="SiteFooterSection__inner"><h3 class="SiteFooterList__title"><button type="button" id="footer-trigger-100057027-2" class="SiteFooterList__trigger" aria-expanded="false" aria-controls="footer-panel-100057027-2"><span class="SiteFooterList__txt">Policies</span><span class="SiteFooterList__Icon"><i class="icon-circle-chevron-down"><svg aria-hidden="true"><use xlink:href="#icon-circle-chevron-down"></use></svg></i></span></button></h3><div id="footer-panel-100057027-2" class="SiteFooterList__wrapper" role="region" aria-labelledby="footer-trigger-100057027-2" hidden><ol class="SiteFooterList__list"><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/terms-of-service-agreement/"><span>Terms of Service</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/privacy-policy/"><span>Privacy Policy</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/cookie-policy/"><span>Cookie Policy</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/copyright-notice/"><span>Copyright Notice</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/member-preferences/"><span>Member Preferences</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/ad-choices/"><span>About AdChoices</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://foundryco.com/ccpa/"><span>Your California Privacy Rights</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink ccpa-btn"><svg width="36" height="18" viewBox="0 0 36 18" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 9C0 4.02944 4.02944 0 9 0H26.55C31.5206 0 35.55 4.02944 35.55 9C35.55 13.9706 31.5206 18 26.55 18H9C4.02944 18 0 13.9706 0 9Z" fill="white"/><path d="M26.55 16.639V18H9V16.639H26.55ZM34.189 9C34.189 4.78108 30.7689 1.36099 26.55 1.36099H9C4.78108 1.36099 1.36099 4.78108 1.36099 9C1.36099 13.2189 4.78108 16.639 9 16.639V18L8.88369 17.9993C3.96673 17.937 0 13.9317 0 9C0 4.02944 4.02944 0 9 0H26.55C31.5206 0 35.55 4.02944 35.55 9C35.55 13.9706 31.5206 18 26.55 18V16.639C30.7689 16.639 34.189 13.2189 34.189 9Z" fill="#0C0C0C"/><path d="M20.1278 0H26.4889C31.4595 0 35.4889 4.02944 35.4889 9C35.4889 13.9706 31.4595 18 26.4889 18H15.3L20.1278 0Z" fill="#0C0C0C"/><path fill-rule="evenodd" clip-rule="evenodd" d="M15.1173 5.39716C15.3997 5.62614 15.4432 6.04084 15.2143 6.32341L10.3641 12.3106C9.95411 12.8167 9.19625 12.8563 8.73578 12.3957L5.89839 9.55738C5.64129 9.30021 5.64129 8.88325 5.89839 8.62607C6.15548 8.3689 6.57232 8.3689 6.82941 8.62607L9.49453 11.292L14.1913 5.4942C14.4202 5.21163 14.8348 5.16818 15.1173 5.39716Z" fill="#0C0C0C"/><path fill-rule="evenodd" clip-rule="evenodd" d="M21.8574 5.10241C22.1216 4.85253 22.5383 4.86418 22.7881 5.12845L29.133 11.8406C29.3829 12.1049 29.3712 12.5217 29.107 12.7716C28.8428 13.0214 28.4262 13.0098 28.1764 12.7455L21.8314 6.03336C21.5816 5.76909 21.5932 5.35229 21.8574 5.10241Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M29.2128 5.20528C29.4699 5.46245 29.4699 5.87942 29.2128 6.13659L22.6827 12.6687C22.4256 12.9259 22.0088 12.9259 21.7517 12.6687C21.4946 12.4115 21.4946 11.9946 21.7517 11.7374L28.2817 5.20528C28.5388 4.9481 28.9557 4.9481 29.2128 5.20528Z" fill="white"/></svg><span>Privacy Settings</span></a></li></ol></div></div></div><div class="SiteFooterSections__section"><div class="SiteFooterSection__inner"><h3 class="SiteFooterList__title"><button type="button" id="footer-trigger-100057036-3" class="SiteFooterList__trigger" aria-expanded="false" aria-controls="footer-panel-100057036-3"><span class="SiteFooterList__txt">More</span><span class="SiteFooterList__Icon"><i class="icon-circle-chevron-down"><svg aria-hidden="true"><use xlink:href="#icon-circle-chevron-down"></use></svg></i></span></button></h3><div id="footer-panel-100057036-3" class="SiteFooterList__wrapper" role="region" aria-labelledby="footer-trigger-100057036-3" hidden><ol class="SiteFooterList__list"><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/news/"><span>News</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/features/"><span>Features</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/blogs/"><span>Blogs</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/brandposts/"><span>BrandPosts</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/events/"><span>Events</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/videos/"><span>Videos</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.infoworld.com/enterprise-buyers-guide/"><span>Enterprise Buyer’s Guides</span></a></li></ol></div></div></div><div class="SiteFooterSections__section"><div class="SiteFooterSection__inner"><h3 class="SiteFooterList__title"><button type="button" id="footer-trigger-100057044-4" class="SiteFooterList__trigger" aria-expanded="false" aria-controls="footer-panel-100057044-4"><span class="SiteFooterList__txt">Our Network</span><span class="SiteFooterList__Icon"><i class="icon-circle-chevron-down"><svg aria-hidden="true"><use xlink:href="#icon-circle-chevron-down"></use></svg></i></span></button></h3><div id="footer-panel-100057044-4" class="SiteFooterList__wrapper" role="region" aria-labelledby="footer-trigger-100057044-4" hidden><ol class="SiteFooterList__list"><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.cio.com/"><span>CIO</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.computerworld.com/"><span>Computerworld</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.csoonline.com/"><span>CSO</span></a></li><li class="SiteFooterList__listItem"><a class="SiteFooterList__listItemLink" href="https://www.networkworld.com/"><span>Network World</span></a></li></ol></div></div></div>
</div>
<div class="SiteFooterSections">
<div class="SiteFooterSections__section">
<div class="SiteFooter__logo">
<a href="https://foundryco.com/" target="_blank" rel="noreferrer" aria-label="Go to Foundry website"><svg width="157" height="38" viewBox="0 0 157 38" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M77.5198 0.58374C80.4569 0.58374 82.1628 2.4929 82.1628 5.21928C82.1628 7.94567 80.4638 9.85482 77.4854 9.85482C74.5071 9.85482 72.8425 7.91133 72.8425 5.21928C72.8425 2.52723 74.5415 0.58374 77.5198 0.58374Z" fill="currentColor"/>
<path d="M65.0492 27.2227C65.0492 29.1318 64.8704 30.7937 64.272 32.1741C62.6762 35.8139 59.347 37.7299 54.8142 37.7299C50.2813 37.7299 46.7733 35.8207 45.1775 32.1741C44.5722 30.7937 44.4002 29.1318 44.4002 27.2227V12.4713H50.7765V26.8655C50.7765 27.9987 50.8453 28.9189 51.1686 29.6606C51.8427 31.2195 53.294 31.7827 54.821 31.7827C56.1692 31.7827 57.6205 31.2195 58.2946 29.6606C58.611 28.9189 58.6867 27.9987 58.6867 26.8655V12.4713H65.063V27.2227H65.0492Z" fill="currentColor"/>
<path d="M88.0369 22.4086V37.2286H81.6606V22.8687C81.6606 21.7355 81.5919 20.8153 81.2686 20.0736C80.5945 18.5147 79.1431 17.8074 77.5129 17.8074C75.8828 17.8074 74.4314 18.5147 73.7573 20.0736C73.4409 20.8153 73.3653 21.7355 73.3653 22.8687V37.2286H66.989V22.4086C66.989 20.4994 67.1678 18.8375 67.7662 17.4571C69.362 13.8174 72.6912 11.867 77.5061 11.867C82.321 11.867 85.657 13.8105 87.2459 17.4571C87.8512 18.8375 88.0232 20.4994 88.0232 22.4086" fill="currentColor"/>
<path d="M144.584 22.127L149.826 12.4713H156.594L147.7 28.5275V37.2286H141.18V28.5275L132.361 12.4713H139.371L144.584 22.127Z" fill="currentColor"/>
<path d="M17.7532 12.4713H0V37.2286H6.3763V28.8502H16.9759V23.1159H6.3763V18.24H17.7532V12.4713Z" fill="currentColor"/>
<path d="M77.5198 0.58374C80.4569 0.58374 82.1628 2.4929 82.1628 5.21928C82.1628 7.94567 80.4638 9.85482 77.4854 9.85482C74.5071 9.85482 72.8425 7.91133 72.8425 5.21928C72.8425 2.52723 74.5415 0.58374 77.5198 0.58374Z" fill="currentColor"/>
<path d="M65.0492 27.2227C65.0492 29.1318 64.8704 30.7937 64.272 32.1741C62.6762 35.8139 59.347 37.7299 54.8142 37.7299C50.2813 37.7299 46.7733 35.8207 45.1775 32.1741C44.5722 30.7937 44.4002 29.1318 44.4002 27.2227V12.4713H50.7765V26.8655C50.7765 27.9987 50.8453 28.9189 51.1686 29.6606C51.8427 31.2195 53.294 31.7827 54.821 31.7827C56.1692 31.7827 57.6205 31.2195 58.2946 29.6606C58.611 28.9189 58.6867 27.9987 58.6867 26.8655V12.4713H65.063V27.2227H65.0492Z" fill="currentColor"/>
<path d="M88.0369 22.4086V37.2286H81.6606V22.8687C81.6606 21.7355 81.5919 20.8153 81.2686 20.0736C80.5945 18.5147 79.1431 17.8074 77.5129 17.8074C75.8828 17.8074 74.4314 18.5147 73.7573 20.0736C73.4409 20.8153 73.3653 21.7355 73.3653 22.8687V37.2286H66.989V22.4086C66.989 20.4994 67.1678 18.8375 67.7662 17.4571C69.362 13.8174 72.6912 11.867 77.5061 11.867C82.321 11.867 85.657 13.8105 87.2459 17.4571C87.8512 18.8375 88.0232 20.4994 88.0232 22.4086" fill="currentColor"/>
<path d="M124.142 29.4134H120.139V37.2286H113.762V12.4713H125.593C130.339 12.4713 133.882 15.6166 133.882 20.8909C133.882 24.146 132.533 26.6183 130.195 28.1086L134.019 37.2354H127.216L124.135 29.4203L124.142 29.4134ZM120.139 23.8576H124.142C126.515 23.8576 127.54 22.7245 127.54 20.884C127.54 19.1534 126.515 17.9447 124.142 17.9447H120.139V23.8576ZM124.142 29.4134H120.139V37.2286H113.762V12.4713H125.593C130.339 12.4713 133.882 15.6166 133.882 20.8909C133.882 24.146 132.533 26.6183 130.195 28.1086L134.019 37.2354H127.216L124.135 29.4203L124.142 29.4134ZM120.139 23.8576H124.142C126.515 23.8576 127.54 22.7245 127.54 20.884C127.54 19.1534 126.515 17.9447 124.142 17.9447H120.139V23.8576Z" fill="currentColor"/>
<path d="M90.2036 37.2286V12.4713H99.3795C107.42 12.4713 112.132 17.3541 112.132 24.8534C112.132 32.3527 107.916 37.2354 99.7647 37.2354H90.1968L90.2036 37.2286ZM96.5799 31.6384H99.235C103.383 31.6384 105.611 29.3722 105.611 24.8465C105.611 20.3209 103.376 18.0546 99.235 18.0546H96.5799V31.6384ZM90.2036 37.2286V12.4713H99.3795C107.42 12.4713 112.132 17.3541 112.132 24.8534C112.132 32.3527 107.916 37.2354 99.7647 37.2354H90.1968L90.2036 37.2286ZM96.5799 31.6384H99.235C103.383 31.6384 105.611 29.3722 105.611 24.8465C105.611 20.3209 103.376 18.0546 99.235 18.0546H96.5799V31.6384Z" fill="currentColor"/>
<path d="M30.7878 11.9769C38.2647 11.9769 42.6944 17.4571 42.6944 24.8534C42.6944 32.2496 38.0858 37.7299 30.7878 37.7299C23.4898 37.7299 18.8469 32.284 18.8469 24.8534C18.8469 17.4228 23.4898 11.9769 30.7878 11.9769ZM30.7534 31.9269C34.117 31.9269 36.2424 29.1318 36.2424 25.0319C36.2424 20.5063 34.117 17.7799 30.9254 17.7799C27.4518 17.7799 25.3264 20.5063 25.3264 24.6748C25.3264 29.1318 27.4518 31.9269 30.7465 31.9269M30.7809 11.9769C38.2578 11.9769 42.6875 17.4571 42.6875 24.8534C42.6875 32.2496 38.0789 37.7299 30.7809 37.7299C23.4829 37.7299 18.84 32.284 18.84 24.8534C18.84 17.4228 23.4829 11.9769 30.7809 11.9769ZM30.7465 31.9269C34.1101 31.9269 36.2355 29.1318 36.2355 25.0319C36.2355 20.5063 34.1101 17.7799 30.9185 17.7799C27.4449 17.7799 25.3195 20.5063 25.3195 24.6748C25.3195 29.1318 27.4449 31.9269 30.7397 31.9269" fill="currentColor"/>
<path d="M17.7532 12.4713H0V37.2286H6.3763V28.8502H16.9759V23.1159H6.3763V18.24H17.7532V12.4713Z" fill="currentColor"/>
</svg></a> </div>
<div class="SiteFooter__social">
<ul class="SiteFooter__socialList"><li class="SiteFooter__socialListItem"><a class="SiteFooter__socialLink" href="https://www.facebook.com/InfoWorld" target="_blank" rel="noreferrer" aria-label="Facebook"><span class="SiteFooter__socialLinkText sr-only">Facebook</span><span class="SiteFooter__socialLinkIcon"><i class="icon-facebook"><svg><use xlink:href="#icon-facebook"></use></svg></i></span></a></li><li class="SiteFooter__socialListItem"><a class="SiteFooter__socialLink" href="https://twitter.com/infoworld" target="_blank" rel="noreferrer" aria-label="X"><span class="SiteFooter__socialLinkText sr-only">X</span><span class="SiteFooter__socialLinkIcon"><i class="icon-twitter"><svg><use xlink:href="#icon-twitter"></use></svg></i></span></a></li><li class="SiteFooter__socialListItem"><a class="SiteFooter__socialLink" href="https://www.youtube.com/@InfoWorld" target="_blank" rel="noreferrer" aria-label="YouTube"><span class="SiteFooter__socialLinkText sr-only">YouTube</span><span class="SiteFooter__socialLinkIcon"><i class="icon-youtube"><svg><use xlink:href="#icon-youtube"></use></svg></i></span></a></li><li class="SiteFooter__socialListItem"><a class="SiteFooter__socialLink" href="https://news.google.com/publications/CAAqIggKIhxDQkFTRHdvSkwyMHZNRFY1ZEhaNUVnSmxiaWdBUAE" target="_blank" rel="noreferrer" aria-label="Google News"><span class="SiteFooter__socialLinkText sr-only">Google News</span><span class="SiteFooter__socialLinkIcon"><svg class="icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><use xlink:href="#icon-gnews"></use></svg></span></a></li><li class="SiteFooter__socialListItem"><a class="SiteFooter__socialLink" href="https://www.linkedin.com/company/164364" target="_blank" rel="noreferrer" aria-label="LinkedIn"><span class="SiteFooter__socialLinkText sr-only">LinkedIn</span><span class="SiteFooter__socialLinkIcon"><i class="icon-linkedin"><svg><use xlink:href="#icon-linkedin"></use></svg></i></span></a></li></ul> </div>
</div>
</div>
<div class="SiteFooter__bottom">
<div class="SiteFooter__legal">
<a href="https://foundryco.com/terms-of-service-agreement/" target="_blank" rel="noreferrer"><span>© 2026 FoundryCo, Inc. All Rights Reserved.</span></a> </div>
</div>
</div>
</footer>
<!-- start:hf --><!-- expired:hf --><!-- end:hf --></div><!-- #page-->
<!-- Start Subscriber Embed Code -->
<script>
var subscribersSiteId = 'd73925e9-37f6-478a-9804-7901f9e3a2ae';
var subscribersServiceWorkerPath = '/?firebase-messaging-sw';
document.addEventListener('consentManagerReady', () => {
if (window.consentManager.checkConsentByVendor('Subscribers') !== false) {
const script = document.createElement('script');
script.src = 'https://cdn.subscribers.com/assets/subscribers.js';
document.getElementsByTagName('head')[0].appendChild(script);
}
});
</script>
<script src="https://cdn.subscribers.com/assets/subscribers.js"></script>
<!-- End Subscriber Embed Code -->
<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\/iw-b2b-child-theme\/*","\/wp-content\/themes\/idg-b2b-base-theme\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script>
jQuery(document).on("click",".consent-button",function() {
const consentButton = event.target;
const embedType = jQuery(consentButton).data('type');
const callback = jQuery(consentButton).data('callback');
if (callback) {//podigee has its own so callback is not present
const cmpType = jQuery(consentButton).data('cmp');
setOverlayCookie(embedType, true, 30);
jQuery('.' + embedType).each(function() {
jQuery(this).hide();
});
//eval(callback);//todo - safer way? window["functionName"](arguments);
console.log(`[Consent] click calling callback and calling showOverlays`);
//todo - not sure needed as showoverlays does this too
window[callback.split('(')[0]]();//dont think any of the have actual arguments
showOverlays(cmpType);
}
});
</script>
<script type="text/javascript">
function getGenericOverlayMessage(platform) {
let customHTMLTextOverlay = window?.IDG?.settings?.overlays_privacy_policies?.consent_overlays?.english_generic_overlay_message ?? '';
const foundryPPLink = window?.IDG?.settings?.overlays_privacy_policies?.foundry_privacy_policies?.gdpr;
customHTMLTextOverlay = customHTMLTextOverlay.replace(/\$\{platform\}/g, platform).replace(/\$\{foundryPPLink\}/g, foundryPPLink);
return customHTMLTextOverlay;
}
// Function to check if the custom blocks should be excluded based on keywords.
function isExcluded(element) {
const platform = jQuery(element).attr('generic-overlay-domain');
const cookieName = `hide-generic-overlay-${platform}`;
const consentGiven = getOverlayCookie(cookieName);
if (consentGiven === 'true') {
return true;
}
// Check if blocksForConsent is defined.
const excludeCustomBlocks = typeof window?.blocksForConsent !== 'undefined' ? Object.values(window?.blocksForConsent).map(block => block.platform) : [];
const dataSrc = jQuery(element).attr('data-src');
if (!dataSrc) return false; // If there's no src attribute, don't exclude
return excludeCustomBlocks.some(keyword => dataSrc.includes(keyword));
}
jQuery('.legacy_content iframe, .legacy_content script, .legacy_content img').each(function(index, element) {
// Check if the element contains any of the exclude keywords
if (!isExcluded(element)) {
const platform = jQuery(element).attr('generic-overlay-domain');
if(platform){
const genericCookieName = `custom-html-consent-notice-${platform}`;
const genericOverlayNextExists = jQuery(element).next(`.${genericCookieName}`).length > 0;
const genericOverlayPrevExists = jQuery(element).prev(`.${genericCookieName}`).length > 0;
// Add the custom overlay and hide the element if not excluded
if (!genericOverlayPrevExists && !genericOverlayNextExists) {
jQuery(element).after(getGenericOverlayMessage(platform));
jQuery(element).hide();
}
}
} else {
const platform = jQuery(element).attr('generic-overlay-domain');
if(platform){
const cookieName = `hide-generic-overlay-${platform}`;
const consentGiven = getOverlayCookie(cookieName);
if (consentGiven === 'true') {
if( element.nodeName.toLowerCase() === 'script' ) {
let genericScript = document.createElement("script");
genericScript.type = "text/javascript";
genericScript.async = true;
genericScript.src = jQuery(element).attr('data-src');
element.parentNode.insertBefore(genericScript, element);
element.remove();
} else {
jQuery(element).attr('src', jQuery(element).attr('data-src'));
}
jQuery(element).show();
}
}
}
});
/*
* Visitor has not consented to everything so we need to add click-event handlers to the consent-buttons
*/
jQuery(document).on("click", ".consent-button-generic", function(event) {
const buttonElement = event.target;
const platform = jQuery(buttonElement).attr('platform');
if(platform) {
const legacySelector = `.legacy_content iframe[generic-overlay-domain="${platform}"], .legacy_content script[generic-overlay-domain="${platform}"], .legacy_content img[generic-overlay-domain="${platform}"]`;
jQuery(legacySelector).each(function(index, element) {
if( element.nodeName.toLowerCase() === 'script' ) {
let genericScript = document.createElement("script");
genericScript.type = "text/javascript";
genericScript.async = true;
genericScript.src = jQuery(element).attr('data-src');
element.parentNode.insertBefore(genericScript, element);
element.remove();
} else {
jQuery(element).attr('src', jQuery(element).attr('data-src'));
}
jQuery(element).show();
const cookieName = `hide-generic-overlay-${platform}`;
setOverlayCookie(cookieName, true, 30)
});
const platformOverlaySelector = `.custom-html-consent-notice-${platform}`;
jQuery(platformOverlaySelector).hide();
}
});
</script>
<script>
document.addEventListener('consentManagerReady', () => {
const debug = consentManager.debug;
window.enablePodigee = function () {
const scripts = document.querySelectorAll('.podigee-podcast-player');
scripts.forEach(function(script) {
script.setAttribute('src', script.getAttribute('data-src'));
script.removeAttribute('data-src');
});
};
if(consentManager.consentRequired === true){
window.podigeeCallback = function () {
enablePodigee();
jQuery('.wp-block-embed-podigee div.external-embed-wrapper').hide();
return false;
};
if (consentManager.checkConsentByVendor("podigee")){
if(debug)console.log('#### Podigee consent given');
enablePodigee();
} else {
if(debug)console.log('#### Podigee no consent given');
// Text overlay HTML
const podigeeTextOverlay = '<div class="external-embed-wrapper" style="padding-bottom: 25px;"><div style="position: relative;background: lightgray;z-index: 1;padding: 15px;" class="embed-consent-notice" data-type="podigee"><h4>External content from podigee.com</h4><p>This block contains external content from podigee.com that is contextually relevant to this article. In order to display it, we need your consent.</p><p><a class="consent-button" data-type="podigee" href="javascript:void(0);" onclick="podigeeCallback()">Show external content from podigee.com</a></p><p>By clicking on &quot;Show external content from podigee.com&quot; I agree that the content will be displayed to me. This allows personal data to be sent to <a href="https://www.podigee.com">podigee.com</a> and other third parties. You can find more information about this in our <a href="/datenschutz#external">privacy policy</a> and at <a href="https://www.podigee.com/en/about/privacy">https://www.podigee.com/en/about/privacy</a>.</p></div></div>';
// Add textoverlay inside podigee emded div
jQuery('.wp-block-embed-podigee').each(function(index,element) {
if (element.closest(".wp-block-embed-podigee")?.querySelectorAll('.external-embed-wrapper')?.length === 0) {
jQuery(element).prepend(podigeeTextOverlay);
}
});
}
} else {
if(debug)console.log('#### Podigee no consent needed');
enablePodigee();
}
});
</script>
<div class="advert">
<div class="container advert__container">
<div class="advert__content">
<div class="ad ad-overlay" data-ad-template="overlay" data-ofp="true"></div>
</div>
</div>
</div><link rel='stylesheet' id='typekit-styles-css' href='https://use.typekit.net/huo4szq.css?ver=1.0.0' media='all' />
<script id="child_ajaxload_posts-js-extra">
var ajaxload_params = {"ajaxurl":"https:\/\/www.infoworld.com\/wp-admin\/admin-ajax.php","nonce":"407c7eb3ce"};
</script>
<script type="text/javascript" src="https://www.infoworld.com/_static/??/wp-content/client-mu-plugins/idg-third-party/dist/scripts/frontend-brandpost-block.js,/wp-content/themes/iw-b2b-child-theme/dist/scripts/ajaxload-gated-posts.js?m=1789061466j" ></script><script id="frontend-scripts-js-extra">
var siteData = {"site":"infoworld.com","connectedhub":"b2b"};
var googleSearch = {"search_engine_id":"011881588825642368632:wfa05lybzqg","search_title":"Search","search_slug":"search"};
</script>
<script defer src="https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/scripts/bundle.js?ver=1789061466" id="frontend-scripts-js"></script>
<script id="ajaxload_posts-js-extra">
var ajaxload_params = {"ajaxurl":"https:\/\/www.infoworld.com\/wp-admin\/admin-ajax.php","nonce":"25d4eb35dc"};
</script>
<script defer src="https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/dist/scripts/ajaxload-posts.js?ver=1" id="ajaxload_posts-js"></script>
<script id="ajaxload_events-js-extra">
var ajaxload_event_params = {"ajaxurl":"https:\/\/www.infoworld.com\/wp-admin\/admin-ajax.php","nonce":"ba337e60f5"};
</script>
<script type="text/javascript" src="https://www.infoworld.com/_static/??-eJxtzE0OQDAQQOELGYNIsRBn6c9E2xSNmajjE2vbl7wPSwZ77EK7oHjaiDG4FUxnwGgm+Bq6wIJsz5CFUUd9p0M7oOu9uI5c4Y9SPsT6kNyvkvN7LtvcDuPUqLZXKj5xVjKW" ></script><script src="https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/lib/scripts/class.ConsentManager.js?ver=1.3.0" id="enqueued-script-consent-manager-js"></script>
<script id="enqueued-script-consent-manager-js-after">
(function(){
//todo put somewhere common as needed elsewhere in other tickets.
//look for the cookie for content pass
const isContentPassCookiePresent = function () {
const data = (document.cookie.match(/^(?:.*;)?\s*_cpauthhint\s*=\s*([^;]+)(?:.*)?$/) || [,null])[1]; //eslint-disable-line
if (data) return true;
return false;
};
//fire the admiral script wrapped in consent or not
const fireScript = function(isConsentRequired){
window.admiral = window.admiral || function() {(admiral.q = admiral.q || []).push(arguments)};
window.admiral('targeting', 'set', 'story_type', 'Analysis');
window.admiral('targeting', 'set', 'is_article', 'yes');
if(isConsentRequired){
document.addEventListener('consentManagerReady', () => {
if(consentManager.consentedAll === true){
console.log('++Admiral firing - with consent');
!(function(h,_name,a,H,v){v=function(){(v.q=v.q||[]).push(arguments)},h[_name=a(a(_name))]=h[_name]||v,h[_name].v=h[_name].v||3,h[_name].s=3+0})(window,'%61%256%34%6D%256%39%72%61%256%43',decodeURI);!(function(h,a,H,v,l,O,k,o,V){O=function(r,s){return r<2&&s};try{a[H]=a[H]||function(h){h?k[h]=!0:O()},k=a[H]}catch(L){return void O()}!(function G(a,H,B,Q){function f(){try{if(k[B&&B.src||H]||k[o])return}catch(L){return void O()}B&&(B.remove(),B=null),clearTimeout(V),!a&&H&&(H+=(-1===H.indexOf("?")?"?":"&")+"r=1"),(H=O(++a,H))&&G(a,H)}B=h.createElement(v),Q=h.getElementsByTagName(v)[0],B.async=1,B.src=H,a>0&&(B.fetchPriority="high"),V=setTimeout(f,6e3+2e3*a),B[l]("error",f),B[l]("load",f),Q.parentNode.insertBefore(B,Q)})(0,o="https://coloradoserves.com/public/mglhfwmry7cw.js")})(document,window,"QS01QUY4RUI2NENDQTk4MzZCNkE2OUNDNkYtMTg","script","addEventListener",{});;
;
!(function(h,a,H,v,l,O,k,o,V,L,G,_name,B,Q,f,K,j,P,g,y,s,t){_name=(G=function(h){return a(a(h))})('%25%36%31%2564m%25%36%39%2572%25%36%31%25%36C'),B=h.localStorage,Q=h.sessionStorage,f=G('_a%25%364m%25%372%256%43%25%36%33%256Bv%70'),j=h.location;try{0===document.referrer.indexOf(j.origin)?(K=new URLSearchParams(j.search)).get(G('%255%46%25%361c%257%32i'))?((P=K.get(G('%25%35%46%25%36%31%63t')))===G('%256%35x%74%25%36%35%6E%64')?g=[["\u0061d\u006di\u0072al\u002d\u0065\u0078tende\u0064","true"||_name]]:P===G('%73ha%25%370%25%36%35')&&(g=[["a\u0064\u006dir\u0061l-shap\u0065d","true"||_name]]),g&&(Q[f]=JSON.stringify(g))):g=JSON.parse(Q[f]||"[]"):delete Q[f]}catch(E){g=[]}function Y(a,H){try{a=JSON.parse(B["_aQS01QUY4RUI2NENDQTk4MzZCNkE2OUNDNkYtMTg"]||"{}").lgk||[]}catch(E){a=[]}g&&(a=a.concat(g)),a&&a.length&&(H=h[y].pubads())&&a.forEach((function(h){h&&h[0]&&H.setTargeting(h[0],h[1]||"")}))}y=G('%2567%6F%256F%256%37%6C%25%36%35%74%256%31%25%36%37');try{t=(s=h[y]=h[y]||{}).cmd=s.cmd||[],typeof s.pubads===H?Y():typeof t.unshift===H?t.unshift(Y):t.push(Y)}catch(E){}})(window,decodeURI,"function");;
}else{
console.warn('++Admiral not firing - consent all='+consentManager.consentedAll);
}
});
}else{
console.log('++Admiral firing - no consent needed');
!(function(h,_name,a,H,v){v=function(){(v.q=v.q||[]).push(arguments)},h[_name=a(a(_name))]=h[_name]||v,h[_name].v=h[_name].v||3,h[_name].s=3+0})(window,'%61%256%34%6D%256%39%72%61%256%43',decodeURI);!(function(h,a,H,v,l,O,k,o,V){O=function(r,s){return r<2&&s};try{a[H]=a[H]||function(h){h?k[h]=!0:O()},k=a[H]}catch(L){return void O()}!(function G(a,H,B,Q){function f(){try{if(k[B&&B.src||H]||k[o])return}catch(L){return void O()}B&&(B.remove(),B=null),clearTimeout(V),!a&&H&&(H+=(-1===H.indexOf("?")?"?":"&")+"r=1"),(H=O(++a,H))&&G(a,H)}B=h.createElement(v),Q=h.getElementsByTagName(v)[0],B.async=1,B.src=H,a>0&&(B.fetchPriority="high"),V=setTimeout(f,6e3+2e3*a),B[l]("error",f),B[l]("load",f),Q.parentNode.insertBefore(B,Q)})(0,o="https://coloradoserves.com/public/mglhfwmry7cw.js")})(document,window,"QS01QUY4RUI2NENDQTk4MzZCNkE2OUNDNkYtMTg","script","addEventListener",{});;
;
!(function(h,a,H,v,l,O,k,o,V,L,G,_name,B,Q,f,K,j,P,g,y,s,t){_name=(G=function(h){return a(a(h))})('%25%36%31%2564m%25%36%39%2572%25%36%31%25%36C'),B=h.localStorage,Q=h.sessionStorage,f=G('_a%25%364m%25%372%256%43%25%36%33%256Bv%70'),j=h.location;try{0===document.referrer.indexOf(j.origin)?(K=new URLSearchParams(j.search)).get(G('%255%46%25%361c%257%32i'))?((P=K.get(G('%25%35%46%25%36%31%63t')))===G('%256%35x%74%25%36%35%6E%64')?g=[["\u0061d\u006di\u0072al\u002d\u0065\u0078tende\u0064","true"||_name]]:P===G('%73ha%25%370%25%36%35')&&(g=[["a\u0064\u006dir\u0061l-shap\u0065d","true"||_name]]),g&&(Q[f]=JSON.stringify(g))):g=JSON.parse(Q[f]||"[]"):delete Q[f]}catch(E){g=[]}function Y(a,H){try{a=JSON.parse(B["_aQS01QUY4RUI2NENDQTk4MzZCNkE2OUNDNkYtMTg"]||"{}").lgk||[]}catch(E){a=[]}g&&(a=a.concat(g)),a&&a.length&&(H=h[y].pubads())&&a.forEach((function(h){h&&h[0]&&H.setTargeting(h[0],h[1]||"")}))}y=G('%2567%6F%256F%256%37%6C%25%36%35%74%256%31%25%36%37');try{t=(s=h[y]=h[y]||{}).cmd=s.cmd||[],typeof s.pubads===H?Y():typeof t.unshift===H?t.unshift(Y):t.push(Y)}catch(E){}})(window,decodeURI,"function");
}
};
const isEu = IDG?.isEuVisitor === '1';
//const isCPEnabledOnSite = IDG?.isCPEnabled === '1';
const isCPActiveOnGeo = IDG?.isCPActiveOnThisGeo === '1';
const isCPCookiePresent = isContentPassCookiePresent();
let isConsentRequired = true;
if(isEu){
if(isCPActiveOnGeo){
if(isCPCookiePresent){
;//consent needed
}else{
isConsentRequired = false;
}
}else if ('SE' === IDG?.geolocation) {
//hack job for SE as they dont have Reject ALL
isConsentRequired = false;
}else{
;//consent needed
}
}else{
;// check consent but if GPP or ROW will just fall through
}
console.log('++Admiral isEu=',isEu,'geo',IDG?.geolocation,'isCPActiveOnGeo=',isCPActiveOnGeo,'isCPCookiePresent=',isCPCookiePresent,'isConsentRequired=',isConsentRequired);
fireScript(isConsentRequired);
})();
document.addEventListener("consentManagerReady", () => {
const vendors = ["Miso Technologies, Inc", "Miso"];
const hasConsentMiso = consentManager.checkConsentByVendors(vendors);
if (hasConsentMiso.some(vendor => !vendor["Has Consent"])) return;
console.log("[MISO SCRIPT] Consent given for Miso. Loading script...");
const initMisoSearchAnnouncements = () => {
if (
window.innerWidth <= 992 ||
!foundry_is_publisher(["cio", "nww", "cw", "iw", "cso"]) ||
!foundry_is_language(["en", "de"])
) return;
document.querySelectorAll('use').forEach(use => {
const ref = use.getAttribute('href') || use.getAttribute('xlink:href');
if (ref === '#icon-magnifying-glass') {
use.setAttribute('href', '#icon-search-ai');
use.setAttributeNS(
'http://www.w3.org/1999/xlink',
'href',
'#icon-search-ai'
);
}
});
console.log("[MISO SCRIPT] Conditions met, initializing Miso search announcements.");
};
initMisoSearchAnnouncements();
});
document.addEventListener('consentManagerReady', () => {
const hasConsentYouTube = consentManager.checkConsentByVendors([
'YouTube',
'YT'
]);
if (hasConsentYouTube.some(vendor => vendor['Has Consent'] === false)) {
console.log('[YOUTUBE SCRIPT] Consent not given for YouTube.');
} else {
console.log('[YOUTUBE SCRIPT] Consent given for YouTube. Loading script...');
}
});
document.addEventListener('consentManagerReady', () => {
const hasConsentAdobeTypekit = consentManager.checkConsentByVendors([
'Adobe Typekit'
]);
if (hasConsentAdobeTypekit.every(vendor => vendor['Has Consent'] === true)) {
if (foundry_is_edition('kr')) {
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://use.typekit.net/ihi5tse.css';
document.head.appendChild(link);
}
}
});
(function(){
document.addEventListener('consentManagerReady', () => {
const key = 's1gr1xsv4j';
const debug = consentManager.debug;
if ( ! (key && key.length > 3)){
console.warn('[MS Clarity] is enabled but key is too short key=' + key);
return;
}
const hasConsent = consentManager.checkConsentByVendor('Microsoft Clarity');
if (debug) console.log('[MS CLARITY] hasConsent =',hasConsent );
if(hasConsent){
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", key);
if (debug) console.log('[MS CLARITY] checkClarityLoaded allowCookies= typeof window.clarity=', (typeof window.clarity) );
window.clarity("consent");
}
});
})();
document.addEventListener('consentManagerReady', () => {
const vendors = ['Subscribers'];
const hasConsentSubscribers = consentManager.checkConsentByVendors(vendors);
if (hasConsentSubscribers.some(vendor => vendor['Has Consent'] === false)) {
return;
} else {
if (foundry_is_language('en')) {
console.log('Language is English');
// subscribers english ..
}
if (foundry_is_edition('kr')) {
console.log('Edition is Korean');
// subscribers in korean ..
}
if (foundry_is_edition('ja')) {
console.log('Edition is Japanese');
// subscribers in japanese ..
}
}
});
</script>
<script type="text/javascript" src="https://www.infoworld.com/_static/??-eJylkLEOwjAMRH+IEIpQgQExMLDQBVXsTmqCSxpXsQXq34OKxA5dT3dPd2efvfGcFJNavWGHYqkJxi2dcSBoRs1GclZ8pl7Feu56Tm+/uTIr5nkrM/s7JYLI/IhaQYIwjXJGaCrO+CfjuyfBgwIocZrSpuYQIh4+yQsJOYqkwxRkAwonGDDXGfx9PGvf7Yr1Zrsoi1VZti8yKqbR" ></script><script type="text/javascript" src="https://www.infoworld.com/wp-content/themes/idg-b2b-base-theme/src/static/js/highlighter.js?m=1789061466g" ></script>
</body>
</html>