CINXE.COM

Netflix TechBlog

<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>Netflix TechBlog</title><link rel="canonical" href="https://netflixtechblog.com"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://netflixtechblog.com/feed"><meta name="robots" content="index,follow"><meta name="title" content="Netflix TechBlog"><meta name="referrer" content="unsafe-url"><meta name="description" content="Learn about Netflix’s world class engineering efforts, company culture, product developments and more."><meta name="keywords" content="NETFLIX, ENGINEERING, CULTURE, TECHNOLOGY, PRODUCT"><meta name="theme-color" content="#000000"><meta property="og:title" content="Netflix TechBlog"><meta property="twitter:title" content="Netflix TechBlog"><meta property="og:url" content="https://netflixtechblog.com/"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*ty4NvNrGg4ReETxqU2N3Og.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Learn about Netflix’s world class engineering efforts, company culture, product developments and more."><meta name="twitter:description" content="Learn about Netflix’s world class engineering efforts, company culture, product developments and more."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*ty4NvNrGg4ReETxqU2N3Og.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://netflixtechblog.com/@netflixtechblog"><meta name="twitter:site" content="@Medium"><meta property="og:site_name" content="Netflix TechBlog"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://netflix-techblog"><meta property="al:ios:app_name" content="Medium"><meta property="al:ios:app_store_id" content="828256236"><meta property="al:android:package" content="com.medium.reader"><meta property="al:android:app_name" content="Medium"><meta property="al:ios:url" content="medium://netflix-techblog"><meta property="al:android:url" content="medium://netflix-techblog"><meta property="al:web:url" content="https://netflixtechblog.com/"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/netflix-techblog" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/netflixtechblog.com", "name": "Netflix TechBlog", "alternateName": "Learn about Netflix’s world class engineering efforts, company culture, product developments and more."},{"@type": "Organization", "url": "https:\/\/netflixtechblog.com", "name": "Netflix TechBlog"}]}</script><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.tWIMt8r3Nl52PPi9OfgcVw.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");ga("create", "UA-156554426-1", "auto", 'tracker0'); ga("tracker0.send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*ty4NvNrGg4ReETxqU2N3Og.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*ty4NvNrGg4ReETxqU2N3Og.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*ty4NvNrGg4ReETxqU2N3Og.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*ty4NvNrGg4ReETxqU2N3Og.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix u-textColorTransparentWhiteDarker u-tintBgColor u-tintSpectrum js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillWhite u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--wordmarkMedium svgIcon--120x26px u-flex"><svg class="svgIcon-use" width="120" height="26" ><path d="M29.57 1.404l.036-.008V1.12h-7.27l-6.75 15.979-6.75-15.98H1.003v.278l.035.008c1.327.302 2 .752 2 2.374v18.993c0 1.623-.676 2.073-2.003 2.374L1 25.153v.279h5.315v-.278l-.035-.008c-1.327-.302-2-.751-2-2.374V4.88l8.67 20.552h.492l8.924-21.125V23.24c-.114 1.282-.782 1.677-1.983 1.95l-.036.009v.275h9.259V25.2l-.036-.008c-1.203-.274-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.23 12.582c.15-3.412 1.367-5.875 3.41-5.918.629.01 1.157.219 1.568.62.872.852 1.282 2.634 1.219 5.298h-6.198zm-.092.962h10.85v-.046c-.03-2.61-.78-4.64-2.228-6.033-1.25-1.204-3.103-1.867-5.048-1.867h-.043c-1.01 0-2.248.246-3.13.693a7.316 7.316 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724a13.717 13.717 0 00-.04.755c-.004.195-.005.39-.001.587.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.348-7.336l-.312-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066m23.122 6.893c-.356.85-1.099 1.319-2.094 1.319-.995 0-1.905-.689-2.552-1.939-.694-1.342-1.06-3.24-1.06-5.487 0-4.678 1.445-7.704 3.68-7.704.937 0 1.674.468 2.026 1.284v12.527zm7.198 3.335c-1.327-.316-2-.787-2-2.492V0l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.064 2.304.472.343.32.51.809.51 1.498v3.11C56.033 7.25 55.088 7 53.94 7c-2.326 0-4.453.987-5.986 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.242 4.888-3.336v2.811h7.233v-.29l-.035-.008zM70.94 3.085c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.272-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.492h-.006V7.055l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.525v13.515h7.24v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.492V7.055L82.49 9.078v.285l.04.004c1.28.136 1.65.71 1.65 2.56v9.88c-.426.85-1.227 1.356-2.196 1.39-1.573 0-2.439-1.07-2.439-3.012V7.055l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.525v8.362a9.443 9.443 0 00.15 1.741l.13.57C75.243 24.845 76.848 26 79.362 26c2.129 0 3.996-1.328 4.818-3.405v2.885h7.233v-.291l-.034-.012zm28.102.298v-.291l-.035-.009c-1.44-.334-2.001-.964-2.001-2.248V12.295C117.445 8.98 115.597 7 112.5 7c-2.257 0-4.16 1.314-4.893 3.36-.582-2.168-2.257-3.36-4.734-3.36-2.175 0-3.88 1.156-4.612 3.11V7.056l-7.233 2.006v.286l.043.004c1.547.138 1.994.697 1.994 2.492v13.631h6.75v-.29l-.037-.01c-1.148-.271-1.519-.767-1.519-2.04V10.95c.304-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.116v12.972h6.751v-.29l-.035-.01c-1.149-.271-1.52-.767-1.52-2.04V12.294a7.107 7.107 0 00-.095-1.21c.322-.777.97-1.696 2.23-1.696 1.524 0 2.265 1.02 2.265 3.116v12.972h7.233z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/netflix-techblog%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--light button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fnetflixtechblog.com%2F%3Fsource%3Duser_profile_page---blogroll-------------------a98b3eb08145---------------&amp;source=--------------------------nav_reg&amp;operation=login" data-action="sign-in-prompt" data-redirect="https://netflixtechblog.com/?source=user_profile_page---blogroll-------------------a98b3eb08145---------------" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--light button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fnetflixtechblog.com%2F%3Fsource%3Duser_profile_page---blogroll-------------------a98b3eb08145---------------&amp;source=--------------------------nav_reg&amp;operation=register" data-action="sign-up-prompt" data-redirect="https://netflixtechblog.com/?source=user_profile_page---blogroll-------------------a98b3eb08145---------------" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-tintBgColor u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutMedium collectionHeader--alignmentLeft collectionHeader--withLogo collectionHeader--withoutBackground collectionHeader--colorBehaviorBold collectionHeader--withoutNavigation collectionHeader--editorLayoutLogo is-modeView is-whiteLabel u-tintBgColor"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-tintSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style="max-width: 303px;"><a class="link u-baseColor--link" href="https://netflixtechblog.com" title="Go to Netflix TechBlog" aria-label="Go to Netflix TechBlog" data-collection-slug="netflix-techblog"><div class="u-relative u-marginAuto"><div style="padding-bottom: 30.4%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" src="https://cdn-images-1.medium.com/max/606/1*rOPLUJ3W6FUA3rO1U1IeuA@2x.png" data-image-id="1*rOPLUJ3W6FUA3rO1U1IeuA@2x.png" data-width="2000" data-height="608" /></div></a></div><div class="collectionHeader-nameAndDescription u-hide"><a class="link u-baseColor--link" href="https://netflixtechblog.com" title="Go to Netflix TechBlog" aria-label="Go to Netflix TechBlog" data-collection-slug="netflix-techblog"><h1 class="collectionHeader-name js-collectionName">Netflix TechBlog</h1></a><h2 class="collectionHeader-description js-collectionDescription">Learn about Netflix’s world class engineering efforts, company culture, product developments and more.</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY u-tintSpectrum"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><label class="button button--small button--chromeless button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-baseColor--buttonNormal u-baseColor--placeholderNormal" title="Search"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 10-.884.884l4.157 4.157a.624.624 0 10.884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search" required="true" data-collection-id="2615bd06b42e" /></label></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><button class="button button--primary button--smallest u-noUserSelect button--withChrome u-accentColor--buttonNormal button--followCollection js-followCollectionButton" data-action="sign-up-prompt" data-sign-in-action="toggle-subscribe-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/netflix-techblog" data-action-source="header----2615bd06b42e----------------------follow_pub"><span class="button-label button-defaultState js-buttonLabel">Follow</span><span class="button-label button-activeState">Following</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight15 u-size8of12" data-source="collection_home---4------0-----------------------" data-post-id="e2b67c88c9fb" data-index="0"><div class="u-lineHeightBase postItem u-marginRight3"><a href="https://netflixtechblog.com/introducing-impressions-at-netflix-e2b67c88c9fb?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/introducing-impressions-at-netflix-e2b67c88c9fb?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height350 u-width100pct u-floatLeft u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/2000/0*T6tQiUj-VDtyEhd1&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Introducing Impressions at Netflix</span></a></div></div><div class="col u-xs-marginBottom10 u-paddingLeft9 u-paddingRight12 u-paddingTop0 u-sm-paddingTop20 u-paddingBottom25 u-size4of12 u-xs-size12of12 u-marginBottom30"><a class="" href="https://netflixtechblog.com/introducing-impressions-at-netflix-e2b67c88c9fb?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="e2b67c88c9fb"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp4 u-fontSize30 u-size12of12 u-xs-size12of12 u-xs-fontSize24">Introducing Impressions at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Part 1: Creating the Source of Truth for Impressions</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2025-02-15T01:12:54.346Z">Feb 14</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></section></div><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Latest</span></div></div></header><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------0-----------------------" data-post-id="19ea916be1ed" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/title-launch-observability-at-netflix-scale-19ea916be1ed?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/title-launch-observability-at-netflix-scale-19ea916be1ed?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/1200/0*YyCLwVKiGE_L6fWb&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Title Launch Observability at Netflix Scale</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/title-launch-observability-at-netflix-scale-19ea916be1ed?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="19ea916be1ed"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Title Launch Observability at Netflix Scale</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Part 2: Navigating Ambiguity</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2025-01-07T01:25:58.105Z">Jan 6</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------1-----------------------" data-post-id="e67f0aa82183" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/part-3-a-survey-of-analytics-engineering-work-at-netflix-e67f0aa82183?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/part-3-a-survey-of-analytics-engineering-work-at-netflix-e67f0aa82183?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/1200/0*ar0t2-zF5YVuXnUe&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Part 3: A Survey of Analytics Engineering Work at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/part-3-a-survey-of-analytics-engineering-work-at-netflix-e67f0aa82183?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="e67f0aa82183"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Part 3: A Survey of Analytics Engineering Work at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">This article is the last in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2025-01-06T19:27:20.316Z">Jan 6</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div></div></section></div><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Latest</span></div></div></header><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------0-----------------------" data-post-id="4f1f53b4ab0f" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/part-2-a-survey-of-analytics-engineering-work-at-netflix-4f1f53b4ab0f?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/part-2-a-survey-of-analytics-engineering-work-at-netflix-4f1f53b4ab0f?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*j2wKL4S3ywEs9mpf&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Part 2: A Survey of Analytics Engineering Work at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/part-2-a-survey-of-analytics-engineering-work-at-netflix-4f1f53b4ab0f?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="4f1f53b4ab0f"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Part 2: A Survey of Analytics Engineering Work at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">This article is the second in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2025-01-02T21:06:18.980Z">Jan 2</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="9 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="d2fb8e9ba1c6" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/introducing-configurable-metaflow-d2fb8e9ba1c6?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/introducing-configurable-metaflow-d2fb8e9ba1c6?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*XrOVl25ZLx8_4nHLRxNgDg.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Introducing Configurable Metaflow</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/introducing-configurable-metaflow-d2fb8e9ba1c6?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="d2fb8e9ba1c6"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Introducing Configurable Metaflow</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">David J. Berg*, David Casler^, Romain Cledat*, Qian Huang*, Rui Lin*, Nissan Pow*, Nurcan Sonmez*, Shashank Srikanth*, Chaoying Wang*…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-12-20T07:10:37.289Z">Dec 19, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="d761cfd551ee" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/part-1-a-survey-of-analytics-engineering-work-at-netflix-d761cfd551ee?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/part-1-a-survey-of-analytics-engineering-work-at-netflix-d761cfd551ee?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*gUgNHuu6yqKdfbgg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Part 1: A Survey of Analytics Engineering Work at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/part-1-a-survey-of-analytics-engineering-work-at-netflix-d761cfd551ee?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="d761cfd551ee"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Part 1: A Survey of Analytics Engineering Work at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">This article is the first in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-12-17T23:15:23.415Z">Dec 17, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div></div></section></div><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Latest</span></div></div></header><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------0-----------------------" data-post-id="f2a142955f83" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/cloud-efficiency-at-netflix-f2a142955f83?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/cloud-efficiency-at-netflix-f2a142955f83?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*vDQJiJUttlRSpVBo&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Cloud Efficiency at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/cloud-efficiency-at-netflix-f2a142955f83?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="f2a142955f83"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Cloud Efficiency at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By J Han, Pallavi Phadnis</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-12-17T22:16:44.235Z">Dec 17, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------1-----------------------" data-post-id="c88c586629eb" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/title-launch-observability-at-netflix-scale-c88c586629eb?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/title-launch-observability-at-netflix-scale-c88c586629eb?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*5F9ATQbyOp99jMwJ&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Title Launch Observability at Netflix Scale</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/title-launch-observability-at-netflix-scale-c88c586629eb?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="c88c586629eb"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Title Launch Observability at Netflix Scale</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Part 1: Understanding The Challenges</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-12-17T21:54:37.441Z">Dec 17, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="8d0c45eb66b2" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/netflixs-distributed-counter-abstraction-8d0c45eb66b2?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/netflixs-distributed-counter-abstraction-8d0c45eb66b2?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*Yusg6kC9Jj9ayjbi&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Netflix’s Distributed Counter Abstraction</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/netflixs-distributed-counter-abstraction-8d0c45eb66b2?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="8d0c45eb66b2"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Netflix’s Distributed Counter Abstraction</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By: Rajiv Shringi, Oleksii Tkachuk, Kartik Sathyanarayanan</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-12T20:34:59.050Z">Nov 12, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="19 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="faa017b4653d" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/investigation-of-a-workbench-ui-latency-issue-faa017b4653d?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/investigation-of-a-workbench-ui-latency-issue-faa017b4653d?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*ltV3CYtNjLCzolXD&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Investigation of a Workbench UI Latency Issue</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/investigation-of-a-workbench-ui-latency-issue-faa017b4653d?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="faa017b4653d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Investigation of a Workbench UI Latency Issue</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By: Hechao Li and Marcelo Mayworm</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-14T20:02:31.194Z">Oct 14, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="12 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="31552f6326f8" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/introducing-netflix-timeseries-data-abstraction-layer-31552f6326f8?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/introducing-netflix-timeseries-data-abstraction-layer-31552f6326f8?source=collection_home---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*jl30Jl559Fnd29in&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Introducing Netflix’s TimeSeries Data Abstraction Layer</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/introducing-netflix-timeseries-data-abstraction-layer-31552f6326f8?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="31552f6326f8"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Introducing Netflix’s TimeSeries Data Abstraction Layer</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By Rajiv Shringi, Vinay Chella, Kaidan Fullerton, Oleksii Tkachuk, Joey Lynch</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-08T17:01:53.282Z">Oct 8, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="18 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------5-----------------------" data-post-id="1ea8a0a11b30" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30?source=collection_home---4------5-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*9Ny8Uc-diSDnVGnk&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Introducing Netflix’s Key-Value Data Abstraction Layer</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="1ea8a0a11b30"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Introducing Netflix’s Key-Value Data Abstraction Layer</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Vidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chella</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-09-18T22:46:47.757Z">Sep 18, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------6-----------------------" data-post-id="b468bc0ff658" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/pushy-to-the-limit-evolving-netflixs-websocket-proxy-for-the-future-b468bc0ff658?source=collection_home---4------6-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/pushy-to-the-limit-evolving-netflixs-websocket-proxy-for-the-future-b468bc0ff658?source=collection_home---4------6-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*WQ1W30ChfWrEmmR5&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Pushy to the Limit: Evolving Netflix’s WebSocket proxy for the future</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/pushy-to-the-limit-evolving-netflixs-websocket-proxy-for-the-future-b468bc0ff658?source=collection_home---4------6-----------------------" data-action-source="collection_home---4------6-----------------------" data-post-id="b468bc0ff658"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Pushy to the Limit: Evolving Netflix’s WebSocket proxy for the future</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Pushy is Netflix’s WebSocket server that maintains persistent WebSocket connections with devices running the Netflix application. This…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-09-10T19:14:47.154Z">Sep 10, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="16 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------7-----------------------" data-post-id="64b1f4b3bbdd" data-index="7"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/noisy-neighbor-detection-with-ebpf-64b1f4b3bbdd?source=collection_home---4------7-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/noisy-neighbor-detection-with-ebpf-64b1f4b3bbdd?source=collection_home---4------7-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*6bapyclfXZPsUIaXFM-xaQ.png&quot;); background-position: 48% 50% !important;"><span class="u-textScreenReader">Noisy Neighbor Detection with eBPF</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/noisy-neighbor-detection-with-ebpf-64b1f4b3bbdd?source=collection_home---4------7-----------------------" data-action-source="collection_home---4------7-----------------------" data-post-id="64b1f4b3bbdd"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Noisy Neighbor Detection with eBPF</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-09-10T17:57:48.745Z">Sep 10, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------8-----------------------" data-post-id="ac15cada49ef" data-index="8"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/recommending-for-long-term-member-satisfaction-at-netflix-ac15cada49ef?source=collection_home---4------8-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/recommending-for-long-term-member-satisfaction-at-netflix-ac15cada49ef?source=collection_home---4------8-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*Y8QDcyallv_mh7ylPzXqkA.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Recommending for Long-Term Member Satisfaction at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/recommending-for-long-term-member-satisfaction-at-netflix-ac15cada49ef?source=collection_home---4------8-----------------------" data-action-source="collection_home---4------8-----------------------" data-post-id="ac15cada49ef"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Recommending for Long-Term Member Satisfaction at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By Jiangwei Pan, Gary Tang, Henry Wang, and Justin Basilico</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-08-29T00:59:13.618Z">Aug 28, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------9-----------------------" data-post-id="64c786c2a3ac" data-index="9"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/improve-your-next-experiment-by-learning-better-proxy-metrics-from-past-experiments-64c786c2a3ac?source=collection_home---4------9-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/improve-your-next-experiment-by-learning-better-proxy-metrics-from-past-experiments-64c786c2a3ac?source=collection_home---4------9-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*m_lKjIe460GlWr5JseoQzw.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Improve Your Next Experiment by Learning Better Proxy Metrics From Past Experiments</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/improve-your-next-experiment-by-learning-better-proxy-metrics-from-past-experiments-64c786c2a3ac?source=collection_home---4------9-----------------------" data-action-source="collection_home---4------9-----------------------" data-post-id="64c786c2a3ac"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Improve Your Next Experiment by Learning Better Proxy Metrics From Past Experiments</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By Aurélien Bibaut, Winston Chou, Simon Ejdemyr, and Nathan Kallus</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-08-26T15:44:02.705Z">Aug 26, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------10-----------------------" data-post-id="3052540e231d" data-index="10"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d?source=collection_home---4------10-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d?source=collection_home---4------10-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*6AOJeVdbhmStpb9CRj30nw.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Java 21 Virtual Threads - Dude, Where’s My Lock?</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d?source=collection_home---4------10-----------------------" data-action-source="collection_home---4------10-----------------------" data-post-id="3052540e231d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Java 21 Virtual Threads - Dude, Where’s My Lock?</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Getting real with virtual threads</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-07-29T18:03:30.765Z">Jul 29, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------11-----------------------" data-post-id="ee13a06f9c78" data-index="11"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/maestro-netflixs-workflow-orchestrator-ee13a06f9c78?source=collection_home---4------11-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/maestro-netflixs-workflow-orchestrator-ee13a06f9c78?source=collection_home---4------11-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*d7XTqfPjAkuCBv6C&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Maestro: Netflix’s Workflow Orchestrator</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/maestro-netflixs-workflow-orchestrator-ee13a06f9c78?source=collection_home---4------11-----------------------" data-action-source="collection_home---4------11-----------------------" data-post-id="ee13a06f9c78"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Maestro: Netflix’s Workflow Orchestrator</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By Jun He, Natallia Dzenisenka, Praneeth Yenugutala, Yingyi Zhang, and Anjali Norwood</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-07-22T17:37:55.929Z">Jul 22, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="18 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------12-----------------------" data-post-id="e735e6ce8f7d" data-index="12"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/enhancing-netflix-reliability-with-service-level-prioritized-load-shedding-e735e6ce8f7d?source=collection_home---4------12-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/enhancing-netflix-reliability-with-service-level-prioritized-load-shedding-e735e6ce8f7d?source=collection_home---4------12-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*2KByIB47RWng5UNH&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Enhancing Netflix Reliability with Service-Level Prioritized Load Shedding</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/enhancing-netflix-reliability-with-service-level-prioritized-load-shedding-e735e6ce8f7d?source=collection_home---4------12-----------------------" data-action-source="collection_home---4------12-----------------------" data-post-id="e735e6ce8f7d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Enhancing Netflix Reliability with Service-Level Prioritized Load Shedding</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Applying Quality of Service techniques at the application level</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-06-25T04:23:56.271Z">Jun 24, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="12 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------13-----------------------" data-post-id="6b4d4410b88f" data-index="13"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/a-recap-of-the-data-engineering-open-forum-at-netflix-6b4d4410b88f?source=collection_home---4------13-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/a-recap-of-the-data-engineering-open-forum-at-netflix-6b4d4410b88f?source=collection_home---4------13-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*k1mwTj0BpJuP0TDi&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">A Recap of the Data Engineering Open Forum at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/a-recap-of-the-data-engineering-open-forum-at-netflix-6b4d4410b88f?source=collection_home---4------13-----------------------" data-action-source="collection_home---4------13-----------------------" data-post-id="6b4d4410b88f"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">A Recap of the Data Engineering Open Forum at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">A summary of sessions at the first Data Engineering Open Forum at Netflix on April 18th, 2024</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-06-20T15:01:26.009Z">Jun 20, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------14-----------------------" data-post-id="8ebdda0b2db4" data-index="14"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/video-annotator-building-video-classifiers-using-vision-language-models-and-active-learning-8ebdda0b2db4?source=collection_home---4------14-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/video-annotator-building-video-classifiers-using-vision-language-models-and-active-learning-8ebdda0b2db4?source=collection_home---4------14-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*hqNZjvWBlREV5GIv4uEmHw.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Video annotator: building video classifiers using vision-language models and active learning</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/video-annotator-building-video-classifiers-using-vision-language-models-and-active-learning-8ebdda0b2db4?source=collection_home---4------14-----------------------" data-action-source="collection_home---4------14-----------------------" data-post-id="8ebdda0b2db4"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Video annotator: building video classifiers using vision-language models and active learning</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Harness domain expertise with Video Annotator: streamline ML annotations, cut costs, and deploy faster using a human-in-the-loop system 🚀</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-06-19T13:02:41.051Z">Jun 19, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------15-----------------------" data-post-id="fd78328ee0bb" data-index="15"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/round-2-a-survey-of-causal-inference-applications-at-netflix-fd78328ee0bb?source=collection_home---4------15-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/round-2-a-survey-of-causal-inference-applications-at-netflix-fd78328ee0bb?source=collection_home---4------15-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*e8IMSJf7p60mk-WG&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Round 2: A Survey of Causal Inference Applications at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/round-2-a-survey-of-causal-inference-applications-at-netflix-fd78328ee0bb?source=collection_home---4------15-----------------------" data-action-source="collection_home---4------15-----------------------" data-post-id="fd78328ee0bb"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Round 2: A Survey of Causal Inference Applications at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">At Netflix, we want to ensure that every current and future member finds content that thrills them today and excites them to come back for…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-06-06T20:09:08.074Z">Jun 6, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------16-----------------------" data-post-id="422d6218fdf1" data-index="16"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/investigation-of-a-cross-regional-network-performance-issue-422d6218fdf1?source=collection_home---4------16-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/investigation-of-a-cross-regional-network-performance-issue-422d6218fdf1?source=collection_home---4------16-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*RpHklRseVBeBJG6u&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Investigation of a Cross-regional Network Performance Issue</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/investigation-of-a-cross-regional-network-performance-issue-422d6218fdf1?source=collection_home---4------16-----------------------" data-action-source="collection_home---4------16-----------------------" data-post-id="422d6218fdf1"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Investigation of a Cross-regional Network Performance Issue</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Hechao Li, Roger Cruz</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-04-24T16:33:03.776Z">Apr 24, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------17-----------------------" data-post-id="946b9b3cd300" data-index="17"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/the-making-of-ves-the-cosmos-microservice-for-netflix-video-encoding-946b9b3cd300?source=collection_home---4------17-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/the-making-of-ves-the-cosmos-microservice-for-netflix-video-encoding-946b9b3cd300?source=collection_home---4------17-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*7n3hN3lYhe89Ezk6&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">The Making of VES: the Cosmos Microservice for Netflix Video Encoding</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/the-making-of-ves-the-cosmos-microservice-for-netflix-video-encoding-946b9b3cd300?source=collection_home---4------17-----------------------" data-action-source="collection_home---4------17-----------------------" data-post-id="946b9b3cd300"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The Making of VES: the Cosmos Microservice for Netflix Video Encoding</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Liwei Guo, Vinicius Carvalho, Anush Moorthy, Aditya Mavlankar, Lishan Zhu</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-04-09T22:12:32.638Z">Apr 9, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="11 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------18-----------------------" data-post-id="222ac5d23576" data-index="18"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/reverse-searching-netflixs-federated-graph-222ac5d23576?source=collection_home---4------18-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/reverse-searching-netflixs-federated-graph-222ac5d23576?source=collection_home---4------18-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*GCZRoNqT8seObcUFzYthXg.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Reverse Searching Netflix’s Federated Graph</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/reverse-searching-netflixs-federated-graph-222ac5d23576?source=collection_home---4------18-----------------------" data-action-source="collection_home---4------18-----------------------" data-post-id="222ac5d23576"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Reverse Searching Netflix’s Federated Graph</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By Ricky Gardiner, Alex Hutter, Damir Svrtan and Katie Lefevre</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-04-04T14:02:05.360Z">Apr 4, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------19-----------------------" data-post-id="da6805341642" data-index="19"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/sequential-testing-keeps-the-world-streaming-netflix-part-2-counting-processes-da6805341642?source=collection_home---4------19-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/sequential-testing-keeps-the-world-streaming-netflix-part-2-counting-processes-da6805341642?source=collection_home---4------19-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*7DNyGA0x7r7msS7w1Zpvpw.jpeg&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Sequential Testing Keeps the World Streaming Netflix Part 2: Counting Processes</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/sequential-testing-keeps-the-world-streaming-netflix-part-2-counting-processes-da6805341642?source=collection_home---4------19-----------------------" data-action-source="collection_home---4------19-----------------------" data-post-id="da6805341642"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Sequential Testing Keeps the World Streaming Netflix Part 2: Counting Processes</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Michael Lindon, Chris Sanden, Vache Shirikian, Yanjun Liu, Minal Mishra, Martin Tingley</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-03-18T12:46:46.360Z">Mar 18, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------20-----------------------" data-post-id="2d2e6b6d205d" data-index="20"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/supporting-diverse-ml-systems-at-netflix-2d2e6b6d205d?source=collection_home---4------20-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/supporting-diverse-ml-systems-at-netflix-2d2e6b6d205d?source=collection_home---4------20-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*4hoAg4FX6oeua708alTMlA.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Supporting Diverse ML Systems at Netflix</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/supporting-diverse-ml-systems-at-netflix-2d2e6b6d205d?source=collection_home---4------20-----------------------" data-action-source="collection_home---4------20-----------------------" data-post-id="2d2e6b6d205d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Supporting Diverse ML Systems at Netflix</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">David J. Berg, Romain Cledat, Kayla Seeley, Shashank Srikanth, Chaoying Wang, Darin Yu</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-03-07T18:29:34.440Z">Mar 7, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="12 min read"></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------21-----------------------" data-post-id="256629c9386b" data-index="21"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/bending-pause-times-to-your-will-with-generational-zgc-256629c9386b?source=collection_home---4------21-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/bending-pause-times-to-your-will-with-generational-zgc-256629c9386b?source=collection_home---4------21-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/0*GuEZ-RMhzNnYgLQd&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Bending pause times to your will with Generational ZGC</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/bending-pause-times-to-your-will-with-generational-zgc-256629c9386b?source=collection_home---4------21-----------------------" data-action-source="collection_home---4------21-----------------------" data-post-id="256629c9386b"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Bending pause times to your will with Generational ZGC</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The surprising and not so surprising benefits of generations in the Z Garbage Collector.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-03-06T01:35:08.587Z">Mar 5, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------22-----------------------" data-post-id="039d5efd115b" data-index="22"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/evolving-from-rule-based-classifier-machine-learning-powered-auto-remediation-in-netflix-data-039d5efd115b?source=collection_home---4------22-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/evolving-from-rule-based-classifier-machine-learning-powered-auto-remediation-in-netflix-data-039d5efd115b?source=collection_home---4------22-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*2eENd1mhwyGpMWNccEwqlQ.png&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Evolving from Rule-based Classifier: Machine Learning Powered Auto Remediation in Netflix Data…</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/evolving-from-rule-based-classifier-machine-learning-powered-auto-remediation-in-netflix-data-039d5efd115b?source=collection_home---4------22-----------------------" data-action-source="collection_home---4------22-----------------------" data-post-id="039d5efd115b"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Evolving from Rule-based Classifier: Machine Learning Powered Auto Remediation in Netflix Data…</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">by Binbing Hou, Stephanie Vezich Tamayo, Xiao Chen, Liang Tian, Troy Ristow, Haoyuan Wang, Snehal Chennuru, Pawan Dixit</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-03-04T18:01:54.655Z">Mar 4, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="13 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------23-----------------------" data-post-id="6a727c1ae2e5" data-index="23"><div class="u-lineHeightBase postItem"><a href="https://netflixtechblog.com/announcing-bpftop-streamlining-ebpf-performance-optimization-6a727c1ae2e5?source=collection_home---4------23-----------------------" data-action="open-post" data-action-value="https://netflixtechblog.com/announcing-bpftop-streamlining-ebpf-performance-optimization-6a727c1ae2e5?source=collection_home---4------23-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url(&quot;https://cdn-images-1.medium.com/max/800/1*hLvLcNDb6RljixhN8la-lg.gif&quot;); background-position: 50% 50% !important;"><span class="u-textScreenReader">Announcing bpftop: Streamlining eBPF performance optimization</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://netflixtechblog.com/announcing-bpftop-streamlining-ebpf-performance-optimization-6a727c1ae2e5?source=collection_home---4------23-----------------------" data-action-source="collection_home---4------23-----------------------" data-post-id="6a727c1ae2e5"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Announcing bpftop: Streamlining eBPF performance optimization</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">By Jose Fernandez</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Netflix Technology Blog"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://netflixtechblog.com/@netflixtechblog" data-action="show-user-card" data-action-value="c3aeaf49d8a4" data-action-type="hover" data-user-id="c3aeaf49d8a4" data-collection-slug="netflix-techblog" dir="auto">Netflix Technology Blog</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-02-26T16:31:37.695Z">Feb 26, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="2 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #898384 !important;} .u-accentColor--borderNormal {border-color: #898384 !important;} .u-accentColor--borderDark {border-color: #767071 !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #898384 !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #898384 !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #767071 !important;} .u-accentColor--textNormal {color: #767071 !important;} .u-accentColor--hoverTextNormal:hover {color: #767071 !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #6C6768 !important;} .u-accentColor--textDark {color: #6C6768 !important;} .u-accentColor--backgroundLight {background-color: #898384 !important;} .u-accentColor--backgroundNormal {background-color: #898384 !important;} .u-accentColor--backgroundDark {background-color: #767071 !important;} .u-accentColor--buttonDark {border-color: #767071 !important; color: #6C6768 !important;} .u-accentColor--buttonDark:hover {border-color: #6C6768 !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #767071 !important; fill: #767071 !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #898384 !important; color: #767071 !important;} .u-accentColor--buttonNormal:hover {border-color: #767071 !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #898384 !important; fill: #898384 !important;} .u-accentColor--buttonNormal.button--filled .icon:before,.u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonDark.button--filled,.u-accentColor--buttonDark.button--withChrome.is-active,.u-accentColor--fillWhenActive.is-active {background-color: #767071 !important; border-color: #767071 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #898384 !important; border-color: #898384 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .postArticle.is-withAccentColors .markup--user,.postArticle.is-withAccentColors .markup--query {color: #767071 !important;}.u-tintBgColor {background-color: rgba(34, 30, 31, 1) !important;}.u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(34, 30, 31, 1) 0%, rgba(34, 30, 31, 0) 100%) !important;}.u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(34, 30, 31, 0) 0%, rgba(34, 30, 31, 1) 100%) !important;} .u-tintSpectrum .u-baseColor--borderLight {border-color: #9F9A9A !important;} .u-tintSpectrum .u-baseColor--borderNormal {border-color: #C8C3C3 !important;} .u-tintSpectrum .u-baseColor--borderDark {border-color: #EEEAEA !important;} .u-tintSpectrum .u-baseColor--iconLight .svgIcon,.u-tintSpectrum .u-baseColor--iconLight.svgIcon {fill: #9F9A9A !important;} .u-tintSpectrum .u-baseColor--iconNormal .svgIcon,.u-tintSpectrum .u-baseColor--iconNormal.svgIcon {fill: #C8C3C3 !important;} .u-tintSpectrum .u-baseColor--iconDark .svgIcon,.u-tintSpectrum .u-baseColor--iconDark.svgIcon {fill: #EEEAEA !important;} .u-tintSpectrum .u-baseColor--textNormal {color: #C8C3C3 !important;} .u-tintSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--textDark {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--textDarker {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--backgroundLight {background-color: #9F9A9A !important;} .u-tintSpectrum .u-baseColor--backgroundNormal {background-color: #C8C3C3 !important;} .u-tintSpectrum .u-baseColor--backgroundDark {background-color: #EEEAEA !important;} .u-tintSpectrum .u-baseColor--buttonLight {border-color: #9F9A9A !important; color: #9F9A9A !important;} .u-tintSpectrum .u-baseColor--buttonLight:hover {border-color: #9F9A9A !important;} .u-tintSpectrum .u-baseColor--buttonLight .icon:before,.u-tintSpectrum .u-baseColor--buttonLight .svgIcon {color: #9F9A9A !important; fill: #9F9A9A !important;} .u-tintSpectrum .u-baseColor--buttonDark {border-color: #EEEAEA !important; color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--buttonDark:hover {border-color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--buttonDark .icon:before,.u-tintSpectrum .u-baseColor--buttonDark .svgIcon {color: #EEEAEA !important; fill: #EEEAEA !important;} .u-tintSpectrum .u-baseColor--buttonNormal {border-color: #C8C3C3 !important; color: #C8C3C3 !important;} .u-tintSpectrum .u-baseColor--buttonNormal:hover {border-color: #EEEAEA !important;} .u-tintSpectrum .u-baseColor--buttonNormal .icon:before,.u-tintSpectrum .u-baseColor--buttonNormal .svgIcon {color: #C8C3C3 !important; fill: #C8C3C3 !important;} .u-tintSpectrum .u-baseColor--buttonDark.button--filled,.u-tintSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: #EEEAEA !important; border-color: #EEEAEA !important; color: rgba(34, 30, 31, 1) !important; fill: rgba(34, 30, 31, 1) !important;} .u-tintSpectrum .u-baseColor--buttonNormal.button--filled,.u-tintSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: #C8C3C3 !important; border-color: #C8C3C3 !important; color: rgba(34, 30, 31, 1) !important; fill: rgba(34, 30, 31, 1) !important;} .u-tintSpectrum .u-baseColor--link {color: #C8C3C3 !important;} .u-tintSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--link.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--darken:active {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--link.link--dark {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-tintSpectrum .u-baseColor--link.link--dark.link--darken:active {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--link.link--darker {color: #FFFDFD !important;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: #9F9A9A;} .u-tintSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: #9F9A9A;} .u-tintSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: #9F9A9A;} .u-tintSpectrum .ui-h1,.u-tintSpectrum .ui-h2,.u-tintSpectrum .ui-h3,.u-tintSpectrum .ui-h4,.u-tintSpectrum .ui-brand1,.u-tintSpectrum .ui-brand2,.u-tintSpectrum .ui-captionStrong {color: #FFFDFD !important; fill: #FFFDFD !important;} .u-tintSpectrum .ui-body,.u-tintSpectrum .ui-caps {color: #FFFDFD !important; fill: #FFFDFD !important;} .u-tintSpectrum .ui-summary,.u-tintSpectrum .ui-caption {color: #9F9A9A !important; fill: #9F9A9A !important;} .u-tintSpectrum .u-accentColor--borderLight {border-color: #9F9A9A !important;} .u-tintSpectrum .u-accentColor--borderNormal {border-color: #C8C3C3 !important;} .u-tintSpectrum .u-accentColor--borderDark {border-color: #EEEAEA !important;} .u-tintSpectrum .u-accentColor--iconLight .svgIcon,.u-tintSpectrum .u-accentColor--iconLight.svgIcon {fill: #9F9A9A !important;} .u-tintSpectrum .u-accentColor--iconNormal .svgIcon,.u-tintSpectrum .u-accentColor--iconNormal.svgIcon {fill: #C8C3C3 !important;} .u-tintSpectrum .u-accentColor--iconDark .svgIcon,.u-tintSpectrum .u-accentColor--iconDark.svgIcon {fill: #EEEAEA !important;} .u-tintSpectrum .u-accentColor--textNormal {color: #C8C3C3 !important;} .u-tintSpectrum .u-accentColor--hoverTextNormal:hover {color: #C8C3C3 !important;} .u-tintSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #FFFDFD !important;} .u-tintSpectrum .u-accentColor--textDark {color: #FFFDFD !important;} .u-tintSpectrum .u-accentColor--backgroundLight {background-color: #9F9A9A !important;} .u-tintSpectrum .u-accentColor--backgroundNormal {background-color: #C8C3C3 !important;} .u-tintSpectrum .u-accentColor--backgroundDark {background-color: #EEEAEA !important;} .u-tintSpectrum .u-accentColor--buttonDark {border-color: #EEEAEA !important; color: #FFFDFD !important;} .u-tintSpectrum .u-accentColor--buttonDark:hover {border-color: #FFFDFD !important;} .u-tintSpectrum .u-accentColor--buttonDark .icon:before,.u-tintSpectrum .u-accentColor--buttonDark .svgIcon{color: #EEEAEA !important; fill: #EEEAEA !important;} .u-tintSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #C8C3C3 !important; color: #C8C3C3 !important;} .u-tintSpectrum .u-accentColor--buttonNormal:hover {border-color: #EEEAEA !important;} .u-tintSpectrum .u-accentColor--buttonNormal .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal .svgIcon{color: #C8C3C3 !important; fill: #C8C3C3 !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-tintSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(34, 30, 31, 1) !important; fill: rgba(34, 30, 31, 1) !important;} .u-tintSpectrum .u-accentColor--buttonDark.button--filled,.u-tintSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-tintSpectrum .u-accentColor--fillWhenActive.is-active {background-color: #EEEAEA !important; border-color: #EEEAEA !important; color: rgba(34, 30, 31, 1) !important; fill: rgba(34, 30, 31, 1) !important;} .u-tintSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-tintSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #C8C3C3 !important; border-color: #C8C3C3 !important; color: rgba(34, 30, 31, 1) !important; fill: rgba(34, 30, 31, 1) !important;} .u-tintSpectrum .postArticle.is-withAccentColors .markup--user,.u-tintSpectrum .postArticle.is-withAccentColors .markup--query {color: #C8C3C3 !important;} .u-accentColor--highlightFaint {background-color: rgba(244, 239, 239, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(229, 222, 222, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(244, 239, 239, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(244, 239, 239, 1), rgba(244, 239, 239, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(236, 230, 230, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(236, 230, 230, 1), rgba(236, 230, 230, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(229, 222, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(229, 222, 222, 1), rgba(229, 222, 222, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(229, 222, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(229, 222, 222, 1), rgba(229, 222, 222, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(229, 222, 222, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(229, 222, 222, 1), rgba(229, 222, 222, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);} .u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .ui-h1,.u-imageSpectrum .ui-h2,.u-imageSpectrum .ui-h3,.u-imageSpectrum .ui-h4,.u-imageSpectrum .ui-brand1,.u-imageSpectrum .ui-brand2,.u-imageSpectrum .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-body,.u-imageSpectrum .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-summary,.u-imageSpectrum .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;} .u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;} .u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;} .u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .ui-h1,.u-resetSpectrum .ui-h2,.u-resetSpectrum .ui-h3,.u-resetSpectrum .ui-h4,.u-resetSpectrum .ui-brand1,.u-resetSpectrum .ui-brand2,.u-resetSpectrum .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .ui-body,.u-resetSpectrum .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .ui-summary,.u-resetSpectrum .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style><div class="js-collectionFooter u-tintBgColor u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-tintSpectrum"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0" href="https://netflixtechblog.com/about" title="About Netflix TechBlog" aria-label="About Netflix TechBlog" data-collection-slug="netflix-techblog">About Netflix TechBlog</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://netflixtechblog.com/latest" title="Latest Stories for Netflix TechBlog" aria-label="Latest Stories for Netflix TechBlog" data-collection-slug="netflix-techblog">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://netflixtechblog.com/archive" title="Archive for Netflix TechBlog" aria-label="Archive for Netflix TechBlog" data-collection-slug="netflix-techblog">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/about">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9">Privacy</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/business">Teams</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[ window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;} // ]]></script><script>// <![CDATA[ var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://netflixtechblog.com","buildLabel":"20250214-1839-root","currentUser":{"userId":"lo_4cb4fc7ed990","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":true,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false,"collectionOnboardingSeen":0,"atsQualifiedAt":0},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.8Tcu27LFq3PCOR9WxTangw.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.OeYcXrNwP1RO6In97YcKLQ.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.wCbOa67hZjl5Sam6zzVFnA.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.tTmySBFexDB1lciGURkN8g.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.a_EBqZVM6AyX_Kp1jlxGyQ.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.-oShrzSeUmNJS3K6rx04MA.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.P8k9CfZ1LzppHTJYwJD_Ig.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.9h8MreH1W2quy7BlStgo8w.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.BeGFKpJATbmOvbKtPqdULA.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle.7zPJu_iPvZQ7WmBm5quNMw.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.JdLpnwrzm9Rc1drxpYremQ.12.js"},"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":false,"termsUrl":"//policy.medium.com/medium-terms-of-service-9db0094a1e0f","textshotHost":"textshot.textshot-production.svc.cluster.local","transactionId":"1739781721474:855d52f20abc","useragent":{"browser":"ie","family":"ie","os":"windows","version":7,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"disable_partner_program_enrollment":true,"enable_abandoned_cart_promotion_email":true,"enable_abandoned_paywall_email_experiment":"control","enable_abandoned_paywall_promotion_email":true,"enable_android_dynamic_aspirational_paywall":true,"enable_android_dynamic_programming_paywall":true,"enable_android_miro_v2":true,"enable_android_offline_reading":true,"enable_android_verified_author":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_apple_webhook":true,"enable_aurora_pub_follower_page":true,"enable_author_cards":true,"enable_author_cards_byline":true,"enable_auto_follow_on_subscribe":true,"enable_automod":true,"enable_bg_post_post":true,"enable_boost_experiment":"control","enable_boost_nia_v01":true,"enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_cancellation_discount_v1_1":true,"enable_cancellation_discount_v1_email":true,"enable_configure_pronouns":true,"enable_conversion_model_v2":"group_2","enable_conversion_ranker_v2":"control","enable_creator_welcome_email":true,"enable_deprecate_legacy_providers_v3":true,"enable_deviant_get_variant_flag_from_medium2":true,"enable_diversification_rex":true,"enable_engagement_service_publish_response":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_hybrid_ranking_model":"experiment","enable_iceland_forced_android":true,"enable_import":true,"enable_intrinsic_automatic_actions":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_homepage":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_medium_com_canonical_urls":true,"enable_members_only_audio":true,"enable_ml_rank_rex_anno":true,"enable_moc_load_processor_all_recs_surfaces":true,"enable_moc_load_processor_c":true,"enable_moc_load_processor_first_story":true,"enable_new_manage_membership_flow":true,"enable_new_stripe_customers":true,"enable_newsletter_lo_flow_custom_domains":true,"enable_pill_based_home_feed":true,"enable_plans_page_branding":"control","enable_plans_page_branding_v2":"control","enable_plans_page_payment_form":"group_1","enable_post_bottom_responses":true,"enable_post_bottom_responses_input":true,"enable_post_bottom_responses_native":true,"enable_post_publish_permission_check":true,"enable_pp_country_expansion":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_pub_featuring":true,"enable_pub_featuring_post_page_label":true,"enable_pub_featuring_stats":true,"enable_ranker_v10":"control","enable_recaptcha_enterprise":true,"enable_recirc_model":true,"enable_recommended_publishers_query":true,"enable_rex_aggregator_v2":true,"enable_rex_new_push_notification_endpoint":true,"enable_rex_reading_history":true,"enable_rito_upstream_deadlines":true,"enable_seamless_social_sharing":true,"enable_see_pronouns":true,"enable_sharer_create_post_share_key":true,"enable_sharer_validate_post_share_key":true,"enable_simplified_digest_v2_b":true,"enable_speechify_ios":true,"enable_speechify_widget":true,"enable_sprig":true,"enable_starspace":true,"enable_susi_redesign_android":true,"enable_susi_redesign_ios":true,"enable_switch_plan_premium_tier":true,"enable_tag_recs":true,"enable_tick_landing_page":true,"enable_tipping_v0_android":true,"enable_tipping_v0_ios":true,"enable_tribute_landing_page":true,"enable_trust_service_recaptcha":true,"enable_update_explore_wtf":true,"enable_update_topic_portals_wtf":true,"enable_updated_pub_recs_ui":true,"enable_verifications_service":true,"enable_winback_promotion_email":true,"get_highlights_from_engagement":true,"glyph_font_set":"m2-unbound-source-serif-pro","goliath_externalsearch_enable_comment_deindexation":true,"ios_display_paywall_after_onboarding":true,"ios_enable_friend_links_creation":true,"ios_enable_friend_links_postpage_banners":true,"ios_enable_home_post_menu":true,"ios_enable_lock_responses":true,"ios_enable_verified_book_author":true,"ios_iceland_nux":true,"ios_in_app_free_trial":true,"ios_remove_twitter_onboarding_step":true,"ios_social_share_sheet":true,"limit_post_referrers":true,"limit_user_follows":true,"mobile_custom_app_icon":true,"num_post_bottom_responses_to_show":3,"onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":false,"domainCollectionSlug":"netflix-techblog","algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","faviconImageId":"5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"SG","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"} // ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.8Tcu27LFq3PCOR9WxTangw.12.js" async></script><script>// <![CDATA[ window["obvInit"]({"references":{"Collection":{"2615bd06b42e":{"id":"2615bd06b42e","name":"Netflix TechBlog","slug":"netflix-techblog","tags":["NETFLIX","ENGINEERING","CULTURE","TECHNOLOGY","PRODUCT"],"creatorId":"c3aeaf49d8a4","description":"Learn about Netflix’s world class engineering efforts, company culture, product developments and more.","shortDescription":"Learn about Netflix’s world class engineering efforts…","image":{"imageId":"1*ty4NvNrGg4ReETxqU2N3Og.png","filter":"","backgroundSize":"","originalWidth":400,"originalHeight":300,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":159131,"activeAt":1739582000266},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*XMfuQcaI93EqrkVcAyVsTw.png","filter":"","backgroundSize":"","originalWidth":2802,"originalHeight":684,"strategy":"resample","height":0,"width":0},"domain":"netflixtechblog.com","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{},"logoImage":{"id":"1*rOPLUJ3W6FUA3rO1U1IeuA@2x.png","originalWidth":2000,"originalHeight":608,"alt":"Netflix TechBlog"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":1,"postIds":[]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":2,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":3,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}}],"tintColor":"#FF221E1F","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF898384","point":0},{"color":"#FF7F797A","point":0.1},{"color":"#FF767071","point":0.2},{"color":"#FF6C6768","point":0.3},{"color":"#FF615D5E","point":0.4},{"color":"#FF575354","point":0.5},{"color":"#FF4C4949","point":0.6},{"color":"#FF413E3E","point":0.7},{"color":"#FF353333","point":0.8},{"color":"#FF282727","point":0.9},{"color":"#FF1B1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF221E1F","point":0},{"color":"#FF403B3C","point":0.1},{"color":"#FF5A5556","point":0.2},{"color":"#FF726D6E","point":0.3},{"color":"#FF898485","point":0.4},{"color":"#FF9F9A9A","point":0.5},{"color":"#FFB4AFAF","point":0.6},{"color":"#FFC8C3C3","point":0.7},{"color":"#FFDBD7D7","point":0.8},{"color":"#FFEEEAEA","point":0.9},{"color":"#FFFFFDFD","point":1}],"backgroundColor":"#FF221E1F"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF6F1F1","point":0},{"color":"#FFF4EFEF","point":0.1},{"color":"#FFF2EDED","point":0.2},{"color":"#FFF1EBEC","point":0.3},{"color":"#FFEFE9EA","point":0.4},{"color":"#FFEDE8E8","point":0.5},{"color":"#FFECE6E6","point":0.6},{"color":"#FFEAE4E4","point":0.7},{"color":"#FFE8E2E2","point":0.8},{"color":"#FFE6E0E0","point":0.9},{"color":"#FFE5DEDE","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FFA19A9C","point":0},{"color":"#FFAAA3A4","point":0.1},{"color":"#FFB2ACAD","point":0.2},{"color":"#FFBAB4B5","point":0.3},{"color":"#FFC3BDBD","point":0.4},{"color":"#FFCBC5C5","point":0.5},{"color":"#FFD3CDCE","point":0.6},{"color":"#FFDAD5D6","point":0.7},{"color":"#FFE2DDDD","point":0.8},{"color":"#FFEAE5E5","point":0.9},{"color":"#FFF1EDED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[],"colorBehavior":2,"googleAnalyticsId":"UA-156554426-1","collectionFeatures":[25],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"cloakedAt":0,"header":{"backgroundImage":{},"logoImage":{"id":"1*rOPLUJ3W6FUA3rO1U1IeuA@2x.png","originalWidth":2000,"originalHeight":608,"alt":"Netflix TechBlog"},"alignment":2,"layout":5},"subscriberCount":159131,"tagline":"Learn about Netflix’s world class engineering efforts…","polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092817565,"type":"Collection"}},"User":{"c3aeaf49d8a4":{"userId":"c3aeaf49d8a4","name":"Netflix Technology Blog","username":"netflixtechblog","createdAt":1488086128633,"imageId":"1*BJWRqfSMf9Da9vsXG9EBRQ.jpeg","backgroundImageId":"","bio":"Learn more about how Netflix designs, builds, and operates our systems and engineering organizations","twitterScreenName":"","allowNotes":1,"mediumMemberAt":0,"isWriterProgramEnrolled":true,"isSuspended":false,"isMembershipTrialEligible":true,"facebookDisplayName":"","optInToIceland":true,"subdomainCreatedAt":1611247464179,"hasCompletedProfile":false,"userDismissableFlags":[32,29,21,19,18,12,44,41,8,6,5,30,3,2,10,1,33],"hasSeenIcelandOnboarding":true,"postSubscribeMembershipUpsellShownAt":0,"languageCode":"en-us","type":"User"}},"Post":{"e2b67c88c9fb":{"id":"e2b67c88c9fb","versionId":"40bd5ec2c1e6","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Introducing Impressions at Netflix","detectedLanguage":"en","latestVersion":"40bd5ec2c1e6","latestPublishedVersion":"40bd5ec2c1e6","hasUnpublishedEdits":false,"latestRev":241,"createdAt":1739579421918,"updatedAt":1739586137630,"acceptedAt":0,"firstPublishedAt":1739581974346,"latestPublishedAt":1739581974346,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Part 1: Creating the Source of Truth for Impressions","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*T6tQiUj-VDtyEhd1","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":754,"strategy":"resample","height":0,"width":0},"wordCount":1303,"imageCount":5,"readingTime":5.750314465408804,"subtitle":"Part 1: Creating the Source of Truth for Impressions","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":73,"isBookmarked":false,"tags":[{"slug":"data","name":"Data","postCount":135828,"metadata":{"postCount":135828,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"data-engineering","name":"Data Engineering","postCount":42390,"metadata":{"postCount":42390,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"},{"slug":"distributed-systems","name":"Distributed Systems","postCount":9840,"metadata":{"postCount":9840,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://netflixtechblog.com/data-mesh-a-data-movement-and-processing-platform-netflix-1288bcab2873","alts":[{"type":3,"url":"medium://p/1288bcab2873"},{"type":2,"url":"medium://p/1288bcab2873"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/tulikabhatt/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1739581975262},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":250,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"introducing-impressions-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"introducing-impressions-at-netflix-e2b67c88c9fb","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},{"name":"5304","type":3,"text":"Introducing Impressions at Netflix","markups":[],"alignment":1},{"name":"097f","type":13,"text":"Part 1: Creating the Source of Truth for Impressions","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Part 1: Creating the Source of Truth for Impressions"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"f07e87e4a97f","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5304","type":3,"text":"Introducing Impressions at Netflix","markups":[]},{"name":"097f","type":13,"text":"Part 1: Creating the Source of Truth for Impressions","markups":[]},{"name":"ce57","type":1,"text":"By: Tulika Bhatt","markups":[{"type":3,"start":4,"end":16,"href":"https://www.linkedin.com/in/tulikabhatt/","title":"","rel":"noopener","anchorType":0},{"type":1,"start":0,"end":3}]},{"name":"e560","type":1,"text":"Imagine scrolling through Netflix, where each movie poster or promotional banner competes for your attention. Every image you hover over isn’t just a visual placeholder; it’s a critical data point that fuels our sophisticated personalization engine. At Netflix, we call these images ‘impressions,’ and they play a…","markups":[]}],"sections":[{"name":"4c37","startIndex":0}]},"isFullContent":false,"subtitle":"Part 1: Creating the Source of Truth for Impressions"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"19ea916be1ed":{"id":"19ea916be1ed","versionId":"d4dc72763a0b","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Title Launch Observability at Netflix Scale","detectedLanguage":"en","latestVersion":"d4dc72763a0b","latestPublishedVersion":"d4dc72763a0b","hasUnpublishedEdits":false,"latestRev":431,"createdAt":1736211305973,"updatedAt":1736427619317,"acceptedAt":0,"firstPublishedAt":1736213158105,"latestPublishedAt":1736213193650,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Part 2: Navigating Ambiguity","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*YyCLwVKiGE_L6fWb","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":1414,"strategy":"resample","height":0,"width":0},"wordCount":1286,"imageCount":2,"readingTime":5.236163522012579,"subtitle":"Part 2: Navigating Ambiguity","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":74,"isBookmarked":false,"tags":[{"slug":"netflix","name":"Netflix","postCount":54697,"metadata":{"postCount":54697,"coverImage":{"id":"1*gPChNfwSZTgdEWoRJktpuw.jpeg","originalWidth":853,"originalHeight":450}},"type":"Tag"},{"slug":"observability","name":"Observability","postCount":4958,"metadata":{"postCount":4958,"coverImage":{"id":"1*ZOBAjq5TTNmPCdHcSYserg.png","originalWidth":686,"originalHeight":260,"isFeatured":true}},"type":"Tag"},{"slug":"staff-engineering","name":"Staff Engineering","postCount":112,"metadata":{"postCount":112,"coverImage":{"id":"0*YyCLwVKiGE_L6fWb","originalWidth":1600,"originalHeight":1414,"isFeatured":true}},"type":"Tag"},{"slug":"ambiguity","name":"Ambiguity","postCount":557,"metadata":{"postCount":557,"coverImage":{"id":"0*YyCLwVKiGE_L6fWb","originalWidth":1600,"originalHeight":1414,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://www.linkedin.com/in/esmir-mesic/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/varun-khaitan/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/hugodesmarques/","alts":[],"httpStatus":999},{"url":"https://medium.com/netflix-techblog/title-launch-observability-at-netflix-scale-c88c586629eb","alts":[{"type":3,"url":"medium://p/c88c586629eb"},{"type":2,"url":"medium://p/c88c586629eb"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/mallikarao/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1736213194693},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":205,"sectionCount":1,"readingList":0,"topics":[{"topicId":"4861fee224fd","slug":"marketing","createdAt":1493928453626,"deletedAt":0,"image":{"id":"1*3blpwADxHq_9ksV-SXek-g@2x.jpeg","originalWidth":4000,"originalHeight":2250},"name":"Marketing","description":"Always be branding.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Marketing Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"title-launch-observability-at-netflix-scale","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"title-launch-observability-at-netflix-scale-19ea916be1ed","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*YyCLwVKiGE_L6fWb","originalWidth":1600,"originalHeight":1414,"isFeatured":true}},{"name":"8e9e","type":3,"text":"Title Launch Observability at Netflix Scale","markups":[],"alignment":1},{"name":"af30","type":13,"text":"Part 2: Navigating Ambiguity","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Part 2: Navigating Ambiguity"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"eed662bb9c33","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"8e9e","type":3,"text":"Title Launch Observability at Netflix Scale","markups":[]},{"name":"af30","type":13,"text":"Part 2: Navigating Ambiguity","markups":[]},{"name":"77d1","type":1,"text":"By: Varun Khaitan","markups":[{"type":3,"start":4,"end":17,"href":"https://www.linkedin.com/in/varun-khaitan/","title":"","rel":"noopener","anchorType":0},{"type":1,"start":0,"end":3}]},{"name":"72bf","type":1,"text":"With special thanks to my stunning colleagues: Mallika Rao, Esmir Mesic, Hugo Marques","markups":[{"type":3,"start":47,"end":58,"href":"https://www.linkedin.com/in/mallikarao/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":60,"end":71,"href":"https://www.linkedin.com/in/esmir-mesic/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":73,"end":85,"href":"https://www.linkedin.com/in/hugodesmarques/","title":"","rel":"noopener","anchorType":0}]},{"name":"90f9","type":1,"text":"Building on the foundation laid in Part 1, where we explored the “what” behind the challenges of title launch observability at Netflix, this post shifts focus to the “how.” How do we ensure every…","markups":[{"type":3,"start":35,"end":41,"href":"https://medium.com/netflix-techblog/title-launch-observability-at-netflix-scale-c88c586629eb","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"a4fb","startIndex":0}]},"isFullContent":false,"subtitle":"Part 2: Navigating Ambiguity"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"e67f0aa82183":{"id":"e67f0aa82183","versionId":"22b26cc5deb1","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Part 3: A Survey of Analytics Engineering Work at Netflix","detectedLanguage":"en","latestVersion":"22b26cc5deb1","latestPublishedVersion":"22b26cc5deb1","hasUnpublishedEdits":false,"latestRev":362,"createdAt":1736189860480,"updatedAt":1739277401020,"acceptedAt":0,"firstPublishedAt":1736191640316,"latestPublishedAt":1736191640316,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"This article is the last in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*ar0t2-zF5YVuXnUe","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":845,"strategy":"resample","height":0,"width":0},"wordCount":1874,"imageCount":8,"readingTime":8.20503144654088,"subtitle":"This article is the last in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":39,"isBookmarked":false,"tags":[{"slug":"analytics","name":"Analytics","postCount":52832,"metadata":{"postCount":52832,"coverImage":{"id":"1*dGqXUUrarBrjyb99l4WWng.png","originalWidth":1280,"originalHeight":720}},"type":"Tag"},{"slug":"analytics-engineering","name":"Analytics Engineering","postCount":778,"metadata":{"postCount":778,"coverImage":{"id":"0*wjrSlvi0uk7Pq-H_","originalWidth":1600,"originalHeight":1026,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://research.netflix.com/research-area/analytics","alts":[],"httpStatus":200},{"url":"https://research.netflix.com/publication/part-2-a-survey-of-analytics-engineering-work-at-netflix","alts":[],"httpStatus":200},{"url":"https://research.netflix.com/publication/part-1-a-survey-of-analytics-engineering-work-at-netflix","alts":[],"httpStatus":200},{"url":"https://www.christenseninstitute.org/theory/jobs-to-be-done/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/benn-stancil/","alts":[],"httpStatus":999},{"url":"https://explore.jobs.netflix.net/careers","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/shansusielu/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rinachang","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/devincarullo/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1736191641270},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":116,"sectionCount":2,"readingList":0,"topics":[{"topicId":"55321ac40456","slug":"design","createdAt":1536181929758,"deletedAt":0,"image":{"id":"1*1aLu20aptPeUTDg_E8KtmA@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Design","description":"Below the surface.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Design Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"part-3-a-survey-of-analytics-engineering-work-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"part-3-a-survey-of-analytics-engineering-work-at-netflix-e67f0aa82183","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*ar0t2-zF5YVuXnUe","originalWidth":1600,"originalHeight":845,"isFeatured":true}},{"name":"092e","type":3,"text":"Part 3: A Survey of Analytics Engineering Work at Netflix","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"This article is the last in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"95cf145e89db","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"092e","type":3,"text":"Part 3: A Survey of Analytics Engineering Work at Netflix","markups":[]},{"name":"ca1c","type":1,"text":"This article is the last in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of our annual internal Analytics Engineering conference. Need to catch up? Check out Part 1, which detailed how we’re empowering Netflix to efficiently produce and effectively deliver high…","markups":[{"type":3,"start":220,"end":226,"href":"https://research.netflix.com/publication/part-1-a-survey-of-analytics-engineering-work-at-netflix","title":"","rel":"","anchorType":0},{"type":3,"start":385,"end":391,"href":"https://research.netflix.com/publication/part-2-a-survey-of-analytics-engineering-work-at-netflix","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":529}]}],"sections":[{"name":"df98","startIndex":0}]},"isFullContent":false,"subtitle":"This article is the last in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"4f1f53b4ab0f":{"id":"4f1f53b4ab0f","versionId":"56f69abd7fab","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Part 2: A Survey of Analytics Engineering Work at Netflix","detectedLanguage":"en","latestVersion":"56f69abd7fab","latestPublishedVersion":"56f69abd7fab","hasUnpublishedEdits":false,"latestRev":134,"createdAt":1735851554256,"updatedAt":1739310352973,"acceptedAt":0,"firstPublishedAt":1735851978980,"latestPublishedAt":1736191722595,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"This article is the second in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*j2wKL4S3ywEs9mpf","filter":"","backgroundSize":"","originalWidth":1414,"originalHeight":1170,"strategy":"resample","height":0,"width":0},"wordCount":2021,"imageCount":5,"readingTime":8.459748427672956,"subtitle":"This article is the second in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":56,"isBookmarked":false,"tags":[{"slug":"analytics-engineering","name":"Analytics Engineering","postCount":778,"metadata":{"postCount":778,"coverImage":{"id":"0*wjrSlvi0uk7Pq-H_","originalWidth":1600,"originalHeight":1026,"isFeatured":true}},"type":"Tag"},{"slug":"analytics","name":"Analytics","postCount":52832,"metadata":{"postCount":52832,"coverImage":{"id":"1*dGqXUUrarBrjyb99l4WWng.png","originalWidth":1280,"originalHeight":720}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":12,"links":{"entries":[{"url":"https://research.netflix.com/publication/part-1-a-survey-of-analytics-engineering-work-at-netflix","alts":[],"httpStatus":200},{"url":"https://research.netflix.com/research-area/analytics","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/2106.15346","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/alexandra-diamond-b04902219/","alts":[],"httpStatus":999},{"url":"https://explore.jobs.netflix.net/careers","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/a-survey-of-causal-inference-applications-at-netflix-b62d25175e6f","alts":[{"type":3,"url":"medium://p/b62d25175e6f"},{"type":2,"url":"medium://p/b62d25175e6f"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/yimeng-tang-49566b207/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/clairewilleck/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/round-2-a-survey-of-causal-inference-applications-at-netflix-fd78328ee0bb","alts":[{"type":2,"url":"medium://p/fd78328ee0bb"},{"type":3,"url":"medium://p/fd78328ee0bb"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/sagarpalao/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/tanguycornuau/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1736191723613},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":176,"sectionCount":2,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"part-2-a-survey-of-analytics-engineering-work-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"part-2-a-survey-of-analytics-engineering-work-at-netflix-4f1f53b4ab0f","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*j2wKL4S3ywEs9mpf","originalWidth":1414,"originalHeight":1170,"isFeatured":true}},{"name":"35e9","type":3,"text":"Part 2: A Survey of Analytics Engineering Work at Netflix","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"This article is the second in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"894b4546deb4","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"35e9","type":3,"text":"Part 2: A Survey of Analytics Engineering Work at Netflix","markups":[]},{"name":"c218","type":1,"text":"This article is the second in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of our annual internal Analytics Engineering conference. Need to catch up? Check out Part 1. In this article, we highlight a few exciting analytic business applications, and in…","markups":[{"type":3,"start":222,"end":228,"href":"https://research.netflix.com/publication/part-1-a-survey-of-analytics-engineering-work-at-netflix","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":377}]}],"sections":[{"name":"c142","startIndex":0}]},"isFullContent":false,"subtitle":"This article is the second in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d2fb8e9ba1c6":{"id":"d2fb8e9ba1c6","versionId":"b3a122e374e2","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Introducing Configurable Metaflow","detectedLanguage":"en","latestVersion":"b3a122e374e2","latestPublishedVersion":"b3a122e374e2","hasUnpublishedEdits":false,"latestRev":596,"createdAt":1734658475032,"updatedAt":1734987239749,"acceptedAt":0,"firstPublishedAt":1734678637289,"latestPublishedAt":1734678637289,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"David J. Berg*, David Casler^, Romain Cledat*, Qian Huang*, Rui Lin*, Nissan Pow*, Nurcan Sonmez*, Shashank Srikanth*, Chaoying Wang*…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*XrOVl25ZLx8_4nHLRxNgDg.png","filter":"","backgroundSize":"","originalWidth":1143,"originalHeight":674,"strategy":"resample","height":0,"width":0},"wordCount":3083,"imageCount":3,"readingTime":12.183962264150944,"subtitle":"David J. Berg*, David Casler^, Romain Cledat*, Qian Huang*, Rui Lin*, Nissan Pow*, Nurcan Sonmez*, Shashank Srikanth*, Chaoying Wang*…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":40,"isBookmarked":false,"tags":[{"slug":"metaflow","name":"Metaflow","postCount":70,"metadata":{"postCount":70,"coverImage":{"id":"0*Di8sWy8yxiGGv4GS","originalWidth":1500,"originalHeight":780,"isFeatured":true}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"mlops","name":"Mlops","postCount":8679,"metadata":{"postCount":8679,"coverImage":{"id":"1*ub_u88a4MB5Uj-9Eb60VNA.jpeg","originalWidth":1616,"originalHeight":966,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Inversion_of_control","alts":[],"httpStatus":200},{"url":"https://omegaconf.readthedocs.io/en/2.3_branch/","alts":[],"httpStatus":200},{"url":"https://hydra.cc/","alts":[],"httpStatus":200},{"url":"https://hydra.cc","alts":[],"httpStatus":200},{"url":"https://qconsf.com/presentation/nov2024/supporting-diverse-ml-systems-netflix","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org","alts":[],"httpStatus":200},{"url":"https://outerbounds.com/blog/metaflow-dynamic-cards","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/introduction","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/scheduling-metaflow-flows/scheduling-with-argo-workflows","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/scheduling-metaflow-flows/scheduling-with-argo-workflows#time-based-triggering","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/custom-parsers#including-default-configs-in-flows","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/custom-parsers#generating-configs-programmatically","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/api/step-decorators/resources","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/basic-configuration#mixing-configs-and-parameters","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/scaling/tagging","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/managing-flows/runner","alts":[],"httpStatus":200},{"url":"https://outerbounds.co","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/coordinating-larger-metaflow-projects","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/event-triggering/external-events#passing-parameters-in-events","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/api/step-decorators/conda","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/scaling/data#data-in-local-files","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/scaling/remote-tasks/requesting-resources","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/managing-flows/deployer","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/scaling/dependencies","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/event-triggering","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/client","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/basics#artifacts","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/parsing-configs","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/scheduling-metaflow-flows/scheduling-with-aws-step-functions#deploy-time-parameters","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/basics#advanced-parameters","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/parsing-configs#validating-configs-with-pydantic","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/parsing-configs#advanced-configurations-with-omegaconf","alts":[],"httpStatus":200},{"url":"https://docs.pydantic.dev/latest/","alts":[],"httpStatus":200},{"url":"https://toml.io/en/","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/metaflow/configuring-flows/config-driven-experimentation","alts":[],"httpStatus":200},{"url":"https://docs.outerbounds.com/grid-search-with-metaflow/","alts":[],"httpStatus":200},{"url":"http://chat.metaflow.org","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/david-j-berg/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/nurcansonmez/","alts":[],"httpStatus":999},{"url":"https://github.com/outerbounds/config-examples","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/maestro-netflixs-workflow-orchestrator-ee13a06f9c78","alts":[{"type":3,"url":"medium://p/ee13a06f9c78"},{"type":2,"url":"medium://p/ee13a06f9c78"}],"httpStatus":200},{"url":"https://netflixtechblog.com/supporting-content-decision-makers-with-machine-learning-995b7b76006f","alts":[{"type":3,"url":"medium://p/995b7b76006f"},{"type":2,"url":"medium://p/995b7b76006f"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/zitingyu/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/open-sourcing-metaflow-a-human-centric-framework-for-data-science-fa72e04a5d9","alts":[{"type":2,"url":"medium://p/fa72e04a5d9"},{"type":3,"url":"medium://p/fa72e04a5d9"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/david-casler-05a5278/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/qian-huang-emma/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/nissanpow/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rui-lin-483a83111/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/romain-cledat-4a211a5/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/shashanksrikanth/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/chaoying-wang/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/reginalw/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/supporting-diverse-ml-systems-at-netflix-2d2e6b6d205d","alts":[{"type":3,"url":"medium://p/2d2e6b6d205d"},{"type":2,"url":"medium://p/2d2e6b6d205d"}],"httpStatus":200}],"version":"0.3","generatedAt":1734678638479},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":239,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"introducing-configurable-metaflow","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"introducing-configurable-metaflow-d2fb8e9ba1c6","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*XrOVl25ZLx8_4nHLRxNgDg.png","originalWidth":1143,"originalHeight":674,"isFeatured":true}},{"name":"3dfb","type":3,"text":"Introducing Configurable Metaflow","markups":[],"alignment":1},{"name":"156c","type":1,"text":"David J. Berg*, David Casler^, Romain Cledat*, Qian Huang*, Rui Lin*, Nissan Pow*, Nurcan Sonmez*…","markups":[{"type":3,"start":0,"end":13,"href":"https://www.linkedin.com/in/david-j-berg/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":16,"end":28,"href":"https://www.linkedin.com/in/david-casler-05a5278/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":31,"end":44,"href":"https://www.linkedin.com/in/romain-cledat-4a211a5/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":47,"end":57,"href":"https://www.linkedin.com/in/qian-huang-emma/","title":"","rel":"","anchorType":0},{"type":3,"start":60,"end":67,"href":"https://www.linkedin.com/in/rui-lin-483a83111/","title":"","rel":"","anchorType":0},{"type":3,"start":70,"end":80,"href":"https://www.linkedin.com/in/nissanpow/","title":"","rel":"","anchorType":0},{"type":3,"start":83,"end":96,"href":"https://www.linkedin.com/in/nurcansonmez/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":13},{"type":2,"start":14,"end":28},{"type":2,"start":31,"end":44},{"type":2,"start":45,"end":57},{"type":2,"start":58,"end":67},{"type":2,"start":68,"end":80},{"type":2,"start":81,"end":96}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"David J. Berg*, David Casler^, Romain Cledat*, Qian Huang*, Rui Lin*, Nissan Pow*, Nurcan Sonmez*, Shashank Srikanth*, Chaoying Wang*…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"53ce096df487","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"3dfb","type":3,"text":"Introducing Configurable Metaflow","markups":[]},{"name":"156c","type":1,"text":"David J. Berg*, David Casler^, Romain Cledat*, Qian Huang*, Rui Lin*, Nissan Pow*, Nurcan Sonmez*, Shashank Srikanth*, Chaoying Wang*, Regina Wang*, Darin Yu*\n*: Model Development Team, Machine Learning Platform\n^: Content Demand Modeling Team","markups":[{"type":3,"start":0,"end":13,"href":"https://www.linkedin.com/in/david-j-berg/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":16,"end":28,"href":"https://www.linkedin.com/in/david-casler-05a5278/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":31,"end":44,"href":"https://www.linkedin.com/in/romain-cledat-4a211a5/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":47,"end":57,"href":"https://www.linkedin.com/in/qian-huang-emma/","title":"","rel":"","anchorType":0},{"type":3,"start":60,"end":67,"href":"https://www.linkedin.com/in/rui-lin-483a83111/","title":"","rel":"","anchorType":0},{"type":3,"start":70,"end":80,"href":"https://www.linkedin.com/in/nissanpow/","title":"","rel":"","anchorType":0},{"type":3,"start":83,"end":96,"href":"https://www.linkedin.com/in/nurcansonmez/","title":"","rel":"","anchorType":0},{"type":3,"start":99,"end":116,"href":"https://www.linkedin.com/in/shashanksrikanth/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":119,"end":132,"href":"https://www.linkedin.com/in/chaoying-wang/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":135,"end":146,"href":"https://www.linkedin.com/in/reginalw/","title":"","rel":"","anchorType":0},{"type":3,"start":149,"end":157,"href":"https://www.linkedin.com/in/zitingyu/","title":"","rel":"noopener","anchorType":0},{"type":2,"start":0,"end":13},{"type":2,"start":14,"end":28},{"type":2,"start":31,"end":44},{"type":2,"start":45,"end":57},{"type":2,"start":58,"end":67},{"type":2,"start":68,"end":80},{"type":2,"start":81,"end":96},{"type":2,"start":97,"end":116},{"type":2,"start":117,"end":132},{"type":2,"start":133,"end":146},{"type":2,"start":147,"end":157}]},{"name":"8a5d","type":1,"text":"A month ago at QConSF, we showcased how Netflix utilizes Metaflow to power a diverse…","markups":[{"type":3,"start":40,"end":111,"href":"https://qconsf.com/presentation/nov2024/supporting-diverse-ml-systems-netflix","title":"","rel":"","anchorType":0},{"type":3,"start":183,"end":187,"href":"https://netflixtechblog.com/supporting-diverse-ml-systems-at-netflix-2d2e6b6d205d","title":"","rel":"","anchorType":0},{"type":3,"start":366,"end":402,"href":"https://netflixtechblog.com/supporting-content-decision-makers-with-machine-learning-995b7b76006f","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"f7e4","startIndex":0}]},"isFullContent":false,"subtitle":"David J. Berg*, David Casler^, Romain Cledat*, Qian Huang*, Rui Lin*, Nissan Pow*, Nurcan Sonmez*, Shashank Srikanth*, Chaoying Wang*…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"d761cfd551ee":{"id":"d761cfd551ee","versionId":"fed4166fb91a","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Part 1: A Survey of Analytics Engineering Work at Netflix","detectedLanguage":"en","latestVersion":"fed4166fb91a","latestPublishedVersion":"fed4166fb91a","hasUnpublishedEdits":false,"latestRev":219,"createdAt":1734476952963,"updatedAt":1734481351508,"acceptedAt":0,"firstPublishedAt":1734477323415,"latestPublishedAt":1734477323415,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"This article is the first in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*gUgNHuu6yqKdfbgg","filter":"","backgroundSize":"","originalWidth":625,"originalHeight":423,"strategy":"resample","height":0,"width":0},"wordCount":1568,"imageCount":2,"readingTime":6.300314465408805,"subtitle":"This article is the first in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":71,"isBookmarked":false,"tags":[{"slug":"analytics-engineering","name":"Analytics Engineering","postCount":778,"metadata":{"postCount":778,"coverImage":{"id":"0*wjrSlvi0uk7Pq-H_","originalWidth":1600,"originalHeight":1026,"isFeatured":true}},"type":"Tag"},{"slug":"analytics","name":"Analytics","postCount":52832,"metadata":{"postCount":52832,"coverImage":{"id":"1*dGqXUUrarBrjyb99l4WWng.png","originalWidth":1280,"originalHeight":720}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":1,"links":{"entries":[{"url":"https://research.netflix.com/research-area/analytics","alts":[],"httpStatus":200},{"url":"https://medium.com/airbnb-engineering/how-airbnb-achieved-metric-consistency-at-scale-f23cc53dea70","alts":[{"type":3,"url":"medium://p/f23cc53dea70"},{"type":2,"url":"medium://p/f23cc53dea70"}],"httpStatus":200},{"url":"https://benn.substack.com/p/bi-by-another-name","alts":[],"httpStatus":200},{"url":"https://datajunction.io/","alts":[],"httpStatus":200},{"url":"https://datajunction.io/docs/0.1.0/data-modeling/dimension-links/","alts":[],"httpStatus":200},{"url":"https://github.com/DataJunction/dj","alts":[],"httpStatus":200},{"url":"https://explore.jobs.netflix.net/careers","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/cloud-efficiency-at-netflix-f2a142955f83","alts":[{"type":3,"url":"medium://p/f2a142955f83"},{"type":2,"url":"medium://p/f2a142955f83"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/jhan-104105/?utm_source=share&utm_campaign=share_via&utm_content=profile","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/shyiann/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/pallavi-phadnis-75280b20/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/apurvakansara/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/anhqle/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1734477324574},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":132,"sectionCount":2,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"part-1-a-survey-of-analytics-engineering-work-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"part-1-a-survey-of-analytics-engineering-work-at-netflix-d761cfd551ee","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*gUgNHuu6yqKdfbgg","originalWidth":625,"originalHeight":423,"isFeatured":true}},{"name":"93bb","type":3,"text":"Part 1: A Survey of Analytics Engineering Work at Netflix","markups":[{"type":1,"start":0,"end":57}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"This article is the first in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"ff92c2fee60d","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"93bb","type":3,"text":"Part 1: A Survey of Analytics Engineering Work at Netflix","markups":[{"type":1,"start":0,"end":57}]},{"name":"9766","type":1,"text":"This article is the first in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of our annual internal Analytics Engineering conference. We kick off with a few topics focused on how we’re empowering Netflix to efficiently produce and effectively deliver high quality…","markups":[{"type":2,"start":0,"end":499}]}],"sections":[{"name":"8e4b","startIndex":0}]},"isFullContent":false,"subtitle":"This article is the first in a multi-part series sharing a breadth of Analytics Engineering work at Netflix, recently presented as part of…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"f2a142955f83":{"id":"f2a142955f83","versionId":"b508ae1e0475","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Cloud Efficiency at Netflix","detectedLanguage":"en","latestVersion":"b508ae1e0475","latestPublishedVersion":"b508ae1e0475","hasUnpublishedEdits":false,"latestRev":143,"createdAt":1734466001550,"updatedAt":1738363841064,"acceptedAt":0,"firstPublishedAt":1734473804235,"latestPublishedAt":1734474545500,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By J Han, Pallavi Phadnis","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*vDQJiJUttlRSpVBo","filter":"","backgroundSize":"","originalWidth":1542,"originalHeight":1306,"strategy":"resample","height":0,"width":0},"wordCount":1045,"imageCount":3,"readingTime":4.493396226415094,"subtitle":"By J Han, Pallavi Phadnis","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":87,"isBookmarked":false,"tags":[{"slug":"cloud-efficiency","name":"Cloud Efficiency","postCount":8,"metadata":{"postCount":8,"coverImage":{"id":"0*vDQJiJUttlRSpVBo","originalWidth":1542,"originalHeight":1306,"isFeatured":true}},"type":"Tag"},{"slug":"data-modeling","name":"Data Modeling","postCount":2428,"metadata":{"postCount":2428,"coverImage":{"id":"1*KusxRDl2umnnY74pG8_9xA.jpeg","originalWidth":1312,"originalHeight":736}},"type":"Tag"},{"slug":"cost","name":"Cost","postCount":4321,"metadata":{"postCount":4321,"coverImage":{"id":"1*s4d93gUqZWls-iTMy970xg@2x.jpeg","originalWidth":770,"originalHeight":431,"backgroundSize":"","filter":"","isFeatured":false,"externalSrc":"","focusPercentX":-1,"focusPercentY":-1,"alt":"","repairedAt":0,"unsplashPhotoId":""}},"type":"Tag"},{"slug":"infrastructure","name":"Infrastructure","postCount":15288,"metadata":{"postCount":15288,"coverImage":{"id":"0*Wvd8CWscjFTOWfzD","originalWidth":5156,"originalHeight":3437,"isFeatured":true,"unsplashPhotoId":"qpAOxji4dAo"}},"type":"Tag"},{"slug":"engineering","name":"Engineering","postCount":58707,"metadata":{"postCount":58707,"coverImage":{"id":"1*2hE-C_hBjlXF-HA1sULvww.jpeg","originalWidth":1600,"originalHeight":1000,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":14,"links":{"entries":[{"url":"https://spark.apache.org/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/jhan-104105?utm_source=share&utm_campaign=share_via&utm_content=profile","alts":[],"httpStatus":999},{"url":"https://jobs.netflix.com/culture","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/pallavi-phadnis-75280b20/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1734474546444},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":274,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"cloud-efficiency-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"cloud-efficiency-at-netflix-f2a142955f83","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*vDQJiJUttlRSpVBo","originalWidth":1542,"originalHeight":1306,"isFeatured":true}},{"name":"8d9c","type":3,"text":"Cloud Efficiency at Netflix","markups":[],"alignment":1},{"name":"c997","type":1,"text":"By J Han, Pallavi Phadnis","markups":[{"type":3,"start":3,"end":8,"href":"https://www.linkedin.com/in/jhan-104105?utm_source=share&utm_campaign=share_via&utm_content=profile","title":"","rel":"noopener","anchorType":0},{"type":3,"start":10,"end":25,"href":"https://www.linkedin.com/in/pallavi-phadnis-75280b20/","title":"","rel":"noopener","anchorType":0},{"type":1,"start":0,"end":2}],"alignment":1},{"name":"16b4","type":3,"text":"Context","markups":[{"type":1,"start":0,"end":7}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By J Han, Pallavi Phadnis"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"57bc423390e1","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"8d9c","type":3,"text":"Cloud Efficiency at Netflix","markups":[]},{"name":"c997","type":1,"text":"By J Han, Pallavi Phadnis","markups":[{"type":3,"start":3,"end":8,"href":"https://www.linkedin.com/in/jhan-104105?utm_source=share&utm_campaign=share_via&utm_content=profile","title":"","rel":"noopener","anchorType":0},{"type":3,"start":10,"end":25,"href":"https://www.linkedin.com/in/pallavi-phadnis-75280b20/","title":"","rel":"noopener","anchorType":0},{"type":1,"start":0,"end":2}]},{"name":"16b4","type":3,"text":"Context","markups":[{"type":1,"start":0,"end":7}]},{"name":"f453","type":1,"text":"At Netflix, we use Amazon Web Services (AWS) for our cloud infrastructure needs, such as compute, storage, and networking to build and run the streaming platform that we love. Our ecosystem enables engineering teams to run applications and services at scale, utilizing a mix of…","markups":[]}],"sections":[{"name":"f2b3","startIndex":0}]},"isFullContent":false,"subtitle":"By J Han, Pallavi Phadnis"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"c88c586629eb":{"id":"c88c586629eb","versionId":"02640c2e5d53","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Title Launch Observability at Netflix Scale","detectedLanguage":"en","latestVersion":"02640c2e5d53","latestPublishedVersion":"02640c2e5d53","hasUnpublishedEdits":false,"latestRev":146,"createdAt":1734471567299,"updatedAt":1739400367955,"acceptedAt":0,"firstPublishedAt":1734472477441,"latestPublishedAt":1736213273219,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Part 1: Understanding The Challenges","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*5F9ATQbyOp99jMwJ","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":880,"strategy":"resample","height":0,"width":0},"wordCount":1129,"imageCount":2,"readingTime":4.6437106918239,"subtitle":"Part 1: Understanding The Challenges","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":103,"isBookmarked":false,"tags":[{"slug":"observability","name":"Observability","postCount":4958,"metadata":{"postCount":4958,"coverImage":{"id":"1*ZOBAjq5TTNmPCdHcSYserg.png","originalWidth":686,"originalHeight":260,"isFeatured":true}},"type":"Tag"},{"slug":"netflix","name":"Netflix","postCount":54697,"metadata":{"postCount":54697,"coverImage":{"id":"1*gPChNfwSZTgdEWoRJktpuw.jpeg","originalWidth":853,"originalHeight":450}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":5,"links":{"entries":[{"url":"https://www.linkedin.com/in/esmir-mesic/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/mallikarao/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/hugodesmarques/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/varun-khaitan/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/title-launch-observability-at-netflix-scale-19ea916be1ed","alts":[{"type":3,"url":"medium://p/19ea916be1ed"},{"type":2,"url":"medium://p/19ea916be1ed"}],"httpStatus":200}],"version":"0.3","generatedAt":1736213273875},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":247,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"title-launch-observability-at-netflix-scale","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"title-launch-observability-at-netflix-scale-c88c586629eb","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*5F9ATQbyOp99jMwJ","originalWidth":1600,"originalHeight":880,"isFeatured":true}},{"name":"66e9","type":3,"text":"Title Launch Observability at Netflix Scale","markups":[],"alignment":1},{"name":"088d","type":13,"text":"Part 1: Understanding The Challenges","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Part 1: Understanding The Challenges"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"28f0166f5649","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"66e9","type":3,"text":"Title Launch Observability at Netflix Scale","markups":[]},{"name":"088d","type":13,"text":"Part 1: Understanding The Challenges","markups":[]},{"name":"51e3","type":1,"text":"By: Varun Khaitan","markups":[{"type":3,"start":4,"end":17,"href":"https://www.linkedin.com/in/varun-khaitan/","title":"","rel":"","anchorType":0},{"type":1,"start":0,"end":3}]},{"name":"72bf","type":1,"text":"With special thanks to my stunning colleagues: Mallika Rao, Esmir Mesic, Hugo Marques","markups":[{"type":3,"start":47,"end":58,"href":"https://www.linkedin.com/in/mallikarao/","title":"","rel":"","anchorType":0},{"type":3,"start":60,"end":71,"href":"https://www.linkedin.com/in/esmir-mesic/","title":"","rel":"","anchorType":0},{"type":3,"start":73,"end":85,"href":"https://www.linkedin.com/in/hugodesmarques/","title":"","rel":"","anchorType":0}]},{"name":"c3f4","type":3,"text":"Introduction","markups":[]},{"name":"0a98","type":1,"text":"At Netflix, we manage over a thousand global content launches each month, backed by billions of dollars in annual investment. Ensuring the success and discoverability of each title across our platform is a top…","markups":[]}],"sections":[{"name":"3ae9","startIndex":0}]},"isFullContent":false,"subtitle":"Part 1: Understanding The Challenges"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"8d0c45eb66b2":{"id":"8d0c45eb66b2","versionId":"eb9f98b1fc7c","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Netflix’s Distributed Counter Abstraction","detectedLanguage":"en","latestVersion":"eb9f98b1fc7c","latestPublishedVersion":"eb9f98b1fc7c","hasUnpublishedEdits":false,"latestRev":1028,"createdAt":1731439042958,"updatedAt":1739399938438,"acceptedAt":0,"firstPublishedAt":1731443699050,"latestPublishedAt":1732226412371,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By: Rajiv Shringi, Oleksii Tkachuk, Kartik Sathyanarayanan","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*Yusg6kC9Jj9ayjbi","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":648,"strategy":"resample","height":0,"width":0},"wordCount":4462,"imageCount":22,"readingTime":18.687735849056605,"subtitle":"By: Rajiv Shringi, Oleksii Tkachuk, Kartik Sathyanarayanan","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":186,"isBookmarked":false,"tags":[{"slug":"distributed-systems","name":"Distributed Systems","postCount":9840,"metadata":{"postCount":9840,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"},{"slug":"counter","name":"Counter","postCount":300,"metadata":{"postCount":300,"coverImage":{"id":"0*Yusg6kC9Jj9ayjbi","originalWidth":1600,"originalHeight":648,"isFeatured":true}},"type":"Tag"},{"slug":"scalability","name":"Scalability","postCount":58644,"metadata":{"postCount":58644,"coverImage":{"id":"1*3Rt3z8YELFFuTQ1XN6SLPQ.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"system-design-interview","name":"System Design Interview","postCount":7206,"metadata":{"postCount":7206,"coverImage":{"id":"1*SfU9pItbHbERJKRuyZEPzw.png","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"software-architecture","name":"Software Architecture","postCount":19582,"metadata":{"postCount":19582,"coverImage":{"id":"1*uO72RkOaFGdcK9HKvuZHlw.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":27,"links":{"entries":[{"url":"https://kafka.apache.org/documentation/streams/","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org/","alts":[],"httpStatus":200},{"url":"https://cassandra.apache.org/_/index.html","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Count%E2%80%93min_sketch","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/HyperLogLog","alts":[],"httpStatus":200},{"url":"https://flink.apache.org/","alts":[],"httpStatus":200},{"url":"https://netflix.github.io/EVCache/features/#consistency","alts":[],"httpStatus":200},{"url":"https://thelastpickle.com/blog/2019/01/11/wide-partitions-cassandra-3-11.html","alts":[],"httpStatus":200},{"url":"https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/concurrent/atomic/AtomicInteger.html","alts":[],"httpStatus":200},{"url":"https://xxhash.com/","alts":[],"httpStatus":200},{"url":"https://redis.io/","alts":[],"httpStatus":200},{"url":"https://memcached.org/","alts":[],"httpStatus":200},{"url":"https://docs.datastax.com/en/cql-oss/3.x/cql/cql_reference/cqlInsert.html#cqlInsert__timestamp-value","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/joseph-lynch-9976a431/","alts":[],"httpStatus":999},{"url":"https://www.youtube.com/watch?v=Lf6B1PxIvAs","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30","alts":[{"type":3,"url":"medium://p/1ea8a0a11b30"},{"type":2,"url":"medium://p/1ea8a0a11b30"}],"httpStatus":200},{"url":"https://netflixtechblog.com/announcing-evcache-distributed-in-memory-datastore-for-cloud-c26a698c27f7","alts":[{"type":2,"url":"medium://p/c26a698c27f7"},{"type":3,"url":"medium://p/c26a698c27f7"}],"httpStatus":200},{"url":"https://netflixtechblog.com/introducing-netflix-timeseries-data-abstraction-layer-31552f6326f8","alts":[{"type":3,"url":"medium://p/31552f6326f8"},{"type":2,"url":"medium://p/31552f6326f8"}],"httpStatus":200},{"url":"https://redis.io/docs/latest/develop/data-types/probabilistic/count-min-sketch/","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.medium.com/data-gateway-a-platform-for-growing-and-protecting-the-data-tier-f1ed8db8f5c6","alts":[{"type":3,"url":"medium://p/f1ed8db8f5c6"},{"type":2,"url":"medium://p/f1ed8db8f5c6"}],"httpStatus":200},{"url":"https://netflixtechblog.com/its-all-a-bout-testing-the-netflix-experimentation-platform-4e1ca458c15","alts":[{"type":3,"url":"medium://p/4e1ca458c15"},{"type":2,"url":"medium://p/4e1ca458c15"}],"httpStatus":200},{"url":"https://redis.io/docs/latest/develop/data-types/probabilistic/hyperloglogs/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/tomdevoe/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rajiv-shringi/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/varun-khaitan/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/mengqingwang/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/oleksii-tkachuk-98b47375/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/kartik894/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/kaidanfullerton/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/vinaychella/","alts":[],"httpStatus":999},{"url":"https://research.google/pubs/the-tail-at-scale/","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1732226413617},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":770,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"netflixs-distributed-counter-abstraction","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"netflixs-distributed-counter-abstraction-8d0c45eb66b2","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*Yusg6kC9Jj9ayjbi","originalWidth":1600,"originalHeight":648,"isFeatured":true}},{"name":"e500","type":3,"text":"Netflix’s Distributed Counter Abstraction","markups":[],"alignment":1},{"name":"f7ea","type":1,"text":"By: Rajiv Shringi, Oleksii Tkachuk, Kartik Sathyanarayanan","markups":[{"type":3,"start":4,"end":17,"href":"https://www.linkedin.com/in/rajiv-shringi/","title":"","rel":"","anchorType":0},{"type":3,"start":19,"end":34,"href":"https://www.linkedin.com/in/oleksii-tkachuk-98b47375/","title":"","rel":"","anchorType":0},{"type":3,"start":36,"end":58,"href":"https://www.linkedin.com/in/kartik894/","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By: Rajiv Shringi, Oleksii Tkachuk, Kartik Sathyanarayanan"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"d0612a8e5105","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"e500","type":3,"text":"Netflix’s Distributed Counter Abstraction","markups":[]},{"name":"f7ea","type":1,"text":"By: Rajiv Shringi, Oleksii Tkachuk, Kartik Sathyanarayanan","markups":[{"type":3,"start":4,"end":17,"href":"https://www.linkedin.com/in/rajiv-shringi/","title":"","rel":"","anchorType":0},{"type":3,"start":19,"end":34,"href":"https://www.linkedin.com/in/oleksii-tkachuk-98b47375/","title":"","rel":"","anchorType":0},{"type":3,"start":36,"end":58,"href":"https://www.linkedin.com/in/kartik894/","title":"","rel":"","anchorType":0}]},{"name":"0da9","type":3,"text":"Introduction","markups":[]},{"name":"41fb","type":1,"text":"In our previous blog post, we introduced Netflix’s TimeSeries Abstraction, a distributed service designed to store and query large volumes of temporal event data with low millisecond latencies. Today, we’re excited to present the Distributed Counter Abstraction. This counting service, built on top…","markups":[{"type":3,"start":41,"end":73,"href":"https://netflixtechblog.com/introducing-netflix-timeseries-data-abstraction-layer-31552f6326f8","title":"","rel":"","anchorType":0},{"type":3,"start":460,"end":486,"href":"https://netflixtechblog.medium.com/data-gateway-a-platform-for-growing-and-protecting-the-data-tier-f1ed8db8f5c6","title":"","rel":"","anchorType":0},{"type":1,"start":230,"end":261}]}],"sections":[{"name":"2cb1","startIndex":0}]},"isFullContent":false,"subtitle":"By: Rajiv Shringi, Oleksii Tkachuk, Kartik Sathyanarayanan"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"faa017b4653d":{"id":"faa017b4653d","versionId":"b7690fbac3c9","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Investigation of a Workbench UI Latency Issue","detectedLanguage":"en","latestVersion":"b7690fbac3c9","latestPublishedVersion":"b7690fbac3c9","hasUnpublishedEdits":false,"latestRev":449,"createdAt":1728924496932,"updatedAt":1732594081710,"acceptedAt":0,"firstPublishedAt":1728936151194,"latestPublishedAt":1728936151194,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By: Hechao Li and Marcelo Mayworm","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*ltV3CYtNjLCzolXD","filter":"","backgroundSize":"","originalWidth":1592,"originalHeight":572,"strategy":"resample","height":0,"width":0},"wordCount":2812,"imageCount":9,"readingTime":11.81132075471698,"subtitle":"By: Hechao Li and Marcelo Mayworm","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":93,"isBookmarked":false,"tags":[{"slug":"jupyter-notebook","name":"Jupyter Notebook","postCount":5325,"metadata":{"postCount":5325,"coverImage":{"id":"0*ZVBPD7rXF37y0Pqk","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"performance","name":"Performance","postCount":30664,"metadata":{"postCount":30664,"coverImage":{"id":"1*5fUjgQy2V26QX23Ir1GiDA.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"cpu","name":"Cpu","postCount":2291,"metadata":{"postCount":2291,"coverImage":{"id":"1*a34GOFlpRiZ9gRh2KIR9UQ.png","originalWidth":2240,"originalHeight":1260,"isFeatured":true}},"type":"Tag"},{"slug":"debugging","name":"Debugging","postCount":7646,"metadata":{"postCount":7646,"coverImage":{"id":"1*7DsQClQ1Ya7M5Svsl6aSKw.png","originalWidth":1920,"originalHeight":1078,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://pypi.org/project/nest-asyncio/","alts":[],"httpStatus":200},{"url":"https://docs.python.org/3.13/library/os.html#os.process_cpu_count","alts":[],"httpStatus":200},{"url":"https://www.kernel.org/doc/Documentation/ABI/testing/procfs-smaps_rollup","alts":[],"httpStatus":200},{"url":"https://pystan.readthedocs.io/en/latest/faq.html#how-can-i-use-pystan-with-jupyter-notebook-or-jupyterlab","alts":[],"httpStatus":200},{"url":"https://jupyterlab.readthedocs.io/en/latest/","alts":[],"httpStatus":200},{"url":"https://github.com/erdewit/ib_insync/commit/ef5ea29e44e0c40bbadbc16c2281b3ac58aa4a40","alts":[],"httpStatus":200},{"url":"https://github.com/jupyter-server/jupyter-resource-usage/blob/6f15ef91d5c7e50853516b90b5e53b3913d2ed34/jupyter_resource_usage/api.py#L28","alts":[],"httpStatus":200},{"url":"https://github.com/giampaolo/psutil/blob/c034e6692cf736b5e87d14418a8153bb03f6cf42/psutil/_pslinux.py#L1978","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/matheusdeoleao/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/amer-ather-9071181/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/titus-the-netflix-container-management-platform-is-now-open-source-f868c9fb5436","alts":[{"type":3,"url":"medium://p/f868c9fb5436"},{"type":2,"url":"medium://p/f868c9fb5436"}],"httpStatus":200},{"url":"https://github.com/torvalds/linux/commit/493b0e9d945fa9dfe96be93ae41b4ca4b6fdb317#diff-cb79e2d6ea6f9627ff68d1342a219f800e04ff6c6fa7b90c7e66bb391b2dd3ee","alts":[],"httpStatus":200},{"url":"https://explore.jobs.netflix.net/careers?query=Data%20Platform&pid=790298020581&domain=netflix.com&sort_by=relevance","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/lucaepozzi/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/hechaoli/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/mayworm/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/yeji682/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/itaydafna","alts":[],"httpStatus":999},{"url":"https://elixir.bootlin.com/linux/v6.5.13/source/fs/proc/task_mmu.c#L916","alts":[],"httpStatus":200},{"url":"https://elixir.bootlin.com/linux/v6.5.13/source/fs/proc/task_mmu.c#L1025","alts":[],"httpStatus":200},{"url":"https://elixir.bootlin.com/linux/v6.5.13/source/fs/seq_file.c#L582","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1728936155592},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":231,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"investigation-of-a-workbench-ui-latency-issue","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"investigation-of-a-workbench-ui-latency-issue-faa017b4653d","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*ltV3CYtNjLCzolXD","originalWidth":1592,"originalHeight":572,"isFeatured":true}},{"name":"2dba","type":3,"text":"Investigation of a Workbench UI Latency Issue","markups":[],"alignment":1},{"name":"c66a","type":1,"text":"By: Hechao Li and Marcelo Mayworm","markups":[{"type":3,"start":4,"end":13,"href":"https://www.linkedin.com/in/hechaoli/","title":"","rel":"","anchorType":0},{"type":3,"start":18,"end":33,"href":"https://www.linkedin.com/in/mayworm/","title":"","rel":"","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By: Hechao Li and Marcelo Mayworm"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"bab9b3ae86f1","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"2dba","type":3,"text":"Investigation of a Workbench UI Latency Issue","markups":[]},{"name":"c66a","type":1,"text":"By: Hechao Li and Marcelo Mayworm","markups":[{"type":3,"start":4,"end":13,"href":"https://www.linkedin.com/in/hechaoli/","title":"","rel":"","anchorType":0},{"type":3,"start":18,"end":33,"href":"https://www.linkedin.com/in/mayworm/","title":"","rel":"","anchorType":0}]},{"name":"2b76","type":1,"text":"With special thanks to our stunning colleagues Amer Ather, Itay Dafna, Luca Pozzi, Matheus Leão, and Ye Ji.","markups":[{"type":3,"start":47,"end":57,"href":"https://www.linkedin.com/in/amer-ather-9071181/","title":"","rel":"","anchorType":0},{"type":3,"start":59,"end":69,"href":"https://www.linkedin.com/in/itaydafna","title":"","rel":"","anchorType":0},{"type":3,"start":71,"end":81,"href":"https://www.linkedin.com/in/lucaepozzi/","title":"","rel":"","anchorType":0},{"type":3,"start":83,"end":95,"href":"https://www.linkedin.com/in/matheusdeoleao/","title":"","rel":"","anchorType":0},{"type":3,"start":101,"end":106,"href":"https://www.linkedin.com/in/yeji682/","title":"","rel":"","anchorType":0}]},{"name":"c1c3","type":3,"text":"Overview","markups":[]},{"name":"072a","type":1,"text":"At Netflix, the Analytics and Developer Experience organization, part of the Data Platform, offers a product called Workbench. Workbench is a remote development workspace based on…","markups":[{"type":3,"start":179,"end":185,"href":"https://netflixtechblog.com/titus-the-netflix-container-management-platform-is-now-open-source-f868c9fb5436","title":"","rel":"","anchorType":0},{"type":3,"start":322,"end":333,"href":"https://jupyterlab.readthedocs.io/en/latest/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"21b2","startIndex":0}]},"isFullContent":false,"subtitle":"By: Hechao Li and Marcelo Mayworm"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"31552f6326f8":{"id":"31552f6326f8","versionId":"e1880672b08b","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Introducing Netflix’s TimeSeries Data Abstraction Layer","detectedLanguage":"en","latestVersion":"e1880672b08b","latestPublishedVersion":"e1880672b08b","hasUnpublishedEdits":false,"latestRev":1979,"createdAt":1728402902424,"updatedAt":1739776963588,"acceptedAt":0,"firstPublishedAt":1728406913282,"latestPublishedAt":1728790918855,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Rajiv Shringi, Vinay Chella, Kaidan Fullerton, Oleksii Tkachuk, Joey Lynch","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*jl30Jl559Fnd29in","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":780,"strategy":"resample","height":0,"width":0},"wordCount":4392,"imageCount":12,"readingTime":17.92358490566038,"subtitle":"By Rajiv Shringi, Vinay Chella, Kaidan Fullerton, Oleksii Tkachuk, Joey Lynch","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":244,"isBookmarked":false,"tags":[],"socialRecommendsCount":0,"responsesCreatedCount":16,"links":{"entries":[{"url":"https://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html","alts":[],"httpStatus":200},{"url":"https://thelastpickle.com/blog/2019/01/11/wide-partitions-cassandra-3-11.html","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/vinaychella/","alts":[],"httpStatus":999},{"url":"https://www.youtube.com/watch?v=2aBVKXi8LKk","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/tomdevoe/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/kaidanfullerton/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rajiv-shringi","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/clohfink/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30","alts":[{"type":3,"url":"medium://p/1ea8a0a11b30"},{"type":2,"url":"medium://p/1ea8a0a11b30"}],"httpStatus":200},{"url":"https://netflixtechblog.medium.com/data-gateway-a-platform-for-growing-and-protecting-the-data-tier-f1ed8db8f5c6","alts":[{"type":3,"url":"medium://p/f1ed8db8f5c6"},{"type":2,"url":"medium://p/f1ed8db8f5c6"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/joseph-lynch-9976a431/","alts":[],"httpStatus":999},{"url":"https://research.google/pubs/the-tail-at-scale/","alts":[],"httpStatus":200},{"url":"https://www.elastic.co/elasticsearch","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/ebs/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/mengqingwang/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/introducing-atlas-netflixs-primary-telemetry-platform-bd31f4d8ed9a","alts":[{"type":3,"url":"medium://p/bd31f4d8ed9a"},{"type":2,"url":"medium://p/bd31f4d8ed9a"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/jordan-west-8aa1731a3/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/oleksii-tkachuk-98b47375/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/matt-lehman-39549719b/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/kartik894/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/cheng-wang-10323417/","alts":[],"httpStatus":999},{"url":"https://github.com/Netflix-Skunkworks/service-capacity-modeling/tree/main/service_capacity_modeling","alts":[],"httpStatus":200},{"url":"https://cassandra.apache.org/_/index.html","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1728790919029},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1080,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"introducing-netflix-timeseries-data-abstraction-layer","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"introducing-netflix-timeseries-data-abstraction-layer-31552f6326f8","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*jl30Jl559Fnd29in","originalWidth":1600,"originalHeight":780,"isFeatured":true}},{"name":"875f","type":3,"text":"Introducing Netflix’s TimeSeries Data Abstraction Layer","markups":[{"type":1,"start":0,"end":55}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Rajiv Shringi, Vinay Chella, Kaidan Fullerton, Oleksii Tkachuk, Joey Lynch"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"94da468d764c","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"875f","type":3,"text":"Introducing Netflix’s TimeSeries Data Abstraction Layer","markups":[{"type":1,"start":0,"end":55}]},{"name":"b30e","type":1,"text":"By Rajiv Shringi, Vinay Chella, Kaidan Fullerton, Oleksii Tkachuk, Joey Lynch","markups":[{"type":3,"start":3,"end":16,"href":"https://www.linkedin.com/in/rajiv-shringi","title":"","rel":"noopener","anchorType":0},{"type":3,"start":18,"end":30,"href":"https://www.linkedin.com/in/vinaychella/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":32,"end":48,"href":"https://www.linkedin.com/in/kaidanfullerton/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":50,"end":65,"href":"https://www.linkedin.com/in/oleksii-tkachuk-98b47375/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":67,"end":77,"href":"https://www.linkedin.com/in/joseph-lynch-9976a431/","title":"","rel":"noopener","anchorType":0}]},{"name":"b44d","type":3,"text":"Introduction","markups":[{"type":1,"start":0,"end":12}]},{"name":"2bf4","type":1,"text":"As Netflix continues to expand and diversify into various sectors like Video on Demand and Gaming, the ability to ingest and store vast amounts of temporal data — often reaching petabytes — with millisecond access latency has become increasingly…","markups":[{"type":3,"start":295,"end":327,"href":"https://netflixtechblog.com/introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30","title":"","rel":"","anchorType":0},{"type":3,"start":336,"end":357,"href":"https://netflixtechblog.medium.com/data-gateway-a-platform-for-growing-and-protecting-the-data-tier-f1ed8db8f5c6","title":"","rel":"","anchorType":0},{"type":1,"start":71,"end":86},{"type":1,"start":91,"end":97},{"type":1,"start":295,"end":327},{"type":1,"start":336,"end":357}]}],"sections":[{"name":"e0cd","startIndex":0}]},"isFullContent":false,"subtitle":"By Rajiv Shringi, Vinay Chella, Kaidan Fullerton, Oleksii Tkachuk, Joey Lynch"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"1ea8a0a11b30":{"id":"1ea8a0a11b30","versionId":"504de60657da","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Introducing Netflix’s Key-Value Data Abstraction Layer","detectedLanguage":"en","latestVersion":"504de60657da","latestPublishedVersion":"504de60657da","hasUnpublishedEdits":false,"latestRev":2813,"createdAt":1717201990568,"updatedAt":1736213873134,"acceptedAt":0,"firstPublishedAt":1726699607757,"latestPublishedAt":1726710723581,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Vidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chella","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*9Ny8Uc-diSDnVGnk","filter":"","backgroundSize":"","originalWidth":755,"originalHeight":476,"strategy":"resample","height":0,"width":0},"wordCount":3114,"imageCount":6,"readingTime":12.700943396226414,"subtitle":"Vidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chella","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":280,"isBookmarked":false,"tags":[],"socialRecommendsCount":0,"responsesCreatedCount":11,"links":{"entries":[{"url":"https://jolynch.github.io/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/clohfink/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/vidhya-arvind-11908723","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/vinaychella","alts":[],"httpStatus":429},{"url":"https://cassandra.apache.org/","alts":[],"httpStatus":200},{"url":"https://jepsen.io/consistency","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/john-l-693b7915a/","alts":[],"httpStatus":429},{"url":"https://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html","alts":[],"httpStatus":200},{"url":"https://rocksdb.org/","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/dynamodb/","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.medium.com/data-gateway-a-platform-for-growing-and-protecting-the-data-tier-f1ed8db8f5c6","alts":[{"type":3,"url":"medium://p/f1ed8db8f5c6"},{"type":2,"url":"medium://p/f1ed8db8f5c6"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/matt-lehman-39549719b/","alts":[],"httpStatus":429},{"url":"https://github.com/Netflix/EVCache","alts":[],"httpStatus":200},{"url":"https://www.infoq.com/articles/netflix-highly-reliable-stateful-systems/","alts":[],"httpStatus":200},{"url":"https://docs.google.com/document/d/1XLBjQ9scZCy-xIo51Rs--CSdFV781fnp5hXdXTBAk1k/edit","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/william-schor/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jordan-west-8aa1731a3/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/bulldozer-batch-data-moving-from-data-warehouse-to-online-key-value-stores-41bac13863f8","alts":[{"type":3,"url":"medium://p/41bac13863f8"},{"type":2,"url":"medium://p/41bac13863f8"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/cthumuluru/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rummadis/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/mengqingwang/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/georgecampbell/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/akhaku/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rajiv-shringi/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/pushy-to-the-limit-evolving-netflixs-websocket-proxy-for-the-future-b468bc0ff658","alts":[{"type":3,"url":"medium://p/b468bc0ff658"},{"type":2,"url":"medium://p/b468bc0ff658"}],"httpStatus":200}],"version":"0.3","generatedAt":1726710724797},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1078,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"introducing-netflixs-key-value-data-abstraction-layer","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"introducing-netflixs-key-value-data-abstraction-layer-1ea8a0a11b30","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*9Ny8Uc-diSDnVGnk","originalWidth":755,"originalHeight":476,"isFeatured":true}},{"name":"68a2","type":3,"text":"Introducing Netflix’s Key-Value Data Abstraction Layer","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Vidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chella"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"67bc9403dbf3","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"68a2","type":3,"text":"Introducing Netflix’s Key-Value Data Abstraction Layer","markups":[]},{"name":"3a78","type":1,"text":"Vidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chella","markups":[{"type":3,"start":0,"end":13,"href":"https://www.linkedin.com/in/vidhya-arvind-11908723","title":"","rel":"noopener ugc nofollow","anchorType":0},{"type":3,"start":15,"end":37,"href":"https://www.linkedin.com/in/rummadis/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":39,"end":49,"href":"https://jolynch.github.io/","title":"","rel":"noopener ugc nofollow noopener noopener","anchorType":0},{"type":3,"start":51,"end":63,"href":"https://www.linkedin.com/in/vinaychella","title":"","rel":"noopener ugc nofollow","anchorType":0}]},{"name":"8c5d","type":3,"text":"Introduction","markups":[]},{"name":"8fe5","type":1,"text":"At Netflix our ability to deliver seamless, high-quality, streaming experiences to millions of users hinges on robust, global backend infrastructure. Central to this infrastructure is our use of multiple online distributed databases such as Apache Cassandra, a NoSQL database known for its…","markups":[{"type":3,"start":241,"end":257,"href":"https://cassandra.apache.org/","title":"","rel":"","anchorType":0},{"type":2,"start":119,"end":125}]}],"sections":[{"name":"b7c2","startIndex":0}]},"isFullContent":false,"subtitle":"Vidhya Arvind, Rajasekhar Ummadisetty, Joey Lynch, Vinay Chella"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"b468bc0ff658":{"id":"b468bc0ff658","versionId":"328da3c61915","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Pushy to the Limit: Evolving Netflix’s WebSocket proxy for the future","detectedLanguage":"en","latestVersion":"328da3c61915","latestPublishedVersion":"328da3c61915","hasUnpublishedEdits":false,"latestRev":322,"createdAt":1725993018388,"updatedAt":1734679020873,"acceptedAt":0,"firstPublishedAt":1725995687154,"latestPublishedAt":1725995687154,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Pushy is Netflix’s WebSocket server that maintains persistent WebSocket connections with devices running the Netflix application. This…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*WQ1W30ChfWrEmmR5","filter":"","backgroundSize":"","originalWidth":1048,"originalHeight":519,"strategy":"resample","height":0,"width":0},"wordCount":3854,"imageCount":11,"readingTime":15.843396226415095,"subtitle":"Pushy is Netflix’s WebSocket server that maintains persistent WebSocket connections with devices running the Netflix application. This…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":181,"isBookmarked":false,"tags":[],"socialRecommendsCount":0,"responsesCreatedCount":16,"links":{"entries":[{"url":"https://www.linkedin.com/in/baskar-o-n-46477b3/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/justin-guerra-3282262b/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/kyagna/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/jeremy-kelly-526a30180/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/alexander-ellis/","alts":[],"httpStatus":429},{"url":"https://help.netflix.com/en/node/111997","alts":[],"httpStatus":200},{"url":"https://help.netflix.com/en/node/132821","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/open-sourcing-zuul-2-82ea476cb2b3","alts":[{"type":3,"url":"medium://p/82ea476cb2b3"},{"type":2,"url":"medium://p/82ea476cb2b3"}],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=6w6E_B55p0E","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/zuul/blob/99ef8841c8b7b82536d5fb193fd751c675c9ad0d/zuul-core/src/main/java/com/netflix/zuul/netty/server/push/PushClientProtocolHandler.java","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/introducing-dynomite-making-non-distributed-databases-distributed-c7bce3d89404","alts":[{"type":3,"url":"medium://p/c7bce3d89404"},{"type":2,"url":"medium://p/c7bce3d89404"}],"httpStatus":200}],"version":"0.3","generatedAt":1725995688073},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":597,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"pushy-to-the-limit-evolving-netflixs-websocket-proxy-for-the-future","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"pushy-to-the-limit-evolving-netflixs-websocket-proxy-for-the-future-b468bc0ff658","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*WQ1W30ChfWrEmmR5","originalWidth":1048,"originalHeight":519,"isFeatured":true,"alt":"Sample system diagram for an Alexa voice command, with the voice command entering Netflix’s cloud infrastructure via apiproxy and existing via a server-side message through Pushy to the device."}},{"name":"1f0f","type":3,"text":"Pushy to the Limit: Evolving Netflix’s WebSocket proxy for the future","markups":[{"type":1,"start":0,"end":69}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Pushy is Netflix’s WebSocket server that maintains persistent WebSocket connections with devices running the Netflix application. This…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"8292a45d3dc3","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"1f0f","type":3,"text":"Pushy to the Limit: Evolving Netflix’s WebSocket proxy for the future","markups":[{"type":1,"start":0,"end":69}]},{"name":"7b9e","type":1,"text":"By Karthik Yagna, Baskar Odayarkoil, and Alex Ellis","markups":[{"type":3,"start":3,"end":16,"href":"https://www.linkedin.com/in/kyagna/","title":"","rel":"","anchorType":0},{"type":3,"start":18,"end":35,"href":"https://www.linkedin.com/in/baskar-o-n-46477b3/","title":"","rel":"","anchorType":0},{"type":3,"start":41,"end":51,"href":"https://www.linkedin.com/in/alexander-ellis/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":51}]},{"name":"e6ee","type":1,"text":"Pushy is Netflix’s WebSocket server that maintains persistent WebSocket connections with devices running the Netflix application. This allows data to be sent to the device from backend services on demand, without the need for continually polling requests from the device. Over the…","markups":[]}],"sections":[{"name":"5732","startIndex":0}]},"isFullContent":false,"subtitle":"Pushy is Netflix’s WebSocket server that maintains persistent WebSocket connections with devices running the Netflix application. This…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"64b1f4b3bbdd":{"id":"64b1f4b3bbdd","versionId":"bac6774fd354","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Noisy Neighbor Detection with eBPF","detectedLanguage":"en","latestVersion":"bac6774fd354","latestPublishedVersion":"bac6774fd354","hasUnpublishedEdits":false,"latestRev":966,"createdAt":1725487381265,"updatedAt":1731789282957,"acceptedAt":0,"firstPublishedAt":1725991068745,"latestPublishedAt":1726012705805,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*6bapyclfXZPsUIaXFM-xaQ.png","filter":"","backgroundSize":"","originalWidth":1778,"originalHeight":1000,"strategy":"resample","height":0,"width":0,"focusPercentX":48,"focusPercentY":50},"wordCount":1829,"imageCount":4,"readingTime":7.60188679245283,"subtitle":"By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":171,"isBookmarked":false,"tags":[{"slug":"ebpf","name":"Ebpf","postCount":386,"metadata":{"postCount":386,"coverImage":{"id":"1*6bapyclfXZPsUIaXFM-xaQ.png","originalWidth":1778,"originalHeight":1000,"isFeatured":true,"focusPercentX":48,"focusPercentY":50}},"type":"Tag"},{"slug":"linux","name":"Linux","postCount":54654,"metadata":{"postCount":54654,"coverImage":{"id":"1*uO72RkOaFGdcK9HKvuZHlw.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"containers","name":"Containers","postCount":16400,"metadata":{"postCount":16400,"coverImage":{"id":"0*pOBPbYRlJsT6_XwR","originalWidth":5616,"originalHeight":3744,"isFeatured":true,"unsplashPhotoId":"lCPhGxs7pww"}},"type":"Tag"},{"slug":"performance","name":"Performance","postCount":30664,"metadata":{"postCount":30664,"coverImage":{"id":"1*5fUjgQy2V26QX23Ir1GiDA.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"observability","name":"Observability","postCount":4958,"metadata":{"postCount":4958,"coverImage":{"id":"1*ZOBAjq5TTNmPCdHcSYserg.png","originalWidth":686,"originalHeight":260,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":7,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Run_queue","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/sebastien-dabdoub-2a5a0958/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/jason-koch-5692172/","alts":[],"httpStatus":429},{"url":"https://docs.kernel.org/bpf/kfuncs.html","alts":[],"httpStatus":200},{"url":"https://nakryiko.com/posts/bpf-ringbuf/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/josefernandezmn/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/artemtkachuk/","alts":[],"httpStatus":429},{"url":"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ce09cbdd988887662546a1175bcfdfc6c8fdd150","alts":[],"httpStatus":200},{"url":"https://github.com/sched-ext/scx","alts":[],"httpStatus":200},{"url":"https://www.brendangregg.com/perf.html","alts":[],"httpStatus":200},{"url":"https://nakryiko.com/posts/bpf-core-reference-guide/#btf-enabled-bpf-program-types-with-direct-memory-reads","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/announcing-bpftop-streamlining-ebpf-performance-optimization-6a727c1ae2e5","alts":[{"type":3,"url":"medium://p/6a727c1ae2e5"},{"type":2,"url":"medium://p/6a727c1ae2e5"}],"httpStatus":200},{"url":"https://netflixtechblog.com/titus-the-netflix-container-management-platform-is-now-open-source-f868c9fb5436","alts":[{"type":3,"url":"medium://p/f868c9fb5436"},{"type":2,"url":"medium://p/f868c9fb5436"}],"httpStatus":200},{"url":"https://ebpf.io/","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/introducing-atlas-netflixs-primary-telemetry-platform-bd31f4d8ed9a","alts":[{"type":3,"url":"medium://p/bd31f4d8ed9a"},{"type":2,"url":"medium://p/bd31f4d8ed9a"}],"httpStatus":200},{"url":"https://elixir.bootlin.com/linux/v6.6.16/source/include/linux/sched.h#L1225","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1726012706914},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":494,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"noisy-neighbor-detection-with-ebpf","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"noisy-neighbor-detection-with-ebpf-64b1f4b3bbdd","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*6bapyclfXZPsUIaXFM-xaQ.png","originalWidth":1778,"originalHeight":1000,"isFeatured":true,"focusPercentX":48,"focusPercentY":50}},{"name":"4e5e","type":3,"text":"Noisy Neighbor Detection with eBPF","markups":[],"alignment":1},{"name":"3108","type":1,"text":"By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk","markups":[{"type":3,"start":3,"end":17,"href":"https://www.linkedin.com/in/josefernandezmn/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":19,"end":36,"href":"https://www.linkedin.com/in/sebastien-dabdoub-2a5a0958/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":38,"end":48,"href":"https://www.linkedin.com/in/jason-koch-5692172/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":50,"end":63,"href":"https://www.linkedin.com/in/artemtkachuk/","title":"","rel":"noopener","anchorType":0},{"type":2,"start":0,"end":63}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"35cbc6411867","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4e5e","type":3,"text":"Noisy Neighbor Detection with eBPF","markups":[]},{"name":"3108","type":1,"text":"By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk","markups":[{"type":3,"start":3,"end":17,"href":"https://www.linkedin.com/in/josefernandezmn/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":19,"end":36,"href":"https://www.linkedin.com/in/sebastien-dabdoub-2a5a0958/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":38,"end":48,"href":"https://www.linkedin.com/in/jason-koch-5692172/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":50,"end":63,"href":"https://www.linkedin.com/in/artemtkachuk/","title":"","rel":"noopener","anchorType":0},{"type":2,"start":0,"end":63}]},{"name":"8709","type":1,"text":"The Compute and Performance Engineering teams at Netflix regularly investigate performance issues in our multi-tenant environment. The first step is determining whether the problem originates from the application or the underlying infrastructure. One issue that often complicates this process is the…","markups":[{"type":3,"start":329,"end":334,"href":"https://netflixtechblog.com/titus-the-netflix-container-management-platform-is-now-open-source-f868c9fb5436","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"508f","startIndex":0}]},"isFullContent":false,"subtitle":"By Jose Fernandez, Sebastien Dabdoub, Jason Koch, Artem Tkachuk"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"ac15cada49ef":{"id":"ac15cada49ef","versionId":"d04126c37302","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Recommending for Long-Term Member Satisfaction at Netflix","detectedLanguage":"en","latestVersion":"d04126c37302","latestPublishedVersion":"d04126c37302","hasUnpublishedEdits":false,"latestRev":352,"createdAt":1724869180752,"updatedAt":1731850249676,"acceptedAt":0,"firstPublishedAt":1724893153618,"latestPublishedAt":1724893153618,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Jiangwei Pan, Gary Tang, Henry Wang, and Justin Basilico","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Y8QDcyallv_mh7ylPzXqkA.png","filter":"","backgroundSize":"","originalWidth":2620,"originalHeight":1453,"strategy":"resample","height":0,"width":0},"wordCount":1644,"imageCount":6,"readingTime":7.153773584905661,"subtitle":"By Jiangwei Pan, Gary Tang, Henry Wang, and Justin Basilico","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":142,"isBookmarked":false,"tags":[{"slug":"recommendation-system","name":"Recommendation System","postCount":4080,"metadata":{"postCount":4080,"coverImage":{"id":"1*g7BFA8HjSD8khYxmQRK1Mg.png","originalWidth":776,"originalHeight":442,"isFeatured":true}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"contextual-bandit","name":"Contextual Bandit","postCount":36,"metadata":{"postCount":36,"coverImage":{"id":"1*Y8QDcyallv_mh7ylPzXqkA.png","originalWidth":2620,"originalHeight":1453,"isFeatured":true}},"type":"Tag"},{"slug":"reward-engineering","name":"Reward Engineering","postCount":1,"metadata":{"postCount":1,"coverImage":{"id":"1*Y8QDcyallv_mh7ylPzXqkA.png","originalWidth":2620,"originalHeight":1453,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":9,"links":{"entries":[{"url":"https://www.linkedin.com/in/henry-kang-wang-06701716/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jiangwei-pan-66a62a13/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/thegarytang/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jbasilico/","alts":[],"httpStatus":999},{"url":"https://ojs.aaai.org/aimagazine/index.php/aimagazine/article/view/18140","alts":[],"httpStatus":200},{"url":"https://web.archive.org/web/20231011142826id_/https://dl.acm.org/doi/pdf/10.1145/3604915.3608873","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1724893159328},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":505,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"recommending-for-long-term-member-satisfaction-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"recommending-for-long-term-member-satisfaction-at-netflix-ac15cada49ef","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Y8QDcyallv_mh7ylPzXqkA.png","originalWidth":2620,"originalHeight":1453,"isFeatured":true}},{"name":"cadc","type":3,"text":"Recommending for Long-Term Member Satisfaction at Netflix","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Jiangwei Pan, Gary Tang, Henry Wang, and Justin Basilico"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"e516f3c75f4f","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"cadc","type":3,"text":"Recommending for Long-Term Member Satisfaction at Netflix","markups":[]},{"name":"989b","type":1,"text":"By Jiangwei Pan, Gary Tang, Henry Wang, and Justin Basilico","markups":[{"type":3,"start":3,"end":15,"href":"https://www.linkedin.com/in/jiangwei-pan-66a62a13/","title":"","rel":"","anchorType":0},{"type":3,"start":17,"end":26,"href":"https://www.linkedin.com/in/thegarytang/","title":"","rel":"","anchorType":0},{"type":3,"start":28,"end":38,"href":"https://www.linkedin.com/in/henry-kang-wang-06701716/","title":"","rel":"","anchorType":0},{"type":3,"start":44,"end":59,"href":"https://www.linkedin.com/in/jbasilico/","title":"","rel":"","anchorType":0}]},{"name":"1b73","type":3,"text":"Introduction","markups":[]},{"name":"9df8","type":1,"text":"Our mission at Netflix is to entertain the world. Our personalization algorithms play a crucial role in delivering on this mission for all members by recommending the right shows, movies, and games at the right time. This goal extends beyond…","markups":[]}],"sections":[{"name":"9c9f","startIndex":0}]},"isFullContent":false,"subtitle":"By Jiangwei Pan, Gary Tang, Henry Wang, and Justin Basilico"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"64c786c2a3ac":{"id":"64c786c2a3ac","versionId":"289e6c632b50","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Improve Your Next Experiment by Learning Better Proxy Metrics From Past Experiments","detectedLanguage":"en","latestVersion":"289e6c632b50","latestPublishedVersion":"289e6c632b50","hasUnpublishedEdits":false,"latestRev":152,"createdAt":1724620312762,"updatedAt":1731867896677,"acceptedAt":0,"firstPublishedAt":1724687042705,"latestPublishedAt":1724687042705,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Aurélien Bibaut, Winston Chou, Simon Ejdemyr, and Nathan Kallus","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*m_lKjIe460GlWr5JseoQzw.jpeg","filter":"","backgroundSize":"","originalWidth":2258,"originalHeight":869,"strategy":"resample","height":0,"width":0},"wordCount":1246,"imageCount":2,"readingTime":5.085220125786164,"subtitle":"By Aurélien Bibaut, Winston Chou, Simon Ejdemyr, and Nathan Kallus","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":66,"isBookmarked":false,"tags":[{"slug":"experimentation","name":"Experimentation","postCount":1809,"metadata":{"postCount":1809,"coverImage":{"id":"0*yGhzYRdO-sDNmtWU.jpg","originalWidth":736,"originalHeight":1104,"isFeatured":true}},"type":"Tag"},{"slug":"a-b-testing","name":"A B Testing","postCount":3147,"metadata":{"postCount":3147,"coverImage":{"id":"0*7v5DsIQ5BQbXr2H2","originalWidth":4288,"originalHeight":2848,"isFeatured":true,"unsplashPhotoId":"cHhbULJbPwM"}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":372673,"metadata":{"postCount":372673,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"statistics","name":"Statistics","postCount":34709,"metadata":{"postCount":34709,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://www.linkedin.com/in/winston-chou-6491b0168/","alts":[],"httpStatus":429},{"url":"https://arxiv.org/pdf/2402.17637","alts":[],"httpStatus":200},{"url":"https://kdd2024.kdd.org/","alts":[],"httpStatus":200},{"url":"https://jobs.netflix.com/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/kallus/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/experimentation-is-a-major-focus-of-data-science-across-netflix-f67923f8e985","alts":[{"type":2,"url":"medium://p/f67923f8e985"},{"type":3,"url":"medium://p/f67923f8e985"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/aurelien-bibaut/","alts":[],"httpStatus":999},{"url":"https://jobs.netflix.com/culture","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/simon-ejdemyr-22b920123/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1724687043436},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":321,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"improve-your-next-experiment-by-learning-better-proxy-metrics-from-past-experiments","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"improve-your-next-experiment-by-learning-better-proxy-metrics-from-past-experiments-64c786c2a3ac","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*m_lKjIe460GlWr5JseoQzw.jpeg","originalWidth":2258,"originalHeight":869,"isFeatured":true}},{"name":"4f46","type":3,"text":"Improve Your Next Experiment by Learning Better Proxy Metrics From Past Experiments","markups":[{"type":1,"start":0,"end":83}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Aurélien Bibaut, Winston Chou, Simon Ejdemyr, and Nathan Kallus"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"f0446b5c2771","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4f46","type":3,"text":"Improve Your Next Experiment by Learning Better Proxy Metrics From Past Experiments","markups":[{"type":1,"start":0,"end":83}]},{"name":"5ed4","type":1,"text":"By Aurélien Bibaut, Winston Chou, Simon Ejdemyr, and Nathan Kallus","markups":[{"type":3,"start":3,"end":18,"href":"https://www.linkedin.com/in/aurelien-bibaut/","title":"","rel":"","anchorType":0},{"type":3,"start":20,"end":32,"href":"https://www.linkedin.com/in/winston-chou-6491b0168/","title":"","rel":"","anchorType":0},{"type":3,"start":34,"end":47,"href":"https://www.linkedin.com/in/simon-ejdemyr-22b920123/","title":"","rel":"","anchorType":0},{"type":3,"start":53,"end":66,"href":"https://www.linkedin.com/in/kallus/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":66}]},{"name":"b1b1","type":4,"text":"","markups":[],"layout":3,"metadata":{"id":"1*m_lKjIe460GlWr5JseoQzw.jpeg","originalWidth":2258,"originalHeight":869,"isFeatured":true}},{"name":"a71b","type":1,"text":"We are excited to share our work on how to learn good proxy metrics from historical experiments at KDD 2024. This work addresses a fundamental question for technology companies and academic researchers alike: how do we establish that a treatment…","markups":[{"type":3,"start":24,"end":32,"href":"https://arxiv.org/pdf/2402.17637","title":"","rel":"","anchorType":0},{"type":3,"start":99,"end":107,"href":"https://kdd2024.kdd.org/","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"d8a2","startIndex":0}]},"isFullContent":false,"subtitle":"By Aurélien Bibaut, Winston Chou, Simon Ejdemyr, and Nathan Kallus"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"3052540e231d":{"id":"3052540e231d","versionId":"4d0449e9782c","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Java 21 Virtual Threads - Dude, Where’s My Lock?","detectedLanguage":"en","latestVersion":"4d0449e9782c","latestPublishedVersion":"4d0449e9782c","hasUnpublishedEdits":false,"latestRev":397,"createdAt":1721927251725,"updatedAt":1732035225340,"acceptedAt":0,"firstPublishedAt":1722276210765,"latestPublishedAt":1722276210765,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Getting real with virtual threads","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*6AOJeVdbhmStpb9CRj30nw.png","filter":"","backgroundSize":"","originalWidth":1229,"originalHeight":558,"strategy":"resample","height":0,"width":0},"wordCount":2333,"imageCount":2,"readingTime":9.187106918238992,"subtitle":"Getting real with virtual threads","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":684,"isBookmarked":false,"tags":[{"slug":"java","name":"Java","postCount":94583,"metadata":{"postCount":94583,"coverImage":{"id":"1*54DRkD5FtNRnWBeziu0K8Q.jpeg","originalWidth":886,"originalHeight":590,"isFeatured":true}},"type":"Tag"},{"slug":"performance","name":"Performance","postCount":30664,"metadata":{"postCount":30664,"coverImage":{"id":"1*5fUjgQy2V26QX23Ir1GiDA.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"distributed-systems","name":"Distributed Systems","postCount":9840,"metadata":{"postCount":9840,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"},{"slug":"troubleshooting","name":"Troubleshooting","postCount":4206,"metadata":{"postCount":4206,"coverImage":{"id":"1*6Qbae5bDJorad4j7yJiNAQ.png","originalWidth":1228,"originalHeight":796,"isFeatured":true}},"type":"Tag"},{"slug":"concurrency","name":"Concurrency","postCount":5208,"metadata":{"postCount":5208,"coverImage":{"id":"1*X8xGMbjA7hbQI8frqlmpSg.png","originalWidth":730,"originalHeight":333,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":34,"links":{"entries":[{"url":"https://en.wikipedia.org/wiki/Deadlock","alts":[],"httpStatus":200},{"url":"https://gist.github.com/DanielThomas/0b099c5f208d7deed8a83bf5fc03179e","alts":[],"httpStatus":200},{"url":"https://eclipse.dev/mat/","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/ReentrantLock.java#L178","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/lang/VirtualThread.java#L1102-L1134","alts":[],"httpStatus":200},{"url":"https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html","alts":[],"httpStatus":200},{"url":"https://docs.oracle.com/en/java/javase/21/core/virtual-threads.html#GUID-04C03FFC-066D-4857-85B9-E5A27A875AF9","alts":[],"httpStatus":200},{"url":"https://github.com/apache/tomcat/blob/10.1.24/java/org/apache/tomcat/util/threads/VirtualThreadExecutor.java","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/vfilanovsky/","alts":[],"httpStatus":999},{"url":"https://github.com/openzipkin/zipkin-reporter-java/blob/3.4.0/core/src/main/java/zipkin2/reporter/internal/CountBoundedQueue.java#L76","alts":[],"httpStatus":200},{"url":"https://github.com/apache/tomcat/blob/10.1.24/java/org/apache/tomcat/util/net/AbstractEndpoint.java#L1070-L1071","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/bending-pause-times-to-your-will-with-generational-zgc-256629c9386b","alts":[{"type":3,"url":"medium://p/256629c9386b"},{"type":2,"url":"medium://p/256629c9386b"}],"httpStatus":200},{"url":"https://github.com/openzipkin/brave/blob/6.0.3/brave/src/main/java/brave/RealSpan.java#L134","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/danny-thomas-a623413/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/mike-huang-a552781/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/martinchalupa/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/improved-alerting-with-atlas-streaming-eval-e691c60dc61e","alts":[{"type":3,"url":"medium://p/e691c60dc61e"},{"type":2,"url":"medium://p/e691c60dc61e"}],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java#L1761","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java#L1058-L1064","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java#L641-L647","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java#L670-L765","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java#L754","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java","alts":[],"httpStatus":200},{"url":"https://github.com/openjdk/jdk21u/blob/jdk-21.0.3-ga/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedSynchronizer.java#L716-L723","alts":[],"httpStatus":200},{"url":"https://openjdk.org/jeps/444","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1722276220281},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":2474,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"java-21-virtual-threads-dude-wheres-my-lock","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"java-21-virtual-threads-dude-wheres-my-lock-3052540e231d","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*6AOJeVdbhmStpb9CRj30nw.png","originalWidth":1229,"originalHeight":558,"isFeatured":true}},{"name":"ffe5","type":3,"text":"Java 21 Virtual Threads - Dude, Where’s My Lock?","markups":[],"alignment":1},{"name":"6f13","type":13,"text":"Getting real with virtual threads","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Getting real with virtual threads"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"99a2d65f9eaa","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"ffe5","type":3,"text":"Java 21 Virtual Threads - Dude, Where’s My Lock?","markups":[]},{"name":"6f13","type":13,"text":"Getting real with virtual threads","markups":[]},{"name":"5713","type":1,"text":"By Vadim Filanovsky, Mike Huang, Danny Thomas and Martin Chalupa","markups":[{"type":3,"start":3,"end":19,"href":"https://www.linkedin.com/in/vfilanovsky/","title":"","rel":"","anchorType":0},{"type":3,"start":21,"end":31,"href":"https://www.linkedin.com/in/mike-huang-a552781/","title":"","rel":"","anchorType":0},{"type":3,"start":33,"end":45,"href":"https://www.linkedin.com/in/danny-thomas-a623413/","title":"","rel":"","anchorType":0},{"type":3,"start":50,"end":64,"href":"https://www.linkedin.com/in/martinchalupa/","title":"","rel":"","anchorType":0}]},{"name":"2d29","type":3,"text":"Intro","markups":[]},{"name":"2e2e","type":1,"text":"Netflix has an extensive history of using Java as our primary programming language across our vast fleet of microservices. As we pick up newer versions of Java, our JVM Ecosystem team seeks out new language features that can improve the…","markups":[{"type":3,"start":285,"end":299,"href":"https://netflixtechblog.com/bending-pause-times-to-your-will-with-generational-zgc-256629c9386b","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"7d27","startIndex":0}]},"isFullContent":false,"subtitle":"Getting real with virtual threads"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"ee13a06f9c78":{"id":"ee13a06f9c78","versionId":"54b490013bf7","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Maestro: Netflix’s Workflow Orchestrator","detectedLanguage":"en","latestVersion":"54b490013bf7","latestPublishedVersion":"54b490013bf7","hasUnpublishedEdits":false,"latestRev":747,"createdAt":1721335522532,"updatedAt":1732087517181,"acceptedAt":0,"firstPublishedAt":1721669875929,"latestPublishedAt":1722298579039,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Jun He, Natallia Dzenisenka, Praneeth Yenugutala, Yingyi Zhang, and Anjali Norwood","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*d7XTqfPjAkuCBv6C","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":517,"strategy":"resample","height":0,"width":0},"wordCount":4295,"imageCount":6,"readingTime":17.15754716981132,"subtitle":"By Jun He, Natallia Dzenisenka, Praneeth Yenugutala, Yingyi Zhang, and Anjali Norwood","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":325,"isBookmarked":false,"tags":[{"slug":"workflow","name":"Workflow","postCount":7118,"metadata":{"postCount":7118,"coverImage":{"id":"1*gly6MDWL7aBch_4P0vlwQA.png","originalWidth":1554,"originalHeight":972,"isFeatured":true}},"type":"Tag"},{"slug":"orchestration","name":"Orchestration","postCount":1670,"metadata":{"postCount":1670,"coverImage":{"id":"0*NIxvDcNNCktj5KFn","originalWidth":2600,"originalHeight":1733,"isFeatured":true}},"type":"Tag"},{"slug":"data","name":"Data","postCount":135828,"metadata":{"postCount":135828,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"distributed-systems","name":"Distributed Systems","postCount":9840,"metadata":{"postCount":9840,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":13,"links":{"entries":[{"url":"https://www.linkedin.com/in/agorajek/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/natalliadzenisenka/","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/romain-cledat-4a211a5","alts":[],"httpStatus":429},{"url":"https://github.com/Netflix/maestro/blob/main/netflix-sel/docs/index.md#welcome-to-sel","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro/issues","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro/wiki/Workflow-definition-example","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro/tree/main/maestro-common/src/main/java/com/netflix/maestro/models/events","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro/tree/main/maestro-engine/src/main/java/com/netflix/maestro/engine/jobevents","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro/blob/main/maestro-common/src/main/java/com/netflix/maestro/models/definition/SignalOutputsDefinition.java","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro/blob/main/maestro-common/src/main/java/com/netflix/maestro/models/parameter/SignalOperator.java","alts":[],"httpStatus":200},{"url":"https://docs.oracle.com/javase/specs/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/jheua/","alts":[],"httpStatus":999},{"url":"https://github.com/Netflix/maestro/blob/main/maestro-common/src/testFixtures/resources/fixtures/instances/sample-step-instance-failed.json#L151-L215","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/maestro/blob/main/maestro-common/src/testFixtures/resources/fixtures/instances/sample-step-instance-failed.json#L137-L150","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/orchestrating-data-ml-workflows-at-scale-with-netflix-maestro-aaa2b41b800c","alts":[{"type":3,"url":"medium://p/aaa2b41b800c"},{"type":2,"url":"medium://p/aaa2b41b800c"}],"httpStatus":200},{"url":"https://netflixtechblog.com/orchestrating-data-ml-workflows-at-scale-with-netflix-maestro-aaa2b41b800c#360e","alts":[{"type":3,"url":"medium://p/aaa2b41b800c"},{"type":2,"url":"medium://p/aaa2b41b800c"}],"httpStatus":200},{"url":"https://netflixtechblog.com/orchestrating-data-ml-workflows-at-scale-with-netflix-maestro-aaa2b41b800c#1fdf","alts":[{"type":3,"url":"medium://p/aaa2b41b800c"},{"type":2,"url":"medium://p/aaa2b41b800c"}],"httpStatus":200},{"url":"http://linkedin.com/in/moctarba","alts":[{"type":3,"url":"https://www.linkedin.com/in/moctarba"},{"type":2,"url":"https://www.linkedin.com/in/moctarba"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/brittany-truong-a35b54bb","alts":[{"type":3,"url":"https://www.linkedin.com/in/brittany-truong-a35b54bb"},{"type":2,"url":"https://www.linkedin.com/in/brittany-truong-a35b54bb"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/anjali-norwood-9521a16","alts":[{"type":2,"url":"https://www.linkedin.com/in/anjali-norwood-9521a16"},{"type":3,"url":"https://www.linkedin.com/in/anjali-norwood-9521a16"}],"httpStatus":200},{"url":"https://jobs.netflix.com/search?team=Data+Platform","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/andrew-seier/","alts":[{"type":3,"url":"https://www.linkedin.com/in/andrew-seier"},{"type":2,"url":"https://www.linkedin.com/in/andrew-seier"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/ashpokh/","alts":[{"type":3,"url":"https://www.linkedin.com/in/ashpokh"},{"type":2,"url":"https://www.linkedin.com/in/ashpokh"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/yingyi-zhang-a0a164111/","alts":[{"type":3,"url":"https://www.linkedin.com/in/yingyi-zhang-a0a164111"},{"type":2,"url":"https://www.linkedin.com/in/yingyi-zhang-a0a164111"}],"httpStatus":200},{"url":"http://linkedin.com/in/zhuoran-d-96848b154","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rdeepak2002/","alts":[{"type":3,"url":"https://www.linkedin.com/in/rdeepak2002"},{"type":2,"url":"https://www.linkedin.com/in/rdeepak2002"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/binbing-hou/","alts":[{"type":3,"url":"https://www.linkedin.com/in/binbing-hou"},{"type":2,"url":"https://www.linkedin.com/in/binbing-hou"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/praneethy91/","alts":[{"type":3,"url":"https://www.linkedin.com/in/praneethy91"},{"type":2,"url":"https://www.linkedin.com/in/praneethy91"}],"httpStatus":200}],"version":"0.3","generatedAt":1722298580714},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1019,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"maestro-netflixs-workflow-orchestrator","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"maestro-netflixs-workflow-orchestrator-ee13a06f9c78","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*d7XTqfPjAkuCBv6C","originalWidth":1600,"originalHeight":517,"isFeatured":true,"alt":"An example of auto-recovery ETL workflows"}},{"name":"previewTitle","type":3,"text":"Maestro: Netflix’s Workflow Orchestrator","alignment":1},{"name":"previewSubtitle","type":13,"text":"By Jun He, Natallia Dzenisenka, Praneeth Yenugutala, Yingyi…","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Jun He, Natallia Dzenisenka, Praneeth Yenugutala, Yingyi Zhang, and Anjali Norwood"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"899e161e35c9","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":6,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5784","type":3,"text":"Maestro: Data/ML Workflow Orchestrator at Netflix","markups":[]},{"name":"0ec7","type":1,"text":"By Jun He, Natallia Dzenisenka, Praneeth Yenugutala, Yingyi Zhang, and Anjali Norwood","markups":[{"type":3,"start":3,"end":9,"href":"https://www.linkedin.com/in/jheua/","title":"","rel":"","anchorType":0},{"type":3,"start":11,"end":30,"href":"https://www.linkedin.com/in/natalliadzenisenka/","title":"","rel":"","anchorType":0},{"type":3,"start":32,"end":51,"href":"https://www.linkedin.com/in/praneethy91/","title":"","rel":"","anchorType":0},{"type":3,"start":53,"end":65,"href":"https://www.linkedin.com/in/yingyi-zhang-a0a164111/","title":"","rel":"","anchorType":0},{"type":3,"start":71,"end":85,"href":"https://www.linkedin.com/in/anjali-norwood-9521a16","title":"","rel":"","anchorType":0}]},{"name":"4de7","type":3,"text":"TL;DR","markups":[]},{"name":"3080","type":1,"text":"We are thrilled to announce that the Maestro source code is now open to the public! Please visit the Maestro GitHub repository to get started. If you find it useful, please give us a star.","markups":[{"type":3,"start":101,"end":126,"href":"https://github.com/Netflix/maestro","title":"","rel":"","anchorType":0},{"type":3,"start":173,"end":187,"href":"https://github.com/Netflix/maestro","title":"","rel":"","anchorType":0}]},{"name":"2bef","type":13,"text":"What is Maestro","markups":[]},{"name":"3756","type":1,"text":"Maestro is a…","markups":[]}],"sections":[{"name":"fe86","startIndex":0}]},"isFullContent":false,"subtitle":"By Jun He, Natallia Dzenisenka, Praneeth Yenugutala, Yingyi Zhang, and Anjali Norwood"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"e735e6ce8f7d":{"id":"e735e6ce8f7d","versionId":"dbb17d981fe8","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Enhancing Netflix Reliability with Service-Level Prioritized Load Shedding","detectedLanguage":"en","latestVersion":"dbb17d981fe8","latestPublishedVersion":"dbb17d981fe8","hasUnpublishedEdits":false,"latestRev":474,"createdAt":1719269621202,"updatedAt":1732272420064,"acceptedAt":0,"firstPublishedAt":1719289436271,"latestPublishedAt":1719291654315,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Applying Quality of Service techniques at the application level","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*2KByIB47RWng5UNH","filter":"","backgroundSize":"","originalWidth":1442,"originalHeight":974,"strategy":"resample","height":0,"width":0},"wordCount":2571,"imageCount":16,"readingTime":11.251886792452831,"subtitle":"Applying Quality of Service techniques at the application level","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":148,"isBookmarked":false,"tags":[{"slug":"distributed-systems","name":"Distributed Systems","postCount":9840,"metadata":{"postCount":9840,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"},{"slug":"reliability","name":"Reliability","postCount":1471,"metadata":{"postCount":1471,"coverImage":{"id":"1*DwS6a_gjVzLUmXwtbi2WCg.jpeg","originalWidth":4174,"originalHeight":2959,"isFeatured":true}},"type":"Tag"},{"slug":"netflix","name":"Netflix","postCount":54697,"metadata":{"postCount":54697,"coverImage":{"id":"1*gPChNfwSZTgdEWoRJktpuw.jpeg","originalWidth":853,"originalHeight":450}},"type":"Tag"},{"slug":"load-shedding","name":"Load Shedding","postCount":92,"metadata":{"postCount":92,"coverImage":{"id":"0*zhw-qRWIQAfnSiBU","originalWidth":720,"originalHeight":320,"isFeatured":true}},"type":"Tag"},{"slug":"chaos-engineering","name":"Chaos Engineering","postCount":1064,"metadata":{"postCount":1064,"coverImage":{"id":"1*2xPORC5nwsmBydaKJATI2A.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":7,"links":{"entries":[{"url":"https://jolynch.github.io/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/william-schor","alts":[],"httpStatus":429},{"url":"https://linux.die.net/man/8/tc-prio","alts":[],"httpStatus":403},{"url":"https://netflixtechblog.medium.com/data-gateway-a-platform-for-growing-and-protecting-the-data-tier-f1ed8db8f5c6","alts":[{"type":3,"url":"medium://p/f1ed8db8f5c6"},{"type":2,"url":"medium://p/f1ed8db8f5c6"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/ivern","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/kzwang","alts":[],"httpStatus":429},{"url":"https://github.com/Netflix/concurrency-limits/blob/master/concurrency-limits-servlet/src/main/java/com/netflix/concurrency/limits/servlet/ConcurrencyLimitServletFilter.java","alts":[],"httpStatus":200},{"url":"https://github.com/Netflix/concurrency-limits","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/benjamin-fedorka","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/justin-guerra-3282262b","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/amendira/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/tonyghita","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/shyam-gala-5891224/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/xiaomei-liu-b475711","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rummadis","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/keeping-netflix-reliable-using-prioritized-load-shedding-6cc827b02f94","alts":[{"type":3,"url":"medium://p/6cc827b02f94"},{"type":2,"url":"medium://p/6cc827b02f94"}],"httpStatus":200}],"version":"0.3","generatedAt":1719291655390},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":334,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"enhancing-netflix-reliability-with-service-level-prioritized-load-shedding","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"enhancing-netflix-reliability-with-service-level-prioritized-load-shedding-e735e6ce8f7d","previewContent":{"bodyModel":{"paragraphs":[{"name":"63bf","type":3,"text":"Enhancing Netflix Reliability with Service-Level Prioritized Load Shedding","markups":[],"alignment":1},{"name":"14a1","type":13,"text":"Applying Quality of Service techniques at the application level","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Applying Quality of Service techniques at the application level"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"d67c16c33309","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"63bf","type":3,"text":"Enhancing Netflix Reliability with Service-Level Prioritized Load Shedding","markups":[]},{"name":"14a1","type":13,"text":"Applying Quality of Service techniques at the application level","markups":[]},{"name":"0656","type":1,"text":"Anirudh Mendiratta, Kevin Wang, Joey Lynch, Javier Fernandez-Ivern, Benjamin Fedorka","markups":[{"type":3,"start":0,"end":18,"href":"https://www.linkedin.com/in/amendira/","title":"","rel":"","anchorType":0},{"type":3,"start":20,"end":30,"href":"https://www.linkedin.com/in/kzwang","title":"","rel":"","anchorType":0},{"type":3,"start":32,"end":42,"href":"https://jolynch.github.io/","title":"","rel":"","anchorType":0},{"type":3,"start":44,"end":66,"href":"https://www.linkedin.com/in/ivern","title":"","rel":"","anchorType":0},{"type":3,"start":68,"end":84,"href":"https://www.linkedin.com/in/benjamin-fedorka","title":"","rel":"","anchorType":0}]},{"name":"37a8","type":3,"text":"Introduction","markups":[]},{"name":"8aa0","type":1,"text":"In November 2020, we introduced the concept of prioritized load shedding at the API gateway level in our blog post, Keeping Netflix Reliable Using Prioritized Load Shedding. Today, we’re excited to dive deeper into how we’ve extended this strategy to…","markups":[{"type":3,"start":116,"end":172,"href":"https://netflixtechblog.com/keeping-netflix-reliable-using-prioritized-load-shedding-6cc827b02f94","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"f3bf","startIndex":0}]},"isFullContent":false,"subtitle":"Applying Quality of Service techniques at the application level"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"6b4d4410b88f":{"id":"6b4d4410b88f","versionId":"9023e0587928","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"A Recap of the Data Engineering Open Forum at Netflix","detectedLanguage":"en","latestVersion":"9023e0587928","latestPublishedVersion":"9023e0587928","hasUnpublishedEdits":false,"latestRev":488,"createdAt":1718826211528,"updatedAt":1732301473959,"acceptedAt":0,"firstPublishedAt":1718895686009,"latestPublishedAt":1718895686009,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"A summary of sessions at the first Data Engineering Open Forum at Netflix on April 18th, 2024","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*k1mwTj0BpJuP0TDi","filter":"","backgroundSize":"","originalWidth":981,"originalHeight":552,"strategy":"resample","height":0,"width":0},"wordCount":908,"imageCount":3,"readingTime":3.9764150943396226,"subtitle":"A summary of sessions at the first Data Engineering Open Forum at Netflix on April 18th, 2024","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":69,"isBookmarked":false,"tags":[{"slug":"data-engineering","name":"Data Engineering","postCount":42390,"metadata":{"postCount":42390,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"},{"slug":"software-engineering","name":"Software Engineering","postCount":124457,"metadata":{"postCount":124457,"coverImage":{"id":"1*3XS-8r8adjnRoNH4YjKXpw.png","originalWidth":2212,"originalHeight":1337,"isFeatured":true}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":372673,"metadata":{"postCount":372673,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2329500,"metadata":{"postCount":2329500,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"data","name":"Data","postCount":135828,"metadata":{"postCount":135828,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://medium.com/airbnb-engineering/data-quality-score-the-next-chapter-of-data-quality-at-airbnb-851dccda19c3","alts":[{"type":3,"url":"medium://p/851dccda19c3"},{"type":2,"url":"medium://p/851dccda19c3"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/stephanievezich/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/izeigerman/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/xinranwaibel/","alts":[],"httpStatus":999},{"url":"https://youtu.be/WdSsneeI6RE?si=-gpe4DprVQKoZt_V","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=-gpe4DprVQKoZt_V&v=WdSsneeI6RE&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=-gpe4DprVQKoZt_V&v=WdSsneeI6RE&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/chris-colburn/","alts":[],"httpStatus":999},{"url":"https://youtu.be/Lv-bFDSzrqw?si=SBdnoFcOHjqe34Ve","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=SBdnoFcOHjqe34Ve&v=Lv-bFDSzrqw&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=SBdnoFcOHjqe34Ve&v=Lv-bFDSzrqw&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://youtu.be/0j6b9V9tmKA?si=fMEuLmrIK5ATi52d","alts":[{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=fMEuLmrIK5ATi52d&v=0j6b9V9tmKA&feature=youtu.be&feature=applinks"},{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=fMEuLmrIK5ATi52d&v=0j6b9V9tmKA&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://youtu.be/CmEIJ-lagVU?si=Z4VcYL_FBV4bIGJW","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=Z4VcYL_FBV4bIGJW&v=CmEIJ-lagVU&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=Z4VcYL_FBV4bIGJW&v=CmEIJ-lagVU&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://youtu.be/KP5ml1tOfbY?si=hmyBjQRx422zUg-k","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=hmyBjQRx422zUg-k&v=KP5ml1tOfbY&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=hmyBjQRx422zUg-k&v=KP5ml1tOfbY&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://groups.google.com/g/data-engineering-open-forum","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/jessmlarson/","alts":[],"httpStatus":999},{"url":"https://youtu.be/DtzIIVJq8wA?si=i5fLXA7G8IMyiF0u","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=i5fLXA7G8IMyiF0u&v=DtzIIVJq8wA&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=i5fLXA7G8IMyiF0u&v=DtzIIVJq8wA&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/jide-o-87602512/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jaibalani/","alts":[],"httpStatus":999},{"url":"https://youtu.be/ARTHgxoJmCE?si=MDx1Qa8W7nNxkA_m","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=MDx1Qa8W7nNxkA_m&v=ARTHgxoJmCE&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=MDx1Qa8W7nNxkA_m&v=ARTHgxoJmCE&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://youtu.be/9NnnYHuH8GQ?si=nYBpQPhGwxX-oo1l","alts":[{"type":3,"url":"vnd.youtube://www.youtube.com/watch?si=nYBpQPhGwxX-oo1l&v=9NnnYHuH8GQ&feature=youtu.be&feature=applinks"},{"type":2,"url":"vnd.youtube://www.youtube.com/watch?si=nYBpQPhGwxX-oo1l&v=9NnnYHuH8GQ&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/binbing-hou/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/max-schmeiser/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jasonreid/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/tulikabhatt/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/clark-wright/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/patriciapho/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rashmi-shamprasad-51630b19/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1718895687192},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":182,"sectionCount":10,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"a-recap-of-the-data-engineering-open-forum-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"a-recap-of-the-data-engineering-open-forum-at-netflix-6b4d4410b88f","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*k1mwTj0BpJuP0TDi","originalWidth":981,"originalHeight":552,"isFeatured":true}},{"name":"25c2","type":3,"text":"A Recap of the Data Engineering Open Forum at Netflix","markups":[{"type":1,"start":0,"end":53}],"alignment":1},{"name":"96bb","type":13,"text":"A summary of sessions at the first Data…","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"A summary of sessions at the first Data Engineering Open Forum at Netflix on April 18th, 2024"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"ae53f24e6626","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"25c2","type":3,"text":"A Recap of the Data Engineering Open Forum at Netflix","markups":[{"type":1,"start":0,"end":53}]},{"name":"96bb","type":13,"text":"A summary of sessions at the first Data Engineering Open Forum at Netflix on April 18th, 2024","markups":[]},{"name":"4579","type":4,"text":"The Data Engineering Open Forum at Netflix on April 18th, 2024.","markups":[],"layout":1,"metadata":{"id":"0*k1mwTj0BpJuP0TDi","originalWidth":981,"originalHeight":552,"isFeatured":true}},{"name":"b8c3","type":1,"text":"At Netflix, we aspire to entertain the world, and our data engineering teams play a crucial role in this mission by enabling data-driven decision-making at scale. Netflix is not the only place where data engineers are solving challenging problems with creative solutions. On April 18th, 2024, we hosted the inaugural…","markups":[]}],"sections":[{"name":"bcb1","startIndex":0}]},"isFullContent":false,"subtitle":"A summary of sessions at the first Data Engineering Open Forum at Netflix on April 18th, 2024"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"8ebdda0b2db4":{"id":"8ebdda0b2db4","versionId":"7926de020f39","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Video annotator: building video classifiers using vision-language models and active learning","detectedLanguage":"en","latestVersion":"7926de020f39","latestPublishedVersion":"7926de020f39","hasUnpublishedEdits":false,"latestRev":367,"createdAt":1714167148509,"updatedAt":1732311298880,"acceptedAt":0,"firstPublishedAt":1718802161051,"latestPublishedAt":1718802161051,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Harness domain expertise with Video Annotator: streamline ML annotations, cut costs, and deploy faster using a human-in-the-loop system 🚀","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*hqNZjvWBlREV5GIv4uEmHw.png","filter":"","backgroundSize":"","originalWidth":620,"originalHeight":547,"strategy":"resample","height":0,"width":0},"wordCount":1176,"imageCount":5,"readingTime":5.271069182389937,"subtitle":"Harness domain expertise with Video Annotator: streamline ML annotations, cut costs, and deploy faster using a human-in-the-loop system 🚀","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":94,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"artificial-intelligence","name":"Artificial Intelligence","postCount":498147,"metadata":{"postCount":498147,"coverImage":{"id":"1*gAn_BSffVBcwCIR6bDgK1g.jpeg"}},"type":"Tag"},{"slug":"video-editing","name":"Video Editing","postCount":10269,"metadata":{"postCount":10269,"coverImage":{"id":"0*Pq8A9RqG4xLjNEwI","originalWidth":5145,"originalHeight":3430,"isFeatured":true,"unsplashPhotoId":"_zE8k4OKN2E"}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://www.linkedin.com/in/kelli-griggs-32990125/","alts":[],"httpStatus":429},{"url":"https://en.wikipedia.org/wiki/Establishing_shot","alts":[],"httpStatus":200},{"url":"https://arxiv.org/abs/1904.11451","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/eugene-lok-6465045b","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/alejandro-alonso-ba733548","alts":[],"httpStatus":999},{"url":"https://github.com/netflix/videoannotator","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/amirziai/","alts":[],"httpStatus":999},{"url":"https://www.netflix.com/title/81001887","alts":[{"type":2,"url":"nflx://www.netflix.com/title/81001887"},{"type":3,"url":"nflx://www.netflix.com/title/81001887"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/aneeshvartakavi","alts":[],"httpStatus":999},{"url":"https://www.netflix.com/title/81314956","alts":[{"type":2,"url":"nflx://www.netflix.com/title/81314956"},{"type":3,"url":"nflx://www.netflix.com/title/81314956"}],"httpStatus":200},{"url":"https://www.netflix.com/title/81130691","alts":[{"type":2,"url":"nflx://www.netflix.com/title/81130691"},{"type":3,"url":"nflx://www.netflix.com/title/81130691"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/yvonne-jukes-814ba04","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/discovering-creative-insights-in-promotional-artwork-295e4d788db5","alts":[{"type":3,"url":"medium://p/295e4d788db5"},{"type":2,"url":"medium://p/295e4d788db5"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/anna-pulido-61025063","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/artwork-personalization-c589f074ad76","alts":[{"type":3,"url":"medium://p/c589f074ad76"},{"type":2,"url":"medium://p/c589f074ad76"}],"httpStatus":200},{"url":"https://netflixtechblog.com/ava-discovery-view-surfacing-authentic-moments-b8cd145491cc","alts":[{"type":3,"url":"medium://p/b8cd145491cc"},{"type":2,"url":"medium://p/b8cd145491cc"}],"httpStatus":200},{"url":"https://arxiv.org/pdf/2402.06560","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/vi-pallavika-iyengar-144abb1b/","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1718802164815},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":250,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"},{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"video-annotator-building-video-classifiers-using-vision-language-models-and-active-learning","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"video-annotator-building-video-classifiers-using-vision-language-models-and-active-learning-8ebdda0b2db4","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*hqNZjvWBlREV5GIv4uEmHw.png","originalWidth":620,"originalHeight":547,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"Video annotator: building video classifiers using vision-language models and active learning","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Harness domain expertise with Video Annotator: streamline ML annotations, cut costs, and deploy faster using a human-in-the-loop system 🚀"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"605facb95234","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"0e98","type":3,"text":"Video annotator: a framework for efficiently building video classifiers using vision-language models and active learning","markups":[]},{"name":"f4a6","type":1,"text":"Amir Ziai, Aneesh Vartakavi, Kelli Griggs, Eugene Lok, Yvonne Jukes, Alex Alonso, Vi Iyengar, Anna Pulido","markups":[{"type":3,"start":0,"end":9,"href":"https://www.linkedin.com/in/amirziai/","title":"","rel":"","anchorType":0},{"type":3,"start":11,"end":27,"href":"https://www.linkedin.com/in/aneeshvartakavi","title":"","rel":"","anchorType":0},{"type":3,"start":29,"end":41,"href":"https://www.linkedin.com/in/kelli-griggs-32990125/","title":"","rel":"","anchorType":0},{"type":3,"start":43,"end":53,"href":"https://www.linkedin.com/in/eugene-lok-6465045b","title":"","rel":"","anchorType":0},{"type":3,"start":55,"end":67,"href":"https://www.linkedin.com/in/yvonne-jukes-814ba04","title":"","rel":"","anchorType":0},{"type":3,"start":69,"end":80,"href":"https://www.linkedin.com/in/alejandro-alonso-ba733548","title":"","rel":"","anchorType":0},{"type":3,"start":82,"end":92,"href":"https://www.linkedin.com/in/vi-pallavika-iyengar-144abb1b/","title":"","rel":"","anchorType":0},{"type":3,"start":94,"end":105,"href":"https://www.linkedin.com/in/anna-pulido-61025063","title":"","rel":"","anchorType":0}]},{"name":"7808","type":11,"text":"","markups":[],"layout":1,"iframe":{"mediaResourceId":"02a5bbf97c619182adba24b45e42edcb","iframeWidth":854,"iframeHeight":480,"thumbnailUrl":"https://i.embed.ly/1/image?url=http%3A%2F%2Fi.ytimg.com%2Fvi%2FF6hw5eUhYlQ%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07"}},{"name":"791b","type":3,"text":"Introduction","markups":[]},{"name":"da8a","type":13,"text":"Problem","markups":[]},{"name":"4a96","type":1,"text":"High-quality and consistent annotations are fundamental to the successful development of robust machine learning models. Conventional techniques for training machine learning classifiers are resource intensive. They involve a cycle where domain experts annotate…","markups":[{"type":1,"start":28,"end":39},{"type":1,"start":191,"end":209}]}],"sections":[{"name":"de52","startIndex":0}]},"isFullContent":false,"subtitle":"Harness domain expertise with Video Annotator: streamline ML annotations, cut costs, and deploy faster using a human-in-the-loop system 🚀"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"fd78328ee0bb":{"id":"fd78328ee0bb","versionId":"bca5d63d0e62","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Round 2: A Survey of Causal Inference Applications at Netflix","detectedLanguage":"en","latestVersion":"bca5d63d0e62","latestPublishedVersion":"bca5d63d0e62","hasUnpublishedEdits":false,"latestRev":279,"createdAt":1717631070593,"updatedAt":1732409621907,"acceptedAt":0,"firstPublishedAt":1717704548074,"latestPublishedAt":1717704548074,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"At Netflix, we want to ensure that every current and future member finds content that thrills them today and excites them to come back for…","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*e8IMSJf7p60mk-WG","filter":"","backgroundSize":"","originalWidth":823,"originalHeight":509,"strategy":"resample","height":0,"width":0},"wordCount":2130,"imageCount":10,"readingTime":9.287735849056604,"subtitle":"At Netflix, we want to ensure that every current and future member finds content that thrills them today and excites them to come back for…","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":119,"isBookmarked":false,"tags":[{"slug":"data-science","name":"Data Science","postCount":372673,"metadata":{"postCount":372673,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"experimentation","name":"Experimentation","postCount":1809,"metadata":{"postCount":1809,"coverImage":{"id":"0*yGhzYRdO-sDNmtWU.jpg","originalWidth":736,"originalHeight":1104,"isFeatured":true}},"type":"Tag"},{"slug":"causal-inference","name":"Causal Inference","postCount":1280,"metadata":{"postCount":1280,"coverImage":{"id":"1*aPXL4G-O5_q40CnD7of1bw.png","originalWidth":1383,"originalHeight":629,"isFeatured":true}},"type":"Tag"},{"slug":"technology","name":"Technology","postCount":2329500,"metadata":{"postCount":2329500,"coverImage":{"id":"1*yH2cmH1uhoFpR7HIseOAsw.jpeg"}},"type":"Tag"},{"slug":"netflix","name":"Netflix","postCount":54697,"metadata":{"postCount":54697,"coverImage":{"id":"1*gPChNfwSZTgdEWoRJktpuw.jpeg","originalWidth":853,"originalHeight":450}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[{"url":"https://www.linkedin.com/in/steve-beckett-cfa-4384a382","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/kocaguneli","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/jlantos?original_referer=https%3A%2F%2Fwww.google.com%2F","alts":[],"httpStatus":429},{"url":"https://www.linkedin.com/in/dhevi-rajendran-7b736b29","alts":[],"httpStatus":429},{"url":"https://research.netflix.com/publication/evaluating-the-surrogate-index-as-a-decision-making-tool-using-200-a-b-tests","alts":[],"httpStatus":200},{"url":"https://arxiv.org/pdf/1905.03818","alts":[],"httpStatus":200},{"url":"https://imai.fas.harvard.edu/","alts":[],"httpStatus":200},{"url":"https://jobs.netflix.com/search?q=data%20science&team=Data%20Science%20and%20Engineering","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/","alts":[{"type":2,"url":"medium://netflix-techblog"},{"type":3,"url":"medium://netflix-techblog"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/codychapmanucsd","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/quasi-experimentation-at-netflix-566b57d2e362","alts":[{"type":3,"url":"medium://p/566b57d2e362"},{"type":2,"url":"medium://p/566b57d2e362"}],"httpStatus":200},{"url":"https://arxiv.org/abs/2403.07031","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/decision-making-at-netflix-33065fa06481","alts":[{"type":3,"url":"medium://p/33065fa06481"},{"type":2,"url":"medium://p/33065fa06481"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/kshimada","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/a-survey-of-causal-inference-applications-at-netflix-b62d25175e6f?gi=f599816a7a8b","alts":[{"type":3,"url":"medium://p/b62d25175e6f"},{"type":2,"url":"medium://p/b62d25175e6f"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/carolyn-chu-263147a9","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/arushi-tomar","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/yimeng-tang-49566b207","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/apoorvalal","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jjschafer","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/clairewilleck?original_referer=https%3A%2F%2Fwww.google.com%2F","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/david-hubbard-557a852","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/winston-chou-6491b0168","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/andreasaristidou","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/simon-ejdemyr-22b920123","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/tendulkar","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/achenzion","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rinachang","alts":[],"httpStatus":999}],"version":"0.3","generatedAt":1717704549111},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":543,"sectionCount":2,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"round-2-a-survey-of-causal-inference-applications-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"round-2-a-survey-of-causal-inference-applications-at-netflix-fd78328ee0bb","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*e8IMSJf7p60mk-WG","originalWidth":823,"originalHeight":509,"isFeatured":true}},{"name":"36d7","type":3,"text":"Round 2: A Survey of Causal Inference Applications at Netflix","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"At Netflix, we want to ensure that every current and future member finds content that thrills them today and excites them to come back for…"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"3572e12604b6","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"36d7","type":3,"text":"Round 2: A Survey of Causal Inference Applications at Netflix","markups":[]},{"name":"46f5","type":1,"text":"At Netflix, we want to ensure that every current and future member finds content that thrills them today and excites them to come back for more. Causal inference is an essential part of the value that Data Science and Engineering adds towards this mission. We rely heavily on both experimentation…","markups":[{"type":3,"start":281,"end":296,"href":"https://netflixtechblog.com/decision-making-at-netflix-33065fa06481","title":"","rel":"","anchorType":0},{"type":3,"start":301,"end":322,"href":"https://netflixtechblog.com/quasi-experimentation-at-netflix-566b57d2e362","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"c779","startIndex":0}]},"isFullContent":false,"subtitle":"At Netflix, we want to ensure that every current and future member finds content that thrills them today and excites them to come back for…"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"422d6218fdf1":{"id":"422d6218fdf1","versionId":"a07ba84b0bea","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Investigation of a Cross-regional Network Performance Issue","detectedLanguage":"en","latestVersion":"a07ba84b0bea","latestPublishedVersion":"a07ba84b0bea","hasUnpublishedEdits":false,"latestRev":673,"createdAt":1713929154374,"updatedAt":1732771325710,"acceptedAt":0,"firstPublishedAt":1713976383776,"latestPublishedAt":1713991241603,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Hechao Li, Roger Cruz","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*RpHklRseVBeBJG6u","filter":"","backgroundSize":"","originalWidth":1022,"originalHeight":652,"strategy":"resample","height":0,"width":0},"wordCount":2403,"imageCount":5,"readingTime":9.901257861635221,"subtitle":"Hechao Li, Roger Cruz","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":317,"isBookmarked":false,"tags":[{"slug":"network","name":"Network","postCount":16634,"metadata":{"postCount":16634,"coverImage":{"id":"0*vt6qfWOkoSe8yRBV","originalWidth":4256,"originalHeight":2832,"isFeatured":true,"unsplashPhotoId":"Q1p7bh3SHj8"}},"type":"Tag"},{"slug":"tcp","name":"Tcp","postCount":1403,"metadata":{"postCount":1403,"coverImage":{"id":"0*mfeeNUJY4r3_B9q-.png","originalWidth":1066,"originalHeight":792,"isFeatured":true}},"type":"Tag"},{"slug":"linux","name":"Linux","postCount":54654,"metadata":{"postCount":54654,"coverImage":{"id":"1*uO72RkOaFGdcK9HKvuZHlw.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"kernel","name":"Kernel","postCount":1523,"metadata":{"postCount":1523,"coverImage":{"id":"1*RtfXVnap7xNTPweA2uoUZw.png","originalWidth":2240,"originalHeight":1260,"isFeatured":true}},"type":"Tag"},{"slug":"debugging","name":"Debugging","postCount":7646,"metadata":{"postCount":7646,"coverImage":{"id":"1*7DsQClQ1Ya7M5Svsl6aSKw.png","originalWidth":1920,"originalHeight":1078,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":16,"links":{"entries":[{"url":"https://kafka.apache.org/documentation/#connectconfigs_receive.buffer.bytes","alts":[],"httpStatus":200},{"url":"https://kafka.apache.org/documentation/#consumerconfigs_request.timeout.ms","alts":[],"httpStatus":200},{"url":"https://tycho.pizza/","alts":[],"httpStatus":200},{"url":"https://docs.kernel.org/networking/ip-sysctl.html","alts":[],"httpStatus":200},{"url":"https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=697a6c8cec03","alts":[],"httpStatus":200},{"url":"https://jobs.netflix.com/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/vinay-rayini/","alts":[],"httpStatus":999},{"url":"https://lore.kernel.org/netdev/20230717152917.751987-1-edumazet@google.com/T/","alts":[],"httpStatus":200},{"url":"https://issues.apache.org/jira/browse/KAFKA-16496","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/nickmahilani/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/hechaoli/","alts":[{"type":2,"url":"https://www.linkedin.com/in/hechaoli"},{"type":3,"url":"https://www.linkedin.com/in/hechaoli"}],"httpStatus":200},{"url":"https://github.com/eventlet/eventlet/issues/821","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/alok-tiagi-99205015/","alts":[],"httpStatus":999},{"url":"https://man7.org/linux/man-pages/man7/socket.7.html","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/artemtkachuk/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/eric-dumazet-ba252942/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jethanadams/","alts":[{"type":3,"url":"https://www.linkedin.com/in/jethanadams"},{"type":2,"url":"https://www.linkedin.com/in/jethanadams"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/jorge-rodriguez-12b5595/","alts":[],"httpStatus":999},{"url":"https://elixir.bootlin.com/linux/v6.7.9/source/include/linux/tcp.h#L256","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/rogercruz/","alts":[],"httpStatus":999},{"url":"https://elixir.bootlin.com/linux/v6.7.9/source/net/ipv4/tcp_input.c#L248","alts":[],"httpStatus":200},{"url":"https://elixir.bootlin.com/linux/v6.9-rc1/source/net/core/sock.c#L976","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1713991251009},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":1402,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"investigation-of-a-cross-regional-network-performance-issue","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"investigation-of-a-cross-regional-network-performance-issue-422d6218fdf1","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*RpHklRseVBeBJG6u","originalWidth":1022,"originalHeight":652,"isFeatured":true}},{"name":"5cb7","type":3,"text":"Investigation of a Cross-regional Network Performance Issue","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Hechao Li, Roger Cruz"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"de56386aacca","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"5cb7","type":3,"text":"Investigation of a Cross-regional Network Performance Issue","markups":[]},{"name":"680a","type":1,"text":"Hechao Li, Roger Cruz","markups":[{"type":3,"start":0,"end":9,"href":"https://www.linkedin.com/in/hechaoli/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":11,"end":21,"href":"https://www.linkedin.com/in/rogercruz/","title":"","rel":"noopener","anchorType":0}]},{"name":"a44a","type":3,"text":"Cloud Networking Topology","markups":[]},{"name":"8b0b","type":1,"text":"Netflix operates a highly efficient cloud computing infrastructure that supports a wide array of applications essential for our SVOD (Subscription Video on Demand), live streaming and gaming services. Utilizing Amazon AWS, our infrastructure is hosted across multiple geographic regions worldwide. This global distribution allows our applications…","markups":[]}],"sections":[{"name":"6356","startIndex":0}]},"isFullContent":false,"subtitle":"Hechao Li, Roger Cruz"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"946b9b3cd300":{"id":"946b9b3cd300","versionId":"43a2816506a6","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"The Making of VES: the Cosmos Microservice for Netflix Video Encoding","detectedLanguage":"en","latestVersion":"43a2816506a6","latestPublishedVersion":"43a2816506a6","hasUnpublishedEdits":false,"latestRev":551,"createdAt":1712611804585,"updatedAt":1739492137248,"acceptedAt":0,"firstPublishedAt":1712700752638,"latestPublishedAt":1714627954687,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Liwei Guo, Vinicius Carvalho, Anush Moorthy, Aditya Mavlankar, Lishan Zhu","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*7n3hN3lYhe89Ezk6","filter":"","backgroundSize":"","originalWidth":1593,"originalHeight":620,"strategy":"resample","height":0,"width":0},"wordCount":2534,"imageCount":3,"readingTime":10.112264150943396,"subtitle":"Liwei Guo, Vinicius Carvalho, Anush Moorthy, Aditya Mavlankar, Lishan Zhu","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":122,"isBookmarked":false,"tags":[{"slug":"microservices","name":"Microservices","postCount":27573,"metadata":{"postCount":27573,"coverImage":{"id":"1*ndgHC1d_Zbowh7RfGwPjTA.png","originalWidth":1786,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"video-encoding","name":"Video Encoding","postCount":141,"metadata":{"postCount":141,"coverImage":{"id":"1*dfkQWovJeBTKKhKtp5Cgug.jpeg","originalWidth":1024,"originalHeight":499,"isFeatured":true}},"type":"Tag"},{"slug":"netflix","name":"Netflix","postCount":54697,"metadata":{"postCount":54697,"coverImage":{"id":"1*gPChNfwSZTgdEWoRJktpuw.jpeg","originalWidth":853,"originalHeight":450}},"type":"Tag"},{"slug":"streaming","name":"Streaming","postCount":34381,"metadata":{"postCount":34381,"coverImage":{"id":"0*_n0g1jVPRMd8xghl","originalWidth":1024,"originalHeight":688,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":8,"links":{"entries":[{"url":"https://martinfowler.com/articles/practical-test-pyramid.html","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/lishan-z-51302abb/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/aditya-mavlankar-7139791/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/liwei-guo/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/anush-moorthy-b8451142/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/timestone-netflixs-high-throughput-low-latency-priority-queueing-system-with-built-in-support-1abf249ba95f","alts":[{"type":3,"url":"medium://p/1abf249ba95f"},{"type":2,"url":"medium://p/1abf249ba95f"}],"httpStatus":200},{"url":"https://netflixtechblog.com/the-netflix-cosmos-platform-35c14d9351ad","alts":[{"type":3,"url":"medium://p/35c14d9351ad"},{"type":2,"url":"medium://p/35c14d9351ad"}],"httpStatus":200},{"url":"https://netflixtechblog.com/rebuilding-netflix-video-processing-pipeline-with-microservices-4e5e6310e359","alts":[{"type":3,"url":"medium://p/4e5e6310e359"},{"type":2,"url":"medium://p/4e5e6310e359"}],"httpStatus":200},{"url":"https://netflixtechblog.com/bringing-av1-streaming-to-netflix-members-tvs-b7fc88e42320","alts":[{"type":3,"url":"medium://p/b7fc88e42320"},{"type":2,"url":"medium://p/b7fc88e42320"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/carvalhovinicius/","alts":[{"type":3,"url":"https://www.linkedin.com/in/carvalhovinicius"},{"type":2,"url":"https://www.linkedin.com/in/carvalhovinicius"}],"httpStatus":200},{"url":"https://medium.com/p/f868c9fb5436","alts":[{"type":3,"url":"medium://p/f868c9fb5436"},{"type":2,"url":"medium://p/f868c9fb5436"}],"httpStatus":200}],"version":"0.3","generatedAt":1714627955716},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":257,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"the-making-of-ves-the-cosmos-microservice-for-netflix-video-encoding","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"the-making-of-ves-the-cosmos-microservice-for-netflix-video-encoding-946b9b3cd300","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*7n3hN3lYhe89Ezk6","originalWidth":1593,"originalHeight":620,"isFeatured":true}},{"name":"f17a","type":3,"text":"The Making of VES: the Cosmos Microservice for Netflix Video Encoding","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Liwei Guo, Vinicius Carvalho, Anush Moorthy, Aditya Mavlankar, Lishan Zhu"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"96f42aa6a320","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"f17a","type":3,"text":"The Making of VES: the Cosmos Microservice for Netflix Video Encoding","markups":[]},{"name":"9204","type":1,"text":"Liwei Guo, Vinicius Carvalho, Anush Moorthy, Aditya Mavlankar, Lishan Zhu","markups":[{"type":3,"start":0,"end":9,"href":"https://www.linkedin.com/in/liwei-guo/","title":"","rel":"","anchorType":0},{"type":3,"start":11,"end":28,"href":"https://www.linkedin.com/in/carvalhovinicius/","title":"","rel":"","anchorType":0},{"type":3,"start":30,"end":43,"href":"https://www.linkedin.com/in/anush-moorthy-b8451142/","title":"","rel":"","anchorType":0},{"type":3,"start":45,"end":61,"href":"https://www.linkedin.com/in/aditya-mavlankar-7139791/","title":"","rel":"","anchorType":0},{"type":3,"start":63,"end":73,"href":"https://www.linkedin.com/in/lishan-z-51302abb/","title":"","rel":"","anchorType":0}]},{"name":"14c1","type":1,"text":"This is the second post in a multi-part series from Netflix. See here for Part 1 which provides an overview of our efforts in rebuilding the Netflix video processing pipeline with microservices. This blog dives into the details of building…","markups":[{"type":3,"start":65,"end":69,"href":"https://netflixtechblog.com/rebuilding-netflix-video-processing-pipeline-with-microservices-4e5e6310e359","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":299}]}],"sections":[{"name":"d0c6","startIndex":0}]},"isFullContent":false,"subtitle":"Liwei Guo, Vinicius Carvalho, Anush Moorthy, Aditya Mavlankar, Lishan Zhu"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"222ac5d23576":{"id":"222ac5d23576","versionId":"11e11dddd5c8","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Reverse Searching Netflix’s Federated Graph","detectedLanguage":"en","latestVersion":"11e11dddd5c8","latestPublishedVersion":"11e11dddd5c8","hasUnpublishedEdits":false,"latestRev":599,"createdAt":1711978050444,"updatedAt":1734370176495,"acceptedAt":0,"firstPublishedAt":1712239325360,"latestPublishedAt":1734370176495,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Ricky Gardiner, Alex Hutter, Damir Svrtan and Katie Lefevre","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*GCZRoNqT8seObcUFzYthXg.png","filter":"","backgroundSize":"","originalWidth":1426,"originalHeight":942,"strategy":"resample","height":0,"width":0},"wordCount":1748,"imageCount":4,"readingTime":7.29622641509434,"subtitle":"By Ricky Gardiner, Alex Hutter, Damir Svrtan and Katie Lefevre","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":178,"isBookmarked":false,"tags":[{"slug":"graphql","name":"GraphQL","postCount":11103,"metadata":{"postCount":11103,"coverImage":{"id":"1*ICFvwpWiSNi7iOuREh5eWA.png","originalWidth":1920,"originalHeight":1080}},"type":"Tag"},{"slug":"elasticsearch","name":"Elasticsearch","postCount":8438,"metadata":{"postCount":8438,"coverImage":{"id":"1*VRJvbCavyXUEnP9t6QFLcw.png","originalWidth":2108,"originalHeight":1058,"isFeatured":true}},"type":"Tag"},{"slug":"search","name":"Search","postCount":8948,"metadata":{"postCount":8948,"coverImage":{"id":"0*GrDiOB-CvmROWgSo","originalWidth":2881,"originalHeight":3843,"isFeatured":true,"unsplashPhotoId":"rebHYsSEBHQ"}},"type":"Tag"},{"slug":"distributed-systems","name":"Distributed Systems","postCount":9840,"metadata":{"postCount":9840,"coverImage":{"id":"0*T6tQiUj-VDtyEhd1","originalWidth":1600,"originalHeight":754,"isFeatured":true}},"type":"Tag"},{"slug":"eventing","name":"Eventing","postCount":51,"metadata":{"postCount":51,"coverImage":{"id":"1*GCZRoNqT8seObcUFzYthXg.png","originalWidth":1426,"originalHeight":942,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":7,"links":{"entries":[{"url":"https://www.linkedin.com/in/katielefevre/","alts":[],"httpStatus":429},{"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/percolator.html#:~:text=The%20percolator%20field%20type%20parses,to%20be%20a%20percolator%20field.","alts":[],"httpStatus":200},{"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates-v1.html#put-index-template-v1-api-request-body","alts":[],"httpStatus":200},{"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-percolate-query.html","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/how-netflix-content-engineering-makes-a-federated-graph-searchable-part-2-49348511c06c","alts":[{"type":3,"url":"medium://p/49348511c06c"},{"type":2,"url":"medium://p/49348511c06c"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/ahutter/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/how-netflix-content-engineering-makes-a-federated-graph-searchable-5c0c1c7d7eaf","alts":[{"type":3,"url":"medium://p/5c0c1c7d7eaf"},{"type":2,"url":"medium://p/5c0c1c7d7eaf"}],"httpStatus":200},{"url":"https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2","alts":[{"type":3,"url":"medium://p/ae3557c187e2"},{"type":2,"url":"medium://p/ae3557c187e2"}],"httpStatus":200},{"url":"https://www.netflix.com/title/81730862","alts":[{"type":2,"url":"nflx://www.netflix.com/title/81730862"},{"type":3,"url":"nflx://www.netflix.com/title/81730862"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/damir-svrtan/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/rickygardiner/","alts":[],"httpStatus":999},{"url":"https://netflixtechblog.com/data-mesh-a-data-movement-and-processing-platform-netflix-1288bcab2873","alts":[{"type":3,"url":"medium://p/1288bcab2873"},{"type":2,"url":"medium://p/1288bcab2873"}],"httpStatus":200}],"version":"0.3","generatedAt":1734370636130},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":528,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"reverse-searching-netflixs-federated-graph","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"reverse-searching-netflixs-federated-graph-222ac5d23576","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*GCZRoNqT8seObcUFzYthXg.png","originalWidth":1426,"originalHeight":942,"isFeatured":true}},{"name":"12cb","type":3,"text":"Reverse Searching Netflix’s Federated Graph","markups":[],"alignment":1},{"name":"89dd","type":1,"text":"By Ricky Gardiner, Alex Hutter, Damir Svrtan and Katie Lefevre","markups":[{"type":3,"start":3,"end":17,"href":"https://www.linkedin.com/in/rickygardiner/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":19,"end":30,"href":"https://www.linkedin.com/in/ahutter/","title":"","rel":"noopener ugc nofollow noopener","anchorType":0},{"type":3,"start":32,"end":44,"href":"https://www.linkedin.com/in/damir-svrtan/","title":"","rel":"","anchorType":0},{"type":3,"start":49,"end":62,"href":"https://www.linkedin.com/in/katielefevre/","title":"","rel":"noopener","anchorType":0}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Ricky Gardiner, Alex Hutter, Damir Svrtan and Katie Lefevre"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"d098be8ebc88","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"Reverse Searching Netflix’s Federated Graph","previewContent2":{"bodyModel":{"paragraphs":[{"name":"12cb","type":3,"text":"Reverse Searching Netflix’s Federated Graph","markups":[]},{"name":"89dd","type":1,"text":"By Ricky Gardiner, Alex Hutter, Damir Svrtan and Katie Lefevre","markups":[{"type":3,"start":3,"end":17,"href":"https://www.linkedin.com/in/rickygardiner/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":19,"end":30,"href":"https://www.linkedin.com/in/ahutter/","title":"","rel":"noopener ugc nofollow noopener","anchorType":0},{"type":3,"start":32,"end":44,"href":"https://www.linkedin.com/in/damir-svrtan/","title":"","rel":"","anchorType":0},{"type":3,"start":49,"end":62,"href":"https://www.linkedin.com/in/katielefevre/","title":"","rel":"noopener","anchorType":0}]},{"name":"cd91","type":1,"text":"Since our previous posts regarding Content Engineering’s role in enabling search functionality within Netflix’s federated graph (the first post, where we identify the issue and elaborate on the indexing architecture, and the second post, where we detail how we facilitate…","markups":[{"type":3,"start":129,"end":143,"href":"https://netflixtechblog.com/how-netflix-content-engineering-makes-a-federated-graph-searchable-5c0c1c7d7eaf","title":"","rel":"","anchorType":0},{"type":3,"start":221,"end":236,"href":"https://netflixtechblog.com/how-netflix-content-engineering-makes-a-federated-graph-searchable-part-2-49348511c06c","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"ea33","startIndex":0}]},"isFullContent":false,"subtitle":"By Ricky Gardiner, Alex Hutter, Damir Svrtan and Katie Lefevre"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"da6805341642":{"id":"da6805341642","versionId":"50a8a60652d8","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Sequential Testing Keeps the World Streaming Netflix Part 2: Counting Processes","detectedLanguage":"en","latestVersion":"50a8a60652d8","latestPublishedVersion":"50a8a60652d8","hasUnpublishedEdits":false,"latestRev":1565,"createdAt":1709854205348,"updatedAt":1732943442013,"acceptedAt":0,"firstPublishedAt":1710766006360,"latestPublishedAt":1710786849481,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Michael Lindon, Chris Sanden, Vache Shirikian, Yanjun Liu, Minal Mishra, Martin Tingley","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*7DNyGA0x7r7msS7w1Zpvpw.jpeg","filter":"","backgroundSize":"","originalWidth":1024,"originalHeight":1024,"strategy":"resample","height":0,"width":0},"wordCount":1443,"imageCount":11,"readingTime":6.745283018867925,"subtitle":"Michael Lindon, Chris Sanden, Vache Shirikian, Yanjun Liu, Minal Mishra, Martin Tingley","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":129,"isBookmarked":false,"tags":[{"slug":"ab-testing","name":"Ab Testing","postCount":2036,"metadata":{"postCount":2036,"coverImage":{"id":"1*RgHl-5BLsacrDYk22QTXZw.png","originalWidth":779,"originalHeight":602,"isFeatured":true}},"type":"Tag"},{"slug":"devops","name":"DevOps","postCount":107653,"metadata":{"postCount":107653,"coverImage":{"id":"1*g-4vjwQDUVUMKf-xa03xJw.png","originalWidth":1279,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"software-development","name":"Software Development","postCount":346558,"metadata":{"postCount":346558,"coverImage":{"id":"1*3XS-8r8adjnRoNH4YjKXpw.png","originalWidth":2212,"originalHeight":1337,"isFeatured":true}},"type":"Tag"},{"slug":"statistics","name":"Statistics","postCount":34709,"metadata":{"postCount":34709,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://www.linkedin.com/in/liuyanjun/","alts":[],"httpStatus":429},{"url":"https://help.netflix.com/en/node/100573?q=3.1.18","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/martintingley/","alts":[],"httpStatus":999},{"url":"https://gist.github.com/michaellindon/5ce04c744d20755c3f653fbb58c2f4dd","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Poisson_point_process#Inhomogeneous_Poisson_point_process","alts":[],"httpStatus":200},{"url":"https://openreview.net/forum?id=a4zg0jiuVi","alts":[],"httpStatus":200},{"url":"https://en.wikipedia.org/wiki/Counting_process#:~:text=Counting%20processes%20deal%20with%20the,be%20a%20Markov%20counting%20process.","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/csanden/","alts":[],"httpStatus":999},{"url":"https://openreview.net/pdf?id=a4zg0jiuVi","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/minalmishra/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/michaelslindon/","alts":[{"type":3,"url":"https://www.linkedin.com/in/michaelslindon"},{"type":2,"url":"https://www.linkedin.com/in/michaelslindon"}],"httpStatus":200},{"url":"https://netflixtechblog.com/sps-the-pulse-of-netflix-streaming-ae4db0e05f8a","alts":[{"type":3,"url":"medium://p/ae4db0e05f8a"},{"type":2,"url":"medium://p/ae4db0e05f8a"}],"httpStatus":200},{"url":"https://netflixtechblog.com/lumen-custom-self-service-dashboarding-for-netflix-8c56b541548c","alts":[{"type":2,"url":"medium://p/8c56b541548c"},{"type":3,"url":"medium://p/8c56b541548c"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/vshirikian/","alts":[{"type":3,"url":"https://www.linkedin.com/in/vshirikian"},{"type":2,"url":"https://www.linkedin.com/in/vshirikian"}],"httpStatus":200},{"url":"https://medium.com/p/cba6c7ed49df","alts":[{"type":3,"url":"medium://p/cba6c7ed49df"},{"type":2,"url":"medium://p/cba6c7ed49df"}],"httpStatus":200},{"url":"https://netflixtechblog.com/sequential-a-b-testing-keeps-the-world-streaming-netflix-part-1-continuous-data-cba6c7ed49df","alts":[{"type":3,"url":"medium://p/cba6c7ed49df"},{"type":2,"url":"medium://p/cba6c7ed49df"}],"httpStatus":200}],"version":"0.3","generatedAt":1710786852269},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":507,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"sequential-testing-keeps-the-world-streaming-netflix-part-2-counting-processes","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"sequential-testing-keeps-the-world-streaming-netflix-part-2-counting-processes-da6805341642","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*7DNyGA0x7r7msS7w1Zpvpw.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},{"name":"7347","type":3,"text":"Sequential A/B Testing Keeps the World Streaming Netflix Part 2: Counting Processes","markups":[{"type":1,"start":0,"end":83}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Michael Lindon, Chris Sanden, Vache Shirikian, Yanjun Liu, Minal Mishra, Martin Tingley"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"d171efd5b606","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"7347","type":3,"text":"Sequential A/B Testing Keeps the World Streaming Netflix Part 2: Counting Processes","markups":[{"type":1,"start":0,"end":83}]},{"name":"ae32","type":1,"text":"Michael Lindon, Chris Sanden, Vache Shirikian, Yanjun Liu, Minal Mishra, Martin Tingley","markups":[{"type":3,"start":0,"end":14,"href":"https://www.linkedin.com/in/michaelslindon/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":16,"end":28,"href":"https://www.linkedin.com/in/csanden/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":30,"end":45,"href":"https://www.linkedin.com/in/vshirikian/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":47,"end":57,"href":"https://www.linkedin.com/in/liuyanjun/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":59,"end":71,"href":"https://www.linkedin.com/in/minalmishra/","title":"","rel":"noopener","anchorType":0},{"type":3,"start":73,"end":87,"href":"https://www.linkedin.com/in/martintingley/","title":"","rel":"noopener","anchorType":0}]},{"name":"f93f","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*7DNyGA0x7r7msS7w1Zpvpw.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},{"name":"10e4","type":1,"text":"Have you ever encountered a bug while streaming Netflix? Did your title stop unexpectedly, or not start at all? In the first installment of this blog series on sequential testing, we described our canary testing methodology for continuous…","markups":[{"type":3,"start":197,"end":265,"href":"https://medium.com/p/cba6c7ed49df","title":"","rel":"","anchorType":0},{"type":2,"start":255,"end":265}]}],"sections":[{"name":"86cf","startIndex":0}]},"isFullContent":false,"subtitle":"Michael Lindon, Chris Sanden, Vache Shirikian, Yanjun Liu, Minal Mishra, Martin Tingley"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"2d2e6b6d205d":{"id":"2d2e6b6d205d","versionId":"a69adbfe3a59","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Supporting Diverse ML Systems at Netflix","detectedLanguage":"en","latestVersion":"a69adbfe3a59","latestPublishedVersion":"a69adbfe3a59","hasUnpublishedEdits":false,"latestRev":390,"createdAt":1709772753438,"updatedAt":1732985409960,"acceptedAt":0,"firstPublishedAt":1709836174440,"latestPublishedAt":1709836174440,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"David J. Berg, Romain Cledat, Kayla Seeley, Shashank Srikanth, Chaoying Wang, Darin Yu","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*4hoAg4FX6oeua708alTMlA.png","filter":"","backgroundSize":"","originalWidth":2400,"originalHeight":1260,"strategy":"resample","height":0,"width":0},"wordCount":2884,"imageCount":7,"readingTime":11.93301886792453,"subtitle":"David J. Berg, Romain Cledat, Kayla Seeley, Shashank Srikanth, Chaoying Wang, Darin Yu","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":206,"isBookmarked":false,"tags":[{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"data-science","name":"Data Science","postCount":372673,"metadata":{"postCount":372673,"coverImage":{"id":"1*CX-BDIgw8kk42l5m4pU11g.png","originalWidth":1024,"originalHeight":1024}},"type":"Tag"},{"slug":"ai","name":"AI","postCount":481094,"metadata":{"postCount":481094,"coverImage":{"id":"1*uFbaWri2lJTX70PSGZGQeQ.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"machine-learning-platform","name":"Machine Learning Platform","postCount":43,"metadata":{"postCount":43,"coverImage":{"id":"1*6RCev0AFvpwmRAdAipWZOg.png","originalWidth":2166,"originalHeight":778,"isFeatured":true}},"type":"Tag"},{"slug":"human-centric-design","name":"Human Centric Design","postCount":69,"metadata":{"postCount":69,"coverImage":{"id":"1*e-okX0zOveR7Xdbr3Bosng.png","originalWidth":1068,"originalHeight":609,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":6,"links":{"entries":[{"url":"#a890","alts":[],"httpStatus":0},{"url":"https://arrow.apache.org/","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/scaling/tagging","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/event-triggering/flow-events","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/event-triggering/project-events","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/v/r/metaflow/basics#foreach","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/event-triggering/external-events","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/coordinating-larger-metaflow-projects","alts":[],"httpStatus":200},{"url":"https://streamlit.io/","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/scaling/dependencies","alts":[],"httpStatus":200},{"url":"https://metaflow.org","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/production/event-triggering","alts":[],"httpStatus":200},{"url":"https://docs.metaflow.org/scaling/remote-tasks/introduction","alts":[],"httpStatus":200},{"url":"https://pandas.pydata.org","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/dynamodb/","alts":[],"httpStatus":200},{"url":"https://outerbounds.com/blog/better-airflow-with-metaflow/","alts":[],"httpStatus":200},{"url":"https://outerbounds.com/blog/human-centric-data-science-on-kubernetes-with-metaflow/","alts":[],"httpStatus":200},{"url":"https://aws.amazon.com/elasticache/","alts":[],"httpStatus":200},{"url":"https://outerbounds.com/blog/metaflow-fast-data/","alts":[],"httpStatus":200},{"url":"https://outerbounds.com/blog/pypi-announcement/","alts":[],"httpStatus":200},{"url":"https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-deployment.html","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/seeleykayla/","alts":[],"httpStatus":999},{"url":"https://arrow.apache.org/docs/format/CDataInterface.html","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/david-j-berg/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/chaoying-wang/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/shashanksrikanth/","alts":[],"httpStatus":999},{"url":"http://chat.metaflow.org","alts":[],"httpStatus":200},{"url":"https://pola.rs","alts":[],"httpStatus":200},{"url":"https://www.slideshare.net/aspyker/herding-kats-netflixs-journey-to-kubernetes-public","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/zitingyu/","alts":[{"type":3,"url":"https://www.linkedin.com/in/zitingyu"},{"type":2,"url":"https://www.linkedin.com/in/zitingyu"}],"httpStatus":200},{"url":"https://netflixtechblog.com/titus-the-netflix-container-management-platform-is-now-open-source-f868c9fb5436","alts":[{"type":3,"url":"medium://p/f868c9fb5436"},{"type":2,"url":"medium://p/f868c9fb5436"}],"httpStatus":200},{"url":"https://netflixtechblog.com/kubernetes-and-kernel-panics-ed620b9c6225","alts":[{"type":3,"url":"medium://p/ed620b9c6225"},{"type":2,"url":"medium://p/ed620b9c6225"}],"httpStatus":200},{"url":"https://github.com/Netflix/metaflow-nflx-extensions","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/open-sourcing-metaflow-a-human-centric-framework-for-data-science-fa72e04a5d9","alts":[{"type":3,"url":"medium://p/fa72e04a5d9"},{"type":2,"url":"medium://p/fa72e04a5d9"}],"httpStatus":200},{"url":"https://netflixtechblog.com/supporting-content-decision-makers-with-machine-learning-995b7b76006f","alts":[{"type":3,"url":"medium://p/995b7b76006f"},{"type":2,"url":"medium://p/995b7b76006f"}],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=jMFMEk8jFu8","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=jMFMEk8jFu8&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=jMFMEk8jFu8&feature=applinks"}],"httpStatus":200},{"url":"https://www.youtube.com/watch?v=sBM5cSBGZS4","alts":[{"type":3,"url":"vnd.youtube://www.youtube.com/watch?v=sBM5cSBGZS4&feature=applinks"},{"type":2,"url":"vnd.youtube://www.youtube.com/watch?v=sBM5cSBGZS4&feature=applinks"}],"httpStatus":200},{"url":"https://netflixtechblog.com/orchestrating-data-ml-workflows-at-scale-with-netflix-maestro-aaa2b41b800c","alts":[{"type":3,"url":"medium://p/aaa2b41b800c"},{"type":2,"url":"medium://p/aaa2b41b800c"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/romain-cledat-4a211a5/","alts":[{"type":3,"url":"https://www.linkedin.com/in/romain-cledat-4a211a5"},{"type":2,"url":"https://www.linkedin.com/in/romain-cledat-4a211a5"}],"httpStatus":200},{"url":"https://github.com/Netflix/metaflow-extensions-template","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/auto-scaling-production-services-on-titus-1f3cd49f5cd7","alts":[{"type":3,"url":"medium://p/1f3cd49f5cd7"},{"type":2,"url":"medium://p/1f3cd49f5cd7"}],"httpStatus":200},{"url":"https://netflixtechblog.com/rebuilding-netflix-video-processing-pipeline-with-microservices-4e5e6310e359","alts":[{"type":2,"url":"medium://p/4e5e6310e359"},{"type":3,"url":"medium://p/4e5e6310e359"}],"httpStatus":200},{"url":"https://github.com/apache/arrow-nanoarrow","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/unbundling-data-science-workflows-with-metaflow-and-aws-step-functions-d454780c6280","alts":[{"type":3,"url":"medium://p/d454780c6280"},{"type":2,"url":"medium://p/d454780c6280"}],"httpStatus":200},{"url":"https://netflixtechblog.com/artwork-personalization-c589f074ad76","alts":[{"type":3,"url":"medium://p/c589f074ad76"},{"type":2,"url":"medium://p/c589f074ad76"}],"httpStatus":200},{"url":"https://netflixtechblog.com/evolving-container-security-with-linux-user-namespaces-afbe3308c082","alts":[{"type":2,"url":"medium://p/afbe3308c082"},{"type":3,"url":"medium://p/afbe3308c082"}],"httpStatus":200},{"url":"https://netflixtechblog.com/evolving-from-rule-based-classifier-machine-learning-powered-auto-remediation-in-netflix-data-039d5efd115b","alts":[{"type":3,"url":"medium://p/039d5efd115b"},{"type":2,"url":"medium://p/039d5efd115b"}],"httpStatus":200},{"url":"https://netflixtechblog.com/predictive-cpu-isolation-of-containers-at-netflix-91f014d856c7","alts":[{"type":3,"url":"medium://p/91f014d856c7"},{"type":2,"url":"medium://p/91f014d856c7"}],"httpStatus":200},{"url":"https://netflixtechblog.com/scaling-media-machine-learning-at-netflix-f19b400243","alts":[{"type":3,"url":"medium://p/f19b400243"},{"type":2,"url":"medium://p/f19b400243"}],"httpStatus":200},{"url":"https://netflixtechblog.com/new-series-creating-media-with-machine-learning-5067ac110bcd","alts":[{"type":3,"url":"medium://p/5067ac110bcd"},{"type":2,"url":"medium://p/5067ac110bcd"}],"httpStatus":200}],"version":"0.3","generatedAt":1709836175557},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":780,"sectionCount":1,"readingList":0,"topics":[{"topicId":"ae5d4995e225","slug":"data-science","createdAt":1493923906289,"deletedAt":0,"image":{"id":"1*NHWOEki_ncCX-xzbKtkEWw@2x.jpeg","originalWidth":5760,"originalHeight":3840},"name":"Data Science","description":"Query this.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Data Science News and Articles — Medium","type":"Topic"},{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"supporting-diverse-ml-systems-at-netflix","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"supporting-diverse-ml-systems-at-netflix-2d2e6b6d205d","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*4hoAg4FX6oeua708alTMlA.png","originalWidth":2400,"originalHeight":1260,"isFeatured":true}},{"name":"f371","type":3,"text":"Supporting Diverse ML Systems at Netflix","markups":[],"alignment":1},{"name":"a3f4","type":1,"text":"David J. Berg, Romain Cledat, Kayla Seeley, Shashank Srikanth, Chaoying Wang, Darin Yu","markups":[{"type":3,"start":0,"end":13,"href":"https://www.linkedin.com/in/david-j-berg/","title":"","rel":"","anchorType":0},{"type":3,"start":15,"end":28,"href":"https://www.linkedin.com/in/romain-cledat-4a211a5/","title":"","rel":"","anchorType":0},{"type":3,"start":30,"end":42,"href":"https://www.linkedin.com/in/seeleykayla/","title":"","rel":"","anchorType":0},{"type":3,"start":44,"end":61,"href":"https://www.linkedin.com/in/shashanksrikanth/","title":"","rel":"","anchorType":0},{"type":3,"start":63,"end":76,"href":"https://www.linkedin.com/in/chaoying-wang/","title":"","rel":"","anchorType":0},{"type":3,"start":78,"end":86,"href":"https://www.linkedin.com/in/zitingyu/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":86}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"David J. Berg, Romain Cledat, Kayla Seeley, Shashank Srikanth, Chaoying Wang, Darin Yu"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"5e65fa7bdf9d","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"Supporting Diverse ML Systems : Netflix Tech Blog","previewContent2":{"bodyModel":{"paragraphs":[{"name":"f371","type":3,"text":"Supporting Diverse ML Systems at Netflix","markups":[]},{"name":"a3f4","type":1,"text":"David J. Berg, Romain Cledat, Kayla Seeley, Shashank Srikanth, Chaoying Wang, Darin Yu","markups":[{"type":3,"start":0,"end":13,"href":"https://www.linkedin.com/in/david-j-berg/","title":"","rel":"","anchorType":0},{"type":3,"start":15,"end":28,"href":"https://www.linkedin.com/in/romain-cledat-4a211a5/","title":"","rel":"","anchorType":0},{"type":3,"start":30,"end":42,"href":"https://www.linkedin.com/in/seeleykayla/","title":"","rel":"","anchorType":0},{"type":3,"start":44,"end":61,"href":"https://www.linkedin.com/in/shashanksrikanth/","title":"","rel":"","anchorType":0},{"type":3,"start":63,"end":76,"href":"https://www.linkedin.com/in/chaoying-wang/","title":"","rel":"","anchorType":0},{"type":3,"start":78,"end":86,"href":"https://www.linkedin.com/in/zitingyu/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":86}]},{"name":"9c92","type":1,"text":"Netflix uses data science and machine learning across all facets of the company, powering a wide range of business applications from our internal infrastructure and content demand modeling to media understanding. The Machine Learning Platform (MLP) team…","markups":[{"type":3,"start":133,"end":160,"href":"https://netflixtechblog.com/evolving-from-rule-based-classifier-machine-learning-powered-auto-remediation-in-netflix-data-039d5efd115b","title":"","rel":"","anchorType":0},{"type":3,"start":165,"end":188,"href":"https://netflixtechblog.com/supporting-content-decision-makers-with-machine-learning-995b7b76006f","title":"","rel":"","anchorType":0},{"type":3,"start":192,"end":211,"href":"https://netflixtechblog.com/scaling-media-machine-learning-at-netflix-f19b400243","title":"","rel":"","anchorType":0},{"type":3,"start":310,"end":318,"href":"https://metaflow.org","title":"","rel":"","anchorType":0}]}],"sections":[{"name":"5e86","startIndex":0}]},"isFullContent":false,"subtitle":"David J. Berg, Romain Cledat, Kayla Seeley, Shashank Srikanth, Chaoying Wang, Darin Yu"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"256629c9386b":{"id":"256629c9386b","versionId":"d0151c687cfc","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Bending pause times to your will with Generational ZGC","detectedLanguage":"en","latestVersion":"d0151c687cfc","latestPublishedVersion":"d0151c687cfc","hasUnpublishedEdits":false,"latestRev":416,"createdAt":1709682482632,"updatedAt":1732989766979,"acceptedAt":0,"firstPublishedAt":1709688908587,"latestPublishedAt":1710021091674,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"The surprising and not so surprising benefits of generations in the Z Garbage Collector.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"0*GuEZ-RMhzNnYgLQd","filter":"","backgroundSize":"","originalWidth":1600,"originalHeight":900,"strategy":"resample","height":0,"width":0},"wordCount":1141,"imageCount":5,"readingTime":5.138993710691824,"subtitle":"The surprising and not so surprising benefits of generations in the Z Garbage Collector.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":221,"isBookmarked":false,"tags":[{"slug":"java","name":"Java","postCount":94583,"metadata":{"postCount":94583,"coverImage":{"id":"1*54DRkD5FtNRnWBeziu0K8Q.jpeg","originalWidth":886,"originalHeight":590,"isFeatured":true}},"type":"Tag"},{"slug":"jvm","name":"JVM","postCount":2301,"metadata":{"postCount":2301,"coverImage":{"id":"0*AeGt1bMUxm5A6OsQ.jpg","originalWidth":804,"originalHeight":689,"isFeatured":true}},"type":"Tag"},{"slug":"garbage-collection","name":"Garbage Collection","postCount":1395,"metadata":{"postCount":1395,"coverImage":{"id":"1*3Rt3z8YELFFuTQ1XN6SLPQ.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":7,"links":{"entries":[{"url":"https://netflix.github.io/dgs/","alts":[],"httpStatus":200},{"url":"https://hollow.how/)","alts":[],"httpStatus":404},{"url":"https://github.com/Netflix/hollow/commit/4f21ab593543bb622d9ccea2f8e6295eae5e8080","alts":[],"httpStatus":200},{"url":"https://docs.oracle.com/en/java/javase/21/gctuning/z-garbage-collector.html","alts":[],"httpStatus":200},{"url":"https://shipilev.net/jvm/anatomy-quarks/2-transparent-huge-pages/","alts":[],"httpStatus":200},{"url":"https://www.infoq.com/presentations/netflix-java/","alts":[],"httpStatus":200},{"url":"https://shipilev.net/jvm/anatomy-quarks/23-compressed-references/","alts":[],"httpStatus":200},{"url":"https://youtu.be/YyXjC68l8mw?t=816","alts":[{"type":2,"url":"vnd.youtube://www.youtube.com/watch?t=816&v=YyXjC68l8mw&feature=youtu.be&feature=applinks"},{"type":3,"url":"vnd.youtube://www.youtube.com/watch?t=816&v=YyXjC68l8mw&feature=youtu.be&feature=applinks"}],"httpStatus":200},{"url":"https://bugs.openjdk.org/browse/JDK-8321178","alts":[],"httpStatus":0}],"version":"0.3","generatedAt":1710021101987},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":517,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"bending-pause-times-to-your-will-with-generational-zgc","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"bending-pause-times-to-your-will-with-generational-zgc-256629c9386b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"0*GuEZ-RMhzNnYgLQd","originalWidth":1600,"originalHeight":900,"isFeatured":true}},{"name":"ddbd","type":3,"text":"Bending pause times to your will with Generational ZGC","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"The surprising and not so surprising benefits of generations in the Z Garbage Collector."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"ddbd","type":3,"text":"Bending pause times to your will with Generational ZGC","markups":[]},{"name":"6306","type":1,"text":"The surprising and not so surprising benefits of generations in the Z Garbage Collector.","markups":[{"type":2,"start":0,"end":88}]},{"name":"7593","type":1,"text":"By Danny Thomas, JVM Ecosystem Team","markups":[]},{"name":"92f2","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"0*GuEZ-RMhzNnYgLQd","originalWidth":1600,"originalHeight":900,"isFeatured":true}},{"name":"5d9e","type":1,"text":"The latest long term support release of the JDK delivers generational support for the Z Garbage Collector. Netflix has switched by default from G1 to Generational ZGC on JDK 21…","markups":[{"type":3,"start":86,"end":105,"href":"https://docs.oracle.com/en/java/javase/21/gctuning/z-garbage-collector.html","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"f3f4","startIndex":0}]},"isFullContent":false,"subtitle":"The surprising and not so surprising benefits of generations in the Z Garbage Collector."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":false,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"039d5efd115b":{"id":"039d5efd115b","versionId":"d98d4004debb","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Evolving from Rule-based Classifier: Machine Learning Powered Auto Remediation in Netflix Data…","detectedLanguage":"en","latestVersion":"d98d4004debb","latestPublishedVersion":"d98d4004debb","hasUnpublishedEdits":false,"latestRev":480,"createdAt":1709334458573,"updatedAt":1733001801374,"acceptedAt":0,"firstPublishedAt":1709575314655,"latestPublishedAt":1709575314655,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"by Binbing Hou, Stephanie Vezich Tamayo, Xiao Chen, Liang Tian, Troy Ristow, Haoyuan Wang, Snehal Chennuru, Pawan Dixit","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*2eENd1mhwyGpMWNccEwqlQ.png","filter":"","backgroundSize":"","originalWidth":1380,"originalHeight":1176,"strategy":"resample","height":0,"width":0},"wordCount":3124,"imageCount":3,"readingTime":12.33867924528302,"subtitle":"by Binbing Hou, Stephanie Vezich Tamayo, Xiao Chen, Liang Tian, Troy Ristow, Haoyuan Wang, Snehal Chennuru, Pawan Dixit","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":161,"isBookmarked":false,"tags":[{"slug":"operational-efficiency","name":"Operational Efficiency","postCount":423,"metadata":{"postCount":423,"coverImage":{"id":"0*6ZFGAh3wsS2QUETw","originalWidth":5184,"originalHeight":3888,"isFeatured":true,"alt":"Scrabble tiles spelling out PLAN and MAKE with MAKE intersecting the A in PLAN, symbolizing the strategic planning and action steps emphasized in business plan development.","unsplashPhotoId":"cBY2CtqQ6YI"}},"type":"Tag"},{"slug":"rule-based-classification","name":"Rule Based Classification","postCount":24,"metadata":{"postCount":24,"coverImage":{"id":"1*2eENd1mhwyGpMWNccEwqlQ.png","originalWidth":1380,"originalHeight":1176,"isFeatured":true}},"type":"Tag"},{"slug":"machine-learning","name":"Machine Learning","postCount":371165,"metadata":{"postCount":371165,"coverImage":{"id":"1*stJB7yH6GfpLKkvlH3K6YQ.png","originalWidth":2560,"originalHeight":1440,"isFeatured":true}},"type":"Tag"},{"slug":"performance","name":"Performance","postCount":30664,"metadata":{"postCount":30664,"coverImage":{"id":"1*5fUjgQy2V26QX23Ir1GiDA.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"cost-efficiency","name":"Cost Efficiency","postCount":209,"metadata":{"postCount":209,"coverImage":{"id":"1*TLxBwxzbQHCoOMxjEUX4lg.png","originalWidth":1358,"originalHeight":758,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":12,"links":{"entries":[{"url":"https://metaflow.org/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/michael-sachs-b2453b/overlay/about-this-profile/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/stephanievezich/overlay/about-this-profile/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/pawan-dixit-b4307b2/overlay/about-this-profile/","alts":[],"httpStatus":404},{"url":"https://www.linkedin.com/in/snehalchennuru/overlay/about-this-profile/","alts":[],"httpStatus":404},{"url":"https://www.linkedin.com/in/binbing-hou/overlay/about-this-profile/","alts":[],"httpStatus":404},{"url":"https://www.linkedin.com/in/liangtian/overlay/about-this-profile/","alts":[],"httpStatus":404},{"url":"https://www.linkedin.com/in/samarthjain11/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/haoyuanwang/overlay/about-this-profile/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/chenxiao000/overlay/about-this-profile/","alts":[],"httpStatus":404},{"url":"https://www.linkedin.com/in/fzsiddiqi/overlay/about-this-profile/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/julianjaffe/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/batul-shajapurwala-3274b863/","alts":[],"httpStatus":999},{"url":"https://ax.dev/","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/troy-ristow-4899b49/overlay/about-this-profile/","alts":[],"httpStatus":999},{"url":"https://www.linkedin.com/in/jzhuge/","alts":[],"httpStatus":429},{"url":"https://netflixtechblog.com/orchestrating-data-ml-workflows-at-scale-with-netflix-maestro-aaa2b41b800c","alts":[{"type":3,"url":"medium://p/aaa2b41b800c"},{"type":2,"url":"medium://p/aaa2b41b800c"}],"httpStatus":200},{"url":"https://www.linkedin.com/in/jheua/","alts":[],"httpStatus":999},{"url":"https://github.com/facebook/Ax/issues/810","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/holdenkarau/","alts":[{"type":3,"url":"https://www.linkedin.com/in/holdenkarau"},{"type":2,"url":"https://www.linkedin.com/in/holdenkarau"}],"httpStatus":200}],"version":"0.3","generatedAt":1709575316042},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":632,"sectionCount":1,"readingList":0,"topics":[{"topicId":"1eca0103fff3","slug":"machine-learning","createdAt":1534449726145,"deletedAt":0,"image":{"id":"1*gFJS3amhZEg_z39D5EErVg@2x.png","originalWidth":2800,"originalHeight":1750},"name":"Machine Learning","description":"Teaching the learners.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Machine Learning News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"evolving-from-rule-based-classifier-machine-learning-powered-auto-remediation-in-netflix-data","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"evolving-from-rule-based-classifier-machine-learning-powered-auto-remediation-in-netflix-data-039d5efd115b","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*2eENd1mhwyGpMWNccEwqlQ.png","originalWidth":1380,"originalHeight":1176,"isFeatured":true}},{"name":"76c4","type":3,"text":"Evolving from Rule-based Classifier: Machine Learning Powered Auto Remediation in Netflix Data Platform","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"by Binbing Hou, Stephanie Vezich Tamayo, Xiao Chen, Liang Tian, Troy Ristow, Haoyuan Wang, Snehal Chennuru, Pawan Dixit"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"43f064acf3bf","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":1,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"76c4","type":3,"text":"Evolving from Rule-based Classifier: Machine Learning Powered Auto Remediation in Netflix Data Platform","markups":[]},{"name":"6783","type":1,"text":"by Binbing Hou, Stephanie Vezich Tamayo, Xiao Chen, Liang Tian, Troy Ristow, Haoyuan Wang, Snehal Chennuru, Pawan Dixit","markups":[{"type":3,"start":3,"end":14,"href":"https://www.linkedin.com/in/binbing-hou/overlay/about-this-profile/","title":"","rel":"","anchorType":0},{"type":3,"start":16,"end":39,"href":"https://www.linkedin.com/in/stephanievezich/overlay/about-this-profile/","title":"","rel":"","anchorType":0},{"type":3,"start":41,"end":50,"href":"https://www.linkedin.com/in/chenxiao000/overlay/about-this-profile/","title":"","rel":"","anchorType":0},{"type":3,"start":52,"end":62,"href":"https://www.linkedin.com/in/liangtian/overlay/about-this-profile/","title":"","rel":"","anchorType":0},{"type":3,"start":64,"end":75,"href":"https://www.linkedin.com/in/troy-ristow-4899b49/overlay/about-this-profile/","title":"","rel":"","anchorType":0},{"type":3,"start":77,"end":89,"href":"https://www.linkedin.com/in/haoyuanwang/overlay/about-this-profile/","title":"","rel":"","anchorType":0},{"type":3,"start":91,"end":106,"href":"https://www.linkedin.com/in/snehalchennuru/overlay/about-this-profile/","title":"","rel":"","anchorType":0},{"type":3,"start":108,"end":119,"href":"https://www.linkedin.com/in/pawan-dixit-b4307b2/overlay/about-this-profile/","title":"","rel":"","anchorType":0}]},{"name":"a95f","type":1,"text":"This is the first of the series of our work at Netflix on leveraging data insights and Machine Learning (ML) to improve the operational automation around the performance and cost efficiency of…","markups":[{"type":2,"start":0,"end":984}]}],"sections":[{"name":"09c1","startIndex":0}]},"isFullContent":false,"subtitle":"by Binbing Hou, Stephanie Vezich Tamayo, Xiao Chen, Liang Tian, Troy Ristow, Haoyuan Wang, Snehal Chennuru, Pawan Dixit"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"6a727c1ae2e5":{"id":"6a727c1ae2e5","versionId":"bc7b9db1dc57","creatorId":"c3aeaf49d8a4","homeCollectionId":"2615bd06b42e","title":"Announcing bpftop: Streamlining eBPF performance optimization","detectedLanguage":"en","latestVersion":"bc7b9db1dc57","latestPublishedVersion":"bc7b9db1dc57","hasUnpublishedEdits":false,"latestRev":296,"createdAt":1708491171549,"updatedAt":1724710627996,"acceptedAt":0,"firstPublishedAt":1708965097695,"latestPublishedAt":1709006917001,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"By Jose Fernandez","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*hLvLcNDb6RljixhN8la-lg.gif","filter":"","backgroundSize":"","originalWidth":1231,"originalHeight":725,"strategy":"resample","height":0,"width":0},"wordCount":332,"imageCount":2,"readingTime":1.6361635220125785,"subtitle":"By Jose Fernandez","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":151,"isBookmarked":false,"tags":[{"slug":"ebpf","name":"Ebpf","postCount":386,"metadata":{"postCount":386,"coverImage":{"id":"1*6bapyclfXZPsUIaXFM-xaQ.png","originalWidth":1778,"originalHeight":1000,"isFeatured":true,"focusPercentX":48,"focusPercentY":50}},"type":"Tag"},{"slug":"performance","name":"Performance","postCount":30664,"metadata":{"postCount":30664,"coverImage":{"id":"1*5fUjgQy2V26QX23Ir1GiDA.jpeg","originalWidth":1920,"originalHeight":1080,"isFeatured":true}},"type":"Tag"},{"slug":"observability","name":"Observability","postCount":4958,"metadata":{"postCount":4958,"coverImage":{"id":"1*ZOBAjq5TTNmPCdHcSYserg.png","originalWidth":686,"originalHeight":260,"isFeatured":true}},"type":"Tag"},{"slug":"linux","name":"Linux","postCount":54654,"metadata":{"postCount":54654,"coverImage":{"id":"1*uO72RkOaFGdcK9HKvuZHlw.png","originalWidth":1280,"originalHeight":720,"isFeatured":true}},"type":"Tag"},{"slug":"rust","name":"Rust","postCount":12288,"metadata":{"postCount":12288,"coverImage":{"id":"1*E04qP_LPcfYcGxRYrnDnyw.jpeg","originalWidth":1024,"originalHeight":768,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":4,"links":{"entries":[{"url":"https://github.com/Netflix/bpftop","alts":[],"httpStatus":200},{"url":"https://github.com/libbpf/libbpf-rs","alts":[],"httpStatus":200},{"url":"https://www.linkedin.com/in/josefernandezmn/","alts":[{"type":3,"url":"https://www.linkedin.com/in/josefernandezmn"},{"type":2,"url":"https://www.linkedin.com/in/josefernandezmn"}],"httpStatus":200},{"url":"https://github.com/ratatui-org/ratatui","alts":[],"httpStatus":200},{"url":"https://netflixtechblog.com/how-netflix-uses-ebpf-flow-logs-at-scale-for-network-insight-e3ea997dca96","alts":[{"type":3,"url":"medium://p/e3ea997dca96"},{"type":2,"url":"medium://p/e3ea997dca96"}],"httpStatus":200},{"url":"https://netflixtechblog.com/extending-vector-with-ebpf-to-inspect-host-and-container-performance-5da3af4c584b","alts":[{"type":3,"url":"medium://p/5da3af4c584b"},{"type":2,"url":"medium://p/5da3af4c584b"}],"httpStatus":200},{"url":"https://elixir.bootlin.com/linux/v6.6.16/source/include/uapi/linux/bpf.h#L792","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1709006917831},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":422,"sectionCount":1,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"announcing-bpftop-streamlining-ebpf-performance-optimization","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"announcing-bpftop-streamlining-ebpf-performance-optimization-6a727c1ae2e5","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*hLvLcNDb6RljixhN8la-lg.gif","originalWidth":1231,"originalHeight":725,"isFeatured":true}},{"name":"fb45","type":3,"text":"Announcing bpftop: Streamlining eBPF performance optimization","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"By Jose Fernandez"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"2615bd06b42e","isNewsletter":false,"newsletterId":"585a128381ac","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":4,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"fb45","type":3,"text":"Announcing bpftop: Streamlining eBPF performance optimization","markups":[]},{"name":"976a","type":1,"text":"By Jose Fernandez","markups":[{"type":3,"start":3,"end":17,"href":"https://www.linkedin.com/in/josefernandezmn/","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":17}]},{"name":"5c31","type":1,"text":"Today, we are thrilled to announce the release of bpftop, a command-line tool designed to streamline the performance optimization and monitoring of eBPF programs. As Netflix increasingly adopts eBPF [1, 2], applying the same rigor to these applications as we do to other managed services is imperative…","markups":[{"type":3,"start":50,"end":56,"href":"https://github.com/Netflix/bpftop","title":"","rel":"noopener","anchorType":0},{"type":3,"start":200,"end":201,"href":"https://netflixtechblog.com/extending-vector-with-ebpf-to-inspect-host-and-container-performance-5da3af4c584b","title":"","rel":"noopener","anchorType":0},{"type":3,"start":203,"end":204,"href":"https://netflixtechblog.com/how-netflix-uses-ebpf-flow-logs-at-scale-for-network-insight-e3ea997dca96","title":"","rel":"noopener","anchorType":0}]}],"sections":[{"name":"0950","startIndex":0}]},"isFullContent":false,"subtitle":"By Jose Fernandez"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/2615bd06b42e/stream","next":{"to":"1708965097695","ignoredIds":[],"page":5}},"collection":{"id":"2615bd06b42e","name":"Netflix TechBlog","slug":"netflix-techblog","tags":["NETFLIX","ENGINEERING","CULTURE","TECHNOLOGY","PRODUCT"],"creatorId":"c3aeaf49d8a4","description":"Learn about Netflix’s world class engineering efforts, company culture, product developments and more.","shortDescription":"Learn about Netflix’s world class engineering efforts…","image":{"imageId":"1*ty4NvNrGg4ReETxqU2N3Og.png","filter":"","backgroundSize":"","originalWidth":400,"originalHeight":300,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":159131,"activeAt":1739582000266},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*XMfuQcaI93EqrkVcAyVsTw.png","filter":"","backgroundSize":"","originalWidth":2802,"originalHeight":684,"strategy":"resample","height":0,"width":0},"domain":"netflixtechblog.com","sections":[{"type":2,"collectionHeaderMetadata":{"backgroundImage":{},"logoImage":{"id":"1*rOPLUJ3W6FUA3rO1U1IeuA@2x.png","originalWidth":2000,"originalHeight":608,"alt":"Netflix TechBlog"},"alignment":2,"layout":5}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":1,"postIds":["e2b67c88c9fb"]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":2,"postIds":["19ea916be1ed","e67f0aa82183"],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":3,"postIds":["4f1f53b4ab0f","d2fb8e9ba1c6","d761cfd551ee"],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":["f2a142955f83","c88c586629eb","8d0c45eb66b2","faa017b4653d","31552f6326f8","1ea8a0a11b30","b468bc0ff658","64b1f4b3bbdd","ac15cada49ef","64c786c2a3ac","3052540e231d","ee13a06f9c78","e735e6ce8f7d","6b4d4410b88f","8ebdda0b2db4","fd78328ee0bb","422d6218fdf1","946b9b3cd300","222ac5d23576","da6805341642","2d2e6b6d205d","256629c9386b","039d5efd115b","6a727c1ae2e5"],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":24,"postIds":[],"sectionHeader":"Latest"}}],"tintColor":"#FF221E1F","lightText":true,"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF898384","point":0},{"color":"#FF7F797A","point":0.1},{"color":"#FF767071","point":0.2},{"color":"#FF6C6768","point":0.3},{"color":"#FF615D5E","point":0.4},{"color":"#FF575354","point":0.5},{"color":"#FF4C4949","point":0.6},{"color":"#FF413E3E","point":0.7},{"color":"#FF353333","point":0.8},{"color":"#FF282727","point":0.9},{"color":"#FF1B1A1A","point":1}],"backgroundColor":"#FFFFFFFF"},"tintBackgroundSpectrum":{"colorPoints":[{"color":"#FF221E1F","point":0},{"color":"#FF403B3C","point":0.1},{"color":"#FF5A5556","point":0.2},{"color":"#FF726D6E","point":0.3},{"color":"#FF898485","point":0.4},{"color":"#FF9F9A9A","point":0.5},{"color":"#FFB4AFAF","point":0.6},{"color":"#FFC8C3C3","point":0.7},{"color":"#FFDBD7D7","point":0.8},{"color":"#FFEEEAEA","point":0.9},{"color":"#FFFFFDFD","point":1}],"backgroundColor":"#FF221E1F"},"highlightSpectrum":{"colorPoints":[{"color":"#FFF6F1F1","point":0},{"color":"#FFF4EFEF","point":0.1},{"color":"#FFF2EDED","point":0.2},{"color":"#FFF1EBEC","point":0.3},{"color":"#FFEFE9EA","point":0.4},{"color":"#FFEDE8E8","point":0.5},{"color":"#FFECE6E6","point":0.6},{"color":"#FFEAE4E4","point":0.7},{"color":"#FFE8E2E2","point":0.8},{"color":"#FFE6E0E0","point":0.9},{"color":"#FFE5DEDE","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FFA19A9C","point":0},{"color":"#FFAAA3A4","point":0.1},{"color":"#FFB2ACAD","point":0.2},{"color":"#FFBAB4B5","point":0.3},{"color":"#FFC3BDBD","point":0.4},{"color":"#FFCBC5C5","point":0.5},{"color":"#FFD3CDCE","point":0.6},{"color":"#FFDAD5D6","point":0.7},{"color":"#FFE2DDDD","point":0.8},{"color":"#FFEAE5E5","point":0.9},{"color":"#FFF1EDED","point":1}],"backgroundColor":"#FF000000"}},"navItems":[],"colorBehavior":2,"googleAnalyticsId":"UA-156554426-1","collectionFeatures":[25],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"cloakedAt":0,"header":{"backgroundImage":{},"logoImage":{"id":"1*rOPLUJ3W6FUA3rO1U1IeuA@2x.png","originalWidth":2000,"originalHeight":608,"alt":"Netflix TechBlog"},"alignment":2,"layout":5},"subscriberCount":159131,"tagline":"Learn about Netflix’s world class engineering efforts…","polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092817565,"type":"Collection"},"header":{"backgroundImage":{},"logoImage":{"id":"1*rOPLUJ3W6FUA3rO1U1IeuA@2x.png","originalWidth":2000,"originalHeight":608,"alt":"Netflix TechBlog"},"alignment":2,"layout":5},"streamItems":[{"createdAt":1739781505147,"randomId":"53a6234700c0","section":{"items":[{"post":{"postId":"e2b67c88c9fb"},"itemType":"post"}],"layout":4},"itemType":"section","type":"StreamItem"},{"createdAt":1739781505147,"randomId":"e9ef515436c4","section":{"items":[{"post":{"postId":"19ea916be1ed"},"itemType":"post"},{"post":{"postId":"e67f0aa82183"},"itemType":"post"}],"layout":4,"heading":{"fallbackTitle":"Latest","headingBasic":{"title":"Latest"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"},{"createdAt":1739781505147,"randomId":"0746aaae05e9","section":{"items":[{"post":{"postId":"4f1f53b4ab0f"},"itemType":"post"},{"post":{"postId":"d2fb8e9ba1c6"},"itemType":"post"},{"post":{"postId":"d761cfd551ee"},"itemType":"post"}],"layout":4,"heading":{"fallbackTitle":"Latest","headingBasic":{"title":"Latest"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"},{"createdAt":1739781505147,"randomId":"80a69fe27dd7","section":{"items":[{"post":{"postId":"f2a142955f83"},"itemType":"post"},{"post":{"postId":"c88c586629eb"},"itemType":"post"},{"post":{"postId":"8d0c45eb66b2"},"itemType":"post"},{"post":{"postId":"faa017b4653d"},"itemType":"post"},{"post":{"postId":"31552f6326f8"},"itemType":"post"},{"post":{"postId":"1ea8a0a11b30"},"itemType":"post"},{"post":{"postId":"b468bc0ff658"},"itemType":"post"},{"post":{"postId":"64b1f4b3bbdd"},"itemType":"post"},{"post":{"postId":"ac15cada49ef"},"itemType":"post"},{"post":{"postId":"64c786c2a3ac"},"itemType":"post"},{"post":{"postId":"3052540e231d"},"itemType":"post"},{"post":{"postId":"ee13a06f9c78"},"itemType":"post"},{"post":{"postId":"e735e6ce8f7d"},"itemType":"post"},{"post":{"postId":"6b4d4410b88f"},"itemType":"post"},{"post":{"postId":"8ebdda0b2db4"},"itemType":"post"},{"post":{"postId":"fd78328ee0bb"},"itemType":"post"},{"post":{"postId":"422d6218fdf1"},"itemType":"post"},{"post":{"postId":"946b9b3cd300"},"itemType":"post"},{"post":{"postId":"222ac5d23576"},"itemType":"post"},{"post":{"postId":"da6805341642"},"itemType":"post"},{"post":{"postId":"2d2e6b6d205d"},"itemType":"post"},{"post":{"postId":"256629c9386b"},"itemType":"post"},{"post":{"postId":"039d5efd115b"},"itemType":"post"},{"post":{"postId":"6a727c1ae2e5"},"itemType":"post"}],"layout":4,"heading":{"fallbackTitle":"Latest","headingBasic":{"title":"Latest"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"}]}) // ]]></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10