Files
nexus/sreweekly/articles/454/02-the-case-for-shared-storage.html
2026-09-12 17:23:01 +08:00

578 lines
149 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><!-- Last Published: Wed Sep 02 2026 15:21:56 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="www.warpstream.com" data-wf-page="683882630fceea3de6f5774a" data-wf-site="683882630fceea3de6f5776a" data-wf-intellimize-customer-id="117369721" lang="en" data-wf-collection="683882630fceea3de6f57778" data-wf-item-slug="the-case-for-shared-storage"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>The Case for Shared Storage - WarpStream</title><meta content="Shared-nothing made sense when storage was slow, but shared storage flips that tradeoff. The architectural case for building Kafka directly on object storage." name="description"/><meta content="The Case for Shared Storage" property="og:title"/><meta content="In this post, I’ll start off with a brief overview of “shared nothing” vs. “shared storage” architectures in general. This discussion will be a bit abstract and high-level, but the goal is to share with you some of the guiding philosophy that ultimately led to WarpStream’s architecture." property="og:description"/><meta content="https://cdn.prod.website-files.com/683882630fceea3de6f57776/6a971ff5a9207262b338afa5_6a971f5ba9207262b338571a_The%2520Case%2520for%2520Shared%2520Storage.png" property="og:image"/><meta content="The Case for Shared Storage" name="twitter:title"/><meta content="In this post, I’ll start off with a brief overview of “shared nothing” vs. “shared storage” architectures in general. This discussion will be a bit abstract and high-level, but the goal is to share with you some of the guiding philosophy that ultimately led to WarpStream’s architecture." name="twitter:description"/><meta content="https://cdn.prod.website-files.com/683882630fceea3de6f57776/6a971ff5a9207262b338afa5_6a971f5ba9207262b338571a_The%2520Case%2520for%2520Shared%2520Storage.png" name="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><link href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/css/warbd8f8uhb.shared.be08c4ab5.min.css" rel="stylesheet" type="text/css" integrity="sha384-vgjEq11hR6opnXX7duXfRbdU2ZfatA8qt4vC5mg/hTRB1iV1qB/ZuWqVCycmnlcI" crossorigin="anonymous"/><script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script><link href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f577d4_Group%20236.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f577cf_Group%20237.png" rel="apple-touch-icon"/><link href="https://www.warpstream.com/blog/the-case-for-shared-storage" rel="canonical"/><style>.anti-flicker, .anti-flicker * {visibility: hidden !important; opacity: 0 !important;}</style><style>[data-wf-hidden-variation], [data-wf-hidden-variation] * {
display: none !important;
}</style><link href="rss.xml" rel="alternate" title="RSS Feed" type="application/rss+xml"/><!-- OneTrust Cookies Consent Notice start for warpstream.com -->
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="019dac0b-c1bd-7f2c-b456-8a5320d13577"></script>
<script type="text/javascript">
function OptanonWrapper() { }
</script>
<!-- OneTrust Cookies Consent Notice end for warpstream.com -->
<style>
* { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -o-font-smoothing: antialiased; }
::selection {background-color: #F4F2FD;color: rgba(58, 33, 237, 1);}
body, a { -webkit-tap-highlight-color: transparent !important; }
img { overflow: clip !important; }
textarea { resize: none; }
video:focus { outline:none !important; }
.shadbut {box-shadow: 0px 1px 1px -0.5px rgba(42, 51, 69, 0.04), 0px 3px 3px -1.5px rgba(42, 51, 70, 0.04), 0px 6px 6px -3px rgba(42, 51, 70, 0.04), 0px 12px 12px -6px rgba(14, 63, 126, 0.04), 0px 24px 24px -12px rgba(14, 63, 126, 0.04); }
</style>
<link
rel="preload"
href="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f5779c_PlusJakartaSans-Bold.woff2"
as="font"
type="font/woff2"
crossorigin="anonymous"
/>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Organization","name":"WarpStream","url":"https://www.warpstream.com","logo":"https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f577d4_Group%20236.png","description":"Diskless, Kafka-compatible data streaming platform built on object storage.","parentOrganization":{"@type":"Organization","name":"Confluent"},"sameAs":["https://bsky.app/profile/warpstream.com"]}
</script>
<!-- Other Stuff -->
<meta name="zoom-domain-verification" content="ZOOM_verify_eu7OjDkQ2dHTb9npstfpNH">
<meta name="facebook-domain-verification" content="bupb27hskj2myemjewef1b54ul7xon" />
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-MF9MRLCR');</script>
<!-- End Google Tag Manager -->
<meta name="msvalidate.01" content="3BB081DA3E69E73D260B566AB2DA43F0" /><meta property="og:type" content="article" />
<meta property="article:author" content="WarpStream" />
<!-- [Attributes by Finsweet] Table of Contents -->
<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-toc@1/toc.js"></script>
<!-- [Attributes by Finsweet] Powerful Rich Text -->
<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-richtext@1/richtext.js"></script>
<!-- [Attributes by Finsweet] Code Highlight -->
<script async src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-codehighlight@1/codehighlight.js"></script>
<!-- Finsweet Attributes -->
<script async type="module"
src="https://cdn.jsdelivr.net/npm/@finsweet/attributes@2/attributes.js"\
fs-readtime></script>
<style>
p {
word-break: break-word;
}
.w-richtext-figure-type-video {
border: 1px solid #ddd;
border-radius: 6px;
overflow: hidden;
box-shadow: 0px 1px 1px rgba(3, 7, 18, 0.04),
0px 5px 4px rgba(3, 7, 18, 0.03),
0px 12px 9px rgba(3, 7, 18, 0.02),
0px 20px 15px rgba(3, 7, 18, 0.02),
0px 32px 24px rgba(3, 7, 18, 0.01);
}
figcaption {
font-size: 0.8rem;
padding-top: 0.7rem;
padding-left: 6%;
padding-right: 6%;
color: #666;
display: block;
font-family: 'Plus Jakarta Sans';
}
.sup a {
text-decoration: none !important;
}
.notes{
border-radius: 8px;
padding: 40px;
border: 1px solid #ddd;
box-shadow: 0px 5px rgba(0,0,0,.05);
font-size: 14px;
margin-bottom: 40px;
font-family: 'Plus Jakarta Sans';
}
pre {
margin: 0 !important;
padding: 0 !important;
border: none !important;
font-size: inherit !important;
font-family: inherit !important;
line-height: inherit !important;
background: none !important;
box-shadow: none !important;
border-radius: 0 !important;
white-space: break-spaces;
}
code {
border: 1px solid #ddd !important;
border-radius: 6px;
margin-top: 1.5rem;
background: #fff !important;
padding: 2rem !important;
box-shadow: inset 5px 5px #270b460d;
line-height: 1.3rem;
font-size: .8rem !important;
word-break: break-all;
}
.outblock {
border: 1px solid #ddd !important;
margin-top: 1.5rem;
border-radius: 6px;
padding: 2rem 2rem 1.5rem 2rem !important;
font-family: 'Roboto Mono', monospace;
font-size: .8rem !important;
background: transparent;
word-break: break-all;
}
.codeinline {
font-family: 'Roboto Mono', monospace;
font-size: .8rem;
font-weight: 400;
background: rgb(235 230 255 / 80%);
padding: 0.16rem 0.4rem;
margin-bottom: -2px;
color: #3a21ed;
margin-left: .1rem;
line-height: 1rem;
margin-right: .1rem;
display: inline-block;
border-radius: 4px;
word-break: break-word;
}
.codeinlinemb{
font-family: 'Roboto Mono', monospace;
font-size: .8rem;
font-weight: 400;
background: rgb(235 230 255 / 80%);
padding: 0.16rem 0.4rem;
margin-bottom: -2px;
color: #3a21ed;
margin-left: .1rem;
line-height: 1rem;
margin-right: .1rem;
display: inline-block;
border-radius: 4px;
word-break: break-word;
margin-bottom: 1rem;
}
#player, .player {
border: 1px solid #ddd !important;
border-radius: 6px !important;
}
@media screen and (max-width: 900px) {
.w-richtext ol, .w-richtext ul {
max-width: 20rem;
}
code {
word-break: break-word;
}
.codeinline{
font-size: 70%;
word-break: break-word;
}
.codeinlinemb{
font-size: 70%;
word-break: break-word;
}
}
</style>
<link rel="alternate" type="application/rss+xml" href="https://www.warpstream.com/blog/rss.xml">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "The Case for Shared Storage",
"image": "https://cdn.prod.website-files.com/683882630fceea3de6f57776/6a971ff5a9207262b338afa5_6a971f5ba9207262b338571a_The%2520Case%2520for%2520Shared%2520Storage.png",
"description": "Shared-nothing made sense when storage was slow, but shared storage flips that tradeoff. The architectural case for building Kafka directly on object storage.",
"author": {
"@type": "Organization",
"name": "WarpStream"
},
"publisher": {
"@type": "Organization",
"name": "WarpStream Labs",
"logo": {
"@type": "ImageObject",
"url": "https://cdn.prod.website-files.com/648b6360221506ec267256ae/681a210401c913a2aeeb2b53_logo.png"
}
},
"datePublished": "Sep 02, 2026",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "the-case-for-shared-storage"
}
}
</script></head><body data-scroll-time="0.1" class="mainbody"><div id="top" class="navfamily"><div class="div-block-631"><div class="div-block-635"><div class="splark"><div id="bannerspark" class="bannerspark w-embed w-script"><!-- Elfsight Announcement Bar | Executive Summary Sticky Header -->
<script src="https://elfsightcdn.com/platform.js" async></script>
<div class="elfsight-app-b7369716-34bc-4fe0-ba35-5207f9435fc8" data-elfsight-app-lazy></div>
<script>
(function() {
const targetDiv = document.querySelector('.splark');
if (!targetDiv) return;
targetDiv.style.transition = 'margin-top 0.15s ease';
function updateBanner() {
const openedBanner = document.querySelector('.es-announcement-bar-opened');
if (openedBanner && openedBanner.offsetHeight > 0) {
const rect = openedBanner.getBoundingClientRect();
const isAtTop = rect.top >= 0;
openedBanner.style.transition = 'opacity 0.15s ease';
openedBanner.style.opacity = isAtTop ? '1' : '0';
targetDiv.style.setProperty('margin-top', isAtTop ? '45px' : '0', 'important');
} else {
targetDiv.style.setProperty('margin-top', '0', 'important');
}
}
window.addEventListener('scroll', updateBanner, { passive: true });
// On any mutation, check a few times quickly to catch animations
const observer = new MutationObserver(() => {
updateBanner();
setTimeout(updateBanner, 100);
setTimeout(updateBanner, 300);
});
observer.observe(document.body, { childList: true, subtree: true, attributes: true });
updateBanner();
setTimeout(updateBanner, 2000);
})();</script>
<style>
@media (max-width: 1050px) {
[class*="bar__BarContainer-sc"] {
display: none !important;
}
}
</style></div></div><div class="div-block-633"><div data-animation="default" class="navbar5_component w-nav" data-easing2="ease" fs-scrolldisable-element="smart-nav" data-easing="ease" data-collapse="medium" data-w-id="e11dc28f-a971-eb88-d46e-f2fcc7e60ed6" role="banner" data-duration="400"><div class="navbar5_container"><a href="/" class="navbar5_logo-link w-nav-brand"><div class="code-embed-7 w-embed"><svg width="219" height="44" viewBox="0 0 219 45" style="height: 1.5rem; width: auto;" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M48.1214 42.6066C47.3036 42.6066 46.9701 42.1063 46.8867 41.4418H46.8167C46.5128 42.3161 45.7488 42.7734 44.7508 42.7734C43.2389 42.7734 42.3512 41.9422 42.3512 40.6079C42.3512 39.2736 43.3223 38.5123 45.4045 38.5123H46.8194V37.8048C46.8194 36.7906 46.2653 36.2365 45.1274 36.2365C44.2665 36.2365 43.6989 36.6535 43.3089 37.3045L42.6417 36.6804C43.0291 35.9164 43.8899 35.2788 45.1812 35.2788C46.9028 35.2788 47.9277 36.18 47.9277 37.6918V41.6328H48.7455V42.6039H48.1214V42.6066ZM46.8167 40.5272V39.3489H45.3453C44.0836 39.3489 43.5133 39.7363 43.5133 40.4303V40.7209C43.5133 41.4284 44.0675 41.8319 44.9283 41.8319C46.0232 41.8319 46.8141 41.2616 46.8141 40.5272H46.8167Z" fill="currentcolor"/>
<path d="M50.3972 42.6066V35.4483H51.5082V36.6131H51.5647C51.9117 35.8088 52.5224 35.2815 53.5904 35.2815C55.0618 35.2815 55.9899 36.2795 55.9899 38.0146V42.6066H54.8789V38.2083C54.8789 36.9332 54.3247 36.2795 53.2568 36.2795C52.3691 36.2795 51.5082 36.7234 51.5082 37.638V42.6066H50.3972Z" fill="currentcolor"/>
<path d="M60.7917 42.6066V41.6354H62.1502V33.8934H60.7917V32.9222H64.6762V33.8934H63.3177V41.6354H64.6762V42.6066H60.7917Z" fill="currentcolor"/>
<path d="M66.8687 32.9222H70.8501C72.4453 32.9222 73.4298 33.9068 73.4298 35.4186C73.4298 36.9305 72.4991 37.3743 71.8615 37.4712V37.5546C72.5556 37.5949 73.7634 38.1921 73.7634 39.8035C73.7634 41.4149 72.6955 42.6066 71.267 42.6066H66.8687V32.9222ZM68.0335 37.1134H70.7102C71.6248 37.1134 72.1816 36.6265 72.1816 35.7684V35.2976C72.1816 34.4368 71.6275 33.9525 70.7102 33.9525H68.0335V37.1161V37.1134ZM68.0335 41.5816H70.9065C71.9046 41.5816 72.5152 41.0544 72.5152 40.0833V39.6125C72.5152 38.6414 71.9046 38.1141 70.9065 38.1141H68.0335V41.5843V41.5816Z" fill="currentcolor"/>
<path d="M75.9988 32.9222H77.5537L80.3299 38.1383H80.3998L83.1894 32.9222H84.6878V42.6066H83.5499V34.4475H83.48L82.6622 36.0696L80.346 40.2877L78.0298 36.0696L77.212 34.4475H77.1421V42.6066H76.0042V32.9222H75.9988Z" fill="currentcolor"/>
<path d="M89.6376 37.8209C89.6376 34.5874 91.0956 32.7555 93.5355 32.7555C95.1442 32.7555 96.2552 33.5329 96.8659 34.878L95.9217 35.4456C95.5343 34.4476 94.7273 33.7939 93.5355 33.7939C91.8704 33.7939 90.8858 35.112 90.8858 37.0973V38.5392C90.8858 40.5245 91.8704 41.7296 93.5355 41.7296C94.7703 41.7296 95.6177 41.0356 96.005 39.9811L96.9331 40.5648C96.3225 41.9233 95.1442 42.7707 93.5329 42.7707C91.0903 42.7707 89.6349 41.049 89.6349 37.8182L89.6376 37.8209Z" fill="currentcolor"/>
<path d="M98.1705 39.0288C98.1705 36.753 99.4887 35.2815 101.404 35.2815C103.319 35.2815 104.638 36.753 104.638 39.0288C104.638 41.3046 103.319 42.7761 101.404 42.7761C99.4887 42.7761 98.1705 41.3046 98.1705 39.0288ZM103.443 39.5399V38.5123C103.443 37.0005 102.596 36.2661 101.404 36.2661C100.212 36.2661 99.3649 37.0005 99.3649 38.5123V39.5399C99.3649 41.0517 100.212 41.7888 101.404 41.7888C102.596 41.7888 103.443 41.0544 103.443 39.5399Z" fill="currentcolor"/>
<path d="M106.537 42.6066V35.4483H107.648V36.6131H107.704C108.024 35.8787 108.522 35.2815 109.633 35.2815C110.577 35.2815 111.438 35.7119 111.825 36.7395H111.852C112.116 35.9621 112.81 35.2815 114.031 35.2815C115.489 35.2815 116.361 36.2795 116.361 38.0146V42.6066H115.25V38.2083C115.25 36.9467 114.766 36.2795 113.682 36.2795C112.807 36.2795 112.003 36.7234 112.003 37.638V42.6066H110.892V38.2083C110.892 36.9332 110.405 36.2795 109.351 36.2795C108.476 36.2795 107.645 36.7234 107.645 37.638V42.6066H106.534H106.537Z" fill="currentcolor"/>
<path d="M118.72 35.4483H119.831V36.6131H119.888C120.262 35.7119 120.999 35.2815 121.983 35.2815C123.772 35.2815 124.897 36.7395 124.897 39.0288C124.897 41.3181 123.772 42.7761 121.983 42.7761C120.999 42.7761 120.318 42.3322 119.888 41.4445H119.831V45.3855H118.72V35.451V35.4483ZM123.702 39.6368V38.4154C123.702 37.1403 122.925 36.2795 121.677 36.2795C120.665 36.2795 119.831 36.8633 119.831 37.6542V40.3173C119.831 41.2481 120.662 41.7754 121.677 41.7754C122.925 41.7754 123.702 40.9145 123.702 39.6394V39.6368Z" fill="currentcolor"/>
<path d="M132.042 42.6066C131.224 42.6066 130.89 42.1063 130.807 41.4418H130.737C130.43 42.3161 129.669 42.7734 128.668 42.7734C127.156 42.7734 126.269 41.9422 126.269 40.6079C126.269 39.2736 127.24 38.5123 129.322 38.5123H130.737V37.8048C130.737 36.7906 130.183 36.2365 129.045 36.2365C128.184 36.2365 127.616 36.6535 127.226 37.3045L126.559 36.6804C126.946 35.9164 127.807 35.2788 129.099 35.2788C130.82 35.2788 131.845 36.18 131.845 37.6918V41.6328H132.663V42.6039H132.039L132.042 42.6066ZM130.737 40.5272V39.3489H129.265C128.004 39.3489 127.433 39.7363 127.433 40.4303V40.7209C127.433 41.4284 127.988 41.8319 128.848 41.8319C129.943 41.8319 130.734 41.2616 130.734 40.5272H130.737Z" fill="currentcolor"/>
<path d="M134.317 42.6066V35.4483H135.428V36.6131H135.485C135.832 35.8088 136.442 35.2815 137.51 35.2815C138.982 35.2815 139.91 36.2795 139.91 38.0146V42.6066H138.799V38.2083C138.799 36.9332 138.245 36.2795 137.177 36.2795C136.289 36.2795 135.428 36.7234 135.428 37.638V42.6066H134.317Z" fill="currentcolor"/>
<path d="M146.568 35.4482H147.663L144.459 44.2717C144.139 45.1326 143.848 45.3828 142.794 45.3828H142.223V44.4116H143.348L143.889 42.8863L141.212 35.4482H142.323L144.045 40.3173L144.378 41.4821H144.448L144.836 40.3173L146.571 35.4482H146.568Z" fill="currentcolor"/>
<path d="M1.905 13.4288L1.27116 14.0904L0 15.4172V15.6464L1.27116 16.9749L3.17269 18.9615V12.1038L1.905 13.4253V13.4288Z" fill="#E32645"/>
<path d="M6.3506 14.4082L5.07944 13.085V10.1085L4.4074 10.8066V12.3852L3.80481 11.7583V19.6231L5.07944 20.9603V20.9568L5.71329 21.6184L6.98445 22.9469V8.1167L6.35408 8.77485L6.3506 14.4065V14.4082Z" fill="#E32645"/>
<path d="M10.1571 12.6282L8.88771 13.9567V9.19854V6.12483L8.25213 6.78993V8.53517L8.2556 14.6183L7.61655 15.2852V23.15L9.52329 21.1565L10.7944 19.828V4.133L10.1554 4.79983V12.63L10.1571 12.6282Z" fill="#E32645"/>
<path d="M13.9706 8.6446L12.6995 9.9748V2.14466L12.0604 2.8115V10.6364L11.4301 11.3015V19.1681L12.6995 17.8379L13.3385 17.1711V17.1763L14.608 15.8496V0.149353L13.9689 0.816191L13.9724 8.6446H13.9706Z" fill="#E32645"/>
<path d="M18.0967 3.12409L17.7806 2.79241V10.6347L16.5095 9.30624V1.42574L16.1952 1.09753V1.13747L15.8791 0.805786L15.8756 8.6394L15.2401 7.97951V15.8374L16.5095 17.1642L17.1433 17.8258L18.418 19.1577V3.41757L18.0984 3.08415V3.12409H18.0967Z" fill="#E32645"/>
<path d="M21.9067 7.10949L21.5906 6.77259V8.55604L21.5872 14.0835V14.6166L20.9516 13.9515L20.3177 13.2899V5.40939L19.9965 5.0725V5.11244L19.6856 4.78076V12.6231L19.0466 11.9614V19.8194L20.3177 21.1496L20.9516 21.8112L22.221 23.1379V7.39776L21.9067 7.06955V7.10949Z" fill="#E32645"/>
<path d="M26.0293 11.3484L25.3989 10.6937V12.4303L24.1277 13.757V9.37569L23.4939 8.72101V8.73316L23.4974 14.4134L22.8566 15.082V22.9469L24.1277 21.6184L24.7616 20.9568V20.9603L26.0327 19.6283V18.7323L26.0293 11.3832V11.3467V11.3484Z" fill="#E32645"/>
<path d="M28.5716 13.9793V13.9828L27.9412 13.3298L26.67 12.0118V18.9615L27.9412 17.6365V17.633L28.5716 16.9749L29.8427 15.6464V15.3008L28.5716 13.9793Z" fill="#E32645"/>
<path d="M194.779 22.9643V6.55727H198.054V10.1051L197.629 9.55978C197.973 8.44838 198.6 7.60789 199.51 7.04177C200.42 6.47565 201.462 6.1926 202.634 6.1926C203.948 6.1926 205.11 6.54685 206.121 7.25363C207.152 7.94131 207.84 8.86169 208.182 10.013L207.211 10.1033C207.696 8.78875 208.434 7.80933 209.425 7.16159C210.436 6.51386 211.589 6.19086 212.883 6.19086C214.015 6.19086 215.036 6.45308 215.946 6.97926C216.877 7.50543 217.615 8.23305 218.16 9.16211C218.706 10.0929 218.98 11.1539 218.98 12.347V22.9608H215.554V13.2864C215.554 12.4581 215.401 11.76 215.099 11.1939C214.816 10.6069 214.411 10.1624 213.885 9.86021C213.38 9.53721 212.782 9.37571 212.096 9.37571C211.41 9.37571 210.803 9.53721 210.276 9.86021C209.75 10.1641 209.337 10.6087 209.033 11.1939C208.729 11.7808 208.578 12.4772 208.578 13.2864V22.9608H205.181V13.2864C205.181 12.4581 205.028 11.76 204.726 11.1939C204.443 10.6069 204.039 10.1624 203.512 9.86021C203.007 9.53721 202.401 9.37571 201.693 9.37571C200.984 9.37571 200.399 9.53721 199.874 9.86021C199.348 10.1641 198.935 10.6087 198.631 11.1939C198.348 11.7808 198.207 12.4772 198.207 13.2864V22.9608H194.781L194.779 22.9643Z" fill="currentcolor"/>
<path d="M182.766 23.3272C181.654 23.3272 180.673 23.1345 179.824 22.7507C178.996 22.3461 178.348 21.8008 177.883 21.1131C177.417 20.4046 177.185 19.5762 177.185 18.6264C177.185 17.7372 177.377 16.9384 177.761 16.2299C178.166 15.5214 178.782 14.9257 179.61 14.4412C180.439 13.9567 181.481 13.6129 182.733 13.4097L188.436 12.4703V15.1689L183.401 16.0476C182.491 16.2091 181.825 16.5025 181.399 16.9263C180.974 17.3309 180.762 17.8571 180.762 18.5031C180.762 19.1491 180.995 19.6457 181.46 20.0503C181.944 20.4341 182.563 20.6269 183.309 20.6269C184.24 20.6269 185.048 20.4254 185.735 20.0208C186.442 19.6162 186.989 19.0813 187.373 18.4128C187.758 17.7251 187.949 16.9679 187.949 16.1379V11.9215C187.949 11.1123 187.646 10.4558 187.039 9.95051C186.454 9.42433 185.664 9.16211 184.674 9.16211C183.764 9.16211 182.966 9.40523 182.278 9.88973C181.611 10.3551 181.116 10.9612 180.791 11.7096L177.942 10.2839C178.244 9.47469 178.74 8.76791 179.428 8.16185C180.116 7.53495 180.915 7.05045 181.825 6.70661C182.755 6.36278 183.735 6.19086 184.766 6.19086C186.06 6.19086 187.203 6.43398 188.193 6.91848C189.203 7.40297 189.983 8.08023 190.528 8.95025C191.094 9.79942 191.377 10.7893 191.377 11.9215V22.9608H188.101V19.9878L188.799 20.0781C188.415 20.745 187.918 21.3215 187.312 21.806C186.725 22.2905 186.048 22.6656 185.28 22.9278C184.532 23.19 183.693 23.322 182.764 23.322L182.766 23.3272Z" fill="currentcolor"/>
<path d="M167.712 23.3272C166.074 23.3272 164.617 22.9539 163.344 22.2054C162.09 21.4378 161.111 20.4063 160.402 19.1126C159.694 17.798 159.34 16.3324 159.34 14.7156C159.34 13.0989 159.694 11.5916 160.402 10.3187C161.13 9.04576 162.101 8.04377 163.313 7.31615C164.527 6.5677 165.9 6.19434 167.437 6.19434C168.67 6.19434 169.773 6.4062 170.742 6.83165C171.713 7.25537 172.532 7.84233 173.199 8.59079C173.866 9.3184 174.371 10.1572 174.715 11.1088C175.08 12.0587 175.26 13.0694 175.26 14.1408C175.26 14.403 175.25 14.6774 175.231 14.9605C175.21 15.2435 175.17 15.5058 175.109 15.7489H162.038V13.019H173.17L171.532 14.2624C171.733 13.2708 171.662 12.3921 171.32 11.6246C170.995 10.8362 170.492 10.2197 169.802 9.77512C169.136 9.30972 168.347 9.07702 167.437 9.07702C166.527 9.07702 165.718 9.30972 165.01 9.77512C164.303 10.2197 163.756 10.8674 163.372 11.7166C162.988 12.5449 162.835 13.5556 162.917 14.7486C162.816 15.86 162.967 16.8308 163.372 17.6608C163.796 18.4892 164.383 19.1369 165.131 19.6023C165.899 20.0677 166.769 20.3004 167.739 20.3004C168.71 20.3004 169.57 20.0781 170.256 19.6336C170.964 19.189 171.52 18.6125 171.924 17.9057L174.715 19.2706C174.392 20.0382 173.887 20.7363 173.199 21.3632C172.532 21.9692 171.723 22.4555 170.773 22.8184C169.842 23.1622 168.821 23.3342 167.71 23.3342L167.712 23.3272Z" fill="currentcolor"/>
<path d="M149.625 22.9642V6.55723H152.902V9.86364L152.598 9.37914C152.963 8.30768 153.55 7.53839 154.357 7.07473C155.167 6.59023 156.137 6.34711 157.27 6.34711H158.27V9.47117H156.844C155.712 9.47117 154.792 9.82543 154.085 10.5322C153.397 11.2199 153.053 12.2097 153.053 13.5052V22.9677H149.627L149.625 22.9642Z" fill="currentcolor"/>
<path d="M145.039 23.1431C143.32 23.1431 141.986 22.6586 141.035 21.6879C140.085 20.7171 139.609 19.3522 139.609 17.5931V9.64659H136.728V6.55378H137.183C137.95 6.55378 138.548 6.3315 138.972 5.88694C139.397 5.44238 139.609 4.83632 139.609 4.06703V2.79413H143.035V6.55551H146.765V9.64832H143.035V17.442C143.035 18.0081 143.125 18.4926 143.308 18.8972C143.49 19.281 143.784 19.5849 144.186 19.8072C144.591 20.0086 145.117 20.1111 145.763 20.1111C145.925 20.1111 146.107 20.1007 146.309 20.0816C146.512 20.0607 146.703 20.0416 146.885 20.0208V22.9625C146.602 23.0025 146.288 23.0441 145.944 23.0841C145.6 23.124 145.296 23.1449 145.036 23.1449L145.039 23.1431Z" fill="currentcolor"/>
<path d="M127.161 23.3272C125.746 23.3272 124.431 23.065 123.217 22.5388C122.004 21.9935 120.974 21.2555 120.125 20.3247C119.276 19.3939 118.649 18.3224 118.244 17.1103L121.278 15.8357C121.823 17.2301 122.624 18.3016 123.674 19.05C124.725 19.7985 125.939 20.1719 127.314 20.1719C128.123 20.1719 128.832 20.0503 129.438 19.8072C130.046 19.545 130.509 19.1803 130.832 18.7149C131.176 18.2495 131.348 17.7146 131.348 17.1068C131.348 16.2785 131.115 15.6203 130.65 15.1358C130.185 14.6513 129.499 14.2658 128.589 13.9828L124.343 12.6491C122.644 12.1229 121.351 11.3241 120.462 10.2526C119.572 9.16034 119.128 7.88745 119.128 6.43047C119.128 5.15758 119.44 4.04444 120.067 3.09455C120.694 2.12381 121.554 1.36667 122.646 0.819656C123.758 0.274376 125.022 0 126.437 0C127.852 0 129.025 0.243119 130.138 0.727618C131.249 1.19302 132.199 1.83902 132.989 2.66909C133.797 3.49743 134.384 4.45775 134.748 5.55004L131.777 6.8542C131.332 5.66118 130.634 4.7408 129.684 4.0948C128.754 3.44707 127.672 3.12407 126.439 3.12407C125.69 3.12407 125.034 3.25605 124.468 3.51827C123.902 3.76138 123.457 4.12433 123.132 4.61056C122.83 5.07596 122.677 5.62124 122.677 6.24814C122.677 6.97575 122.91 7.62349 123.376 8.18961C123.841 8.75573 124.548 9.18118 125.499 9.46424L129.441 10.7076C131.242 11.2529 132.595 12.0413 133.505 13.0728C134.415 14.0835 134.87 15.3477 134.87 16.8637C134.87 18.1175 134.536 19.2289 133.87 20.1996C133.222 21.1704 132.322 21.9379 131.171 22.5041C130.02 23.0493 128.684 23.3237 127.168 23.3237L127.161 23.3272Z" fill="currentcolor"/>
<path d="M99.2026 29.0283V6.55551H102.478V9.95221L102.084 9.16382C102.69 8.23302 103.499 7.5054 104.51 6.98096C105.52 6.45479 106.673 6.19257 107.967 6.19257C109.525 6.19257 110.919 6.56592 112.152 7.31438C113.406 8.06284 114.385 9.08393 115.094 10.3777C115.822 11.6714 116.186 13.1266 116.186 14.7451C116.186 16.3636 115.822 17.8188 115.094 19.1126C114.385 20.4063 113.416 21.4378 112.183 22.2054C110.949 22.9538 109.544 23.3272 107.967 23.3272C106.692 23.3272 105.531 23.065 104.48 22.5388C103.449 22.0126 102.65 21.2555 102.084 20.2639L102.629 19.6266V29.0283H99.2026ZM107.634 20.1423C108.604 20.1423 109.462 19.9096 110.211 19.4442C110.959 18.9788 111.546 18.3415 111.97 17.534C112.414 16.7057 112.638 15.7749 112.638 14.7434C112.638 13.7119 112.416 12.7932 111.97 11.984C111.546 11.1748 110.959 10.5392 110.211 10.0738C109.462 9.60837 108.604 9.37568 107.634 9.37568C106.663 9.37568 105.824 9.60837 105.055 10.0738C104.306 10.5392 103.709 11.1765 103.264 11.984C102.841 12.7932 102.629 13.7119 102.629 14.7434C102.629 15.7749 102.841 16.704 103.264 17.534C103.709 18.3433 104.306 18.9806 105.055 19.4442C105.822 19.9096 106.682 20.1423 107.634 20.1423Z" fill="currentcolor"/>
<path d="M88.8197 22.9642V6.55723H92.0949V9.86364L91.791 9.37914C92.1557 8.30768 92.7409 7.53839 93.5501 7.07473C94.3594 6.59023 95.3301 6.34711 96.4623 6.34711H97.4643V9.47117H96.0386C94.9064 9.47117 93.986 9.82543 93.2792 10.5322C92.5915 11.2199 92.2477 12.2097 92.2477 13.5052V22.9677H88.8215L88.8197 22.9642Z" fill="currentcolor"/>
<path d="M76.8062 23.3272C75.6948 23.3272 74.7137 23.1345 73.8645 22.7507C73.0362 22.3461 72.3884 21.8008 71.923 21.1131C71.4576 20.4046 71.2249 19.5762 71.2249 18.6264C71.2249 17.7372 71.4177 16.9384 71.8015 16.2299C72.2061 15.5214 72.8226 14.9257 73.6509 14.4412C74.4793 13.9567 75.5212 13.6129 76.775 13.4097L82.4761 12.4703V15.1689L77.4418 16.0476C76.5319 16.2091 75.865 16.5025 75.4396 16.9263C75.0158 17.3309 74.8023 17.8571 74.8023 18.5031C74.8023 19.1491 75.035 19.6457 75.5004 20.0503C75.9849 20.4341 76.6031 20.6269 77.3498 20.6269C78.2806 20.6269 79.0881 20.4254 79.7758 20.0208C80.4825 19.6162 81.0295 19.0813 81.4133 18.4128C81.7971 17.7251 81.9899 16.9679 81.9899 16.1379V11.9215C81.9899 11.1123 81.686 10.4558 81.0799 9.95051C80.493 9.42433 79.7046 9.16211 78.7147 9.16211C77.8048 9.16211 77.0059 9.40523 76.3183 9.88973C75.6514 10.3551 75.1565 10.9612 74.8318 11.7096L71.9803 10.2839C72.2842 9.47469 72.7792 8.76791 73.4668 8.16185C74.1545 7.53495 74.9533 7.05045 75.8633 6.70661C76.7941 6.36278 77.7735 6.19086 78.805 6.19086C80.0988 6.19086 81.2414 6.43398 82.2313 6.91848C83.2419 7.40297 84.0199 8.08023 84.5669 8.95025C85.133 9.79942 85.4161 10.7893 85.4161 11.9215V22.9608H82.1409V19.9878L82.839 20.0781C82.4553 20.745 81.9603 21.3215 81.3525 21.806C80.7656 22.2905 80.0883 22.6656 79.3208 22.9278C78.5723 23.19 77.7336 23.322 76.8028 23.322L76.8062 23.3272Z" fill="currentcolor"/>
<path d="M47.6998 22.9625L41.4829 0.368164H45.2738L50.3081 19.9288H49.3686L54.5852 0.368164H58.3154L63.532 19.9288H62.5613L67.6268 0.368164H71.3882L65.2008 22.9625H61.1668L55.9207 3.70409H56.9817L51.7043 22.9625H47.7015H47.6998Z" fill="currentcolor"/>
</svg></div></a><nav role="navigation" class="navbar5_menu w-nav-menu"><div class="navbar5_menu-left"><div data-delay="300" data-hover="true" data-w-id="e11dc28f-a971-eb88-d46e-f2fcc7e60ee0" class="navbar-dropdown2_component w-dropdown"><div class="navbar-dropdown2_dropdown-toggle w-dropdown-toggle"><div>Product</div><div class="dropdown-chevron-2 w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z" fill="currentColor"/>
</svg></div></div><nav class="navbar-dropdown2_dropdown-list w-dropdown-list"><div class="navbar-dropdown2_container"><div class="div-block-626 shadow-xxlarge"><div class="navbar-dropdown2_dropdown-content"><div class="navbar-dropdown2_content-left"><div class="navbar-dropdown2_dropdown-link-list"><a href="/bring-your-own-cloud-kafka-data-streaming" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-133 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 128a80 80 0 1 1 80 80H72a56 56 0 0 1 0-112a57.5 57.5 0 0 1 13.9 1.7" opacity=".2"></path><path fill="currentColor" d="M160 40a88 88 0 0 0-78.7 48.7A58.2 58.2 0 0 0 72 88a64 64 0 0 0 0 128h88a88 88 0 0 0 0-176Zm0 160H72a48 48 0 0 1 0-96h3.3a85.7 85.7 0 0 0-3.3 24a8 8 0 0 0 16 0a72 72 0 1 1 72 72Z"></path><path fill="currentColor" d="M186.3 110.3L144 152.7l-18.3-18.4a8.1 8.1 0 0 0-11.4 11.4l24 24a8.2 8.2 0 0 0 11.4 0l48-48a8.1 8.1 0 0 0-11.4-11.4Z"></path></svg></div></div><div class="navbar5_item-right"><div>Bring Your Own Cloud</div><p class="text-size-smal">Deploy in any cloud or self-host, using your own compute and object storage.</p></div></a><a href="/data-governance-schema-registry-and-validation" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-136 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><ellipse cx="128" cy="80" fill="currentColor" opacity=".2" rx="88" ry="48"></ellipse><path fill="currentColor" d="M128 24c-53.8 0-96 24.6-96 56v96c0 31.4 42.2 56 96 56s96-24.6 96-56V80c0-31.4-42.2-56-96-56Zm80 104c0 9.6-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 147.4 48 137.6 48 128v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6ZM69.6 53.1C85.1 44.6 105.8 40 128 40s42.9 4.6 58.4 13.1C200.1 60.6 208 70.4 208 80s-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 99.4 48 89.6 48 80s7.9-19.4 21.6-26.9Zm116.8 149.8c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 195.4 48 185.6 48 176v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6V176c0 9.6-7.9 19.4-21.6 26.9Z"></path></svg></div></div><div class="navbar5_item-right"><div>Data Governance</div><p class="text-size-smal">Schema registry, linking, and validation in your own cloud account.</p></div></a></div><div class="navbar-dropdown2_dropdown-link-list"><a href="/tableflow" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-286 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M33.7 77A8 8 0 0 1 35 65.8a81.8 81.8 0 0 1 29.1-13.6c16.1-4 41.1-5 68.3 13.1c42.4 28.3 77.2 1.6 78.6.4a8.2 8.2 0 0 1 11.3 1.3a8 8 0 0 1-1.3 11.2a81.8 81.8 0 0 1-29.1 13.6a81 81 0 0 1-19.7 2.4c-14 0-30.8-3.7-48.6-15.5c-42.4-28.3-77.2-1.6-78.6-.4A8.2 8.2 0 0 1 33.7 77ZM211 121.7c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 121.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a81 81 0 0 0 19.7-2.4a81.8 81.8 0 0 0 29.1-13.6a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Zm0 56c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 177.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a82.6 82.6 0 0 0 48.8-16a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Z"></path></svg></div></div><div class="navbar5_item-right"><div class="div-block-492"><div class="text-block-249">New!</div></div><div>WarpStream Tableflow</div><p class="text-size-smal">Fully-managed iceberg tables, materialized from any Kafka topic.</p></div></a><a href="/managed-data-pipelines-kafka-compatible-stream-processing" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-134 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M72 176a28 28 0 1 1-28-28a28 28 0 0 1 28 28Z" opacity=".2"></path><path fill="currentColor" d="m245.7 74.3l-40-40a8.1 8.1 0 0 0-11.4 11.4L220.7 72H176a56 56 0 0 0-56 56a40 40 0 0 1-40 40h-.9a36 36 0 1 0 0 16h.9a56 56 0 0 0 56-56a40 40 0 0 1 40-40h44.7l-26.4 26.3a8.1 8.1 0 0 0 0 11.4a8.2 8.2 0 0 0 11.4 0l40-40a8.1 8.1 0 0 0 0-11.4ZM44 196a20 20 0 1 1 20-20a20.1 20.1 0 0 1-20 20Z"></path></svg></div></div><div class="navbar5_item-right"><div>Managed Data Pipelines</div><p class="text-size-smal">Managed integrations and connectors. Powerful, scalable stream processing.</p></div></a></div><div class="navbar-dropdown2_dropdown-link-list"><a href="/orbit-apache-kafka-migration-and-replication" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-135 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M216 128a88 88 0 1 1-88-88a88 88 0 0 1 88 88Z" opacity=".2"></path><path fill="currentColor" d="M245.8 60c-5.5-9.5-20.3-18.4-59.8-8.5A96 96 0 0 0 32 128a117.3 117.3 0 0 0 .7 12c-28.3 29.2-27.9 46.5-22.5 56c3.7 6.4 11.9 12.8 29.8 12.8a121.7 121.7 0 0 0 25.5-3.2l4.5-1.1A96 96 0 0 0 224 128a117.3 117.3 0 0 0-.7-12l3.1-3.3c25.3-27.5 24.5-43.8 19.4-52.7ZM128 48a80.2 80.2 0 0 1 78.1 62.5c-16.2 15.4-37.8 31.2-62.1 45.2s-48.7 24.9-70.1 31.1A79.9 79.9 0 0 1 128 48ZM24.1 188c-1.5-2.6-.7-7.5 2.3-13.4A85.7 85.7 0 0 1 37.1 159a95.2 95.2 0 0 0 18.7 32.2c-18.7 3.3-29.3 1-31.7-3.2ZM128 208a79.6 79.6 0 0 1-37.9-9.6c19.6-6.8 40.8-16.7 61.9-28.8a373.3 373.3 0 0 0 55.9-39.2A80 80 0 0 1 128 208Zm72.2-143.2a83.9 83.9 0 0 1 19-1.5c6.6.4 11.2 2.1 12.7 4.7c2.4 4.2-.9 14.5-13 29a95.2 95.2 0 0 0-18.7-32.2Z"></path></svg></div></div><div class="navbar5_item-right"><div>Orbit</div><p class="text-size-smal">Offset-preserving replication from any source Apache Kafka cluster.</p></div></a><a href="#" class="navbar-dropdown2_dropdown-link shadbut hidefornow w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-137 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M32 96h192V56a8 8 0 0 0-8-8H40a8 8 0 0 0-8 8Z" opacity=".2"></path><path fill="currentColor" d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16Zm0 16v32H40V56Zm0 144H40v-96h176v96Z"></path></svg></div></div><div class="navbar5_item-right"><div class="text-weight-semibold">Console UI</div><p class="text-size-smal">Schema registry, linking, and validation in your own cloud account.</p></div></a><a href="/multi-region-clusters" class="navbar-dropdown2_dropdown-link w-inline-block"><div class="navbar5_icon-wrapper"><div class="icon-embed-xxsmall-138 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 108v40a8 8 0 0 1-8 8H32a8 8 0 0 1-8-8v-40a8 8 0 0 1 8-8h40a8 8 0 0 1 8 8Zm136-68h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V48a8 8 0 0 0-8-8Zm0 112h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8Z" opacity=".2"></path><path fill="currentColor" d="M168 112h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a32.1 32.1 0 0 0-32 32v24H88v-12a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v40a16 16 0 0 0 16 16h40a16 16 0 0 0 16-16v-12h24v24a32.1 32.1 0 0 0 32 32h8v16a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a16 16 0 0 1-16-16V96a16 16 0 0 1 16-16h8v16a16 16 0 0 0 16 16Zm-96 36H32v-40h40v40Zm96 12h48v48h-48Zm0-112h48v48h-48Z"></path></svg></div></div><div class="navbar5_item-right"><div>Multi-Region Clusters</div><p class="text-size-smal">RPO=0: Zero point of failure by default with no ops, tuning, or trade-offs.</p></div></a></div></div></div><div class="div-block-627"><a href="/integrations" class="link-block-74 w-inline-block"><div>Integrations</div><div class="icon-embed-xxsmall-345 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M248 152a8 8 0 0 1-8 8h-16v16a8 8 0 0 1-16 0v-16h-16a8 8 0 0 1 0-16h16v-16a8 8 0 0 1 16 0v16h16a8 8 0 0 1 8 8ZM64 68h12v12a8 8 0 0 0 16 0V68h12a8 8 0 0 0 0-16H92V40a8 8 0 0 0-16 0v12H64a8 8 0 0 0 0 16Zm120 124h-8v-8a8 8 0 0 0-16 0v8h-8a8 8 0 0 0 0 16h8v8a8 8 0 0 0 16 0v-8h8a8 8 0 0 0 0-16Zm-2.3-74.3L75.3 224a15.9 15.9 0 0 1-22.6 0L32 203.3a15.9 15.9 0 0 1 0-22.6L180.7 32a16.1 16.1 0 0 1 22.6 0L224 52.7a15.9 15.9 0 0 1 0 22.6l-42.3 42.4ZM155.3 80l20.7 20.7L212.7 64L192 43.3Zm9.4 32L144 91.3L43.3 192L64 212.7Z"></path></svg></div></a><a href="/migration" class="link-block-74 w-inline-block"><div>Why Switch?</div><div class="icon-embed-xxsmall-346 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M225.9 102.8c-3.8-3.9-7.7-8-9.2-11.5s-1.4-8.7-1.5-14c-.1-9.7-.3-20.8-8-28.5s-18.8-7.9-28.5-8c-5.3-.1-10.7-.2-14-1.5s-7.6-5.4-11.5-9.2C146.3 23.5 138.4 16 128 16s-18.3 7.5-25.2 14.1c-3.9 3.8-8 7.7-11.5 9.2s-8.7 1.4-14 1.5c-9.7.1-20.8.3-28.5 8s-7.9 18.8-8 28.5c-.1 5.3-.2 10.7-1.5 14s-5.4 7.6-9.2 11.5C23.5 109.7 16 117.6 16 128s7.5 18.3 14.1 25.2c3.8 3.9 7.7 8 9.2 11.5s1.4 8.7 1.5 14c.1 9.7.3 20.8 8 28.5s18.8 7.9 28.5 8c5.3.1 10.7.2 14 1.5s7.6 5.4 11.5 9.2c6.9 6.6 14.8 14.1 25.2 14.1s18.3-7.5 25.2-14.1c3.9-3.8 8-7.7 11.5-9.2s8.7-1.4 14-1.5c9.7-.1 20.8-.3 28.5-8s7.9-18.8 8-28.5c.1-5.3.2-10.7 1.5-14s5.4-7.6 9.2-11.5c6.6-6.9 14.1-14.8 14.1-25.2s-7.5-18.3-14.1-25.2Zm-11.6 39.3c-4.8 5-9.7 10.2-12.4 16.5s-2.6 13.1-2.7 19.8s-.2 14.4-3.3 17.5s-10.4 3.2-17.5 3.3s-13.7.2-19.8 2.7s-11.5 7.6-16.5 12.4S132 224 128 224s-9.1-4.9-14.1-9.7s-10.2-9.7-16.5-12.4s-13.1-2.6-19.8-2.7s-14.4-.2-17.5-3.3s-3.2-10.4-3.3-17.5s-.2-13.7-2.7-19.8s-7.6-11.5-12.4-16.5S32 132 32 128s4.9-9.1 9.7-14.1s9.7-10.2 12.4-16.5s2.6-13.1 2.7-19.8s.2-14.4 3.3-17.5s10.4-3.2 17.5-3.3s13.7-.2 19.8-2.7s11.5-7.6 16.5-12.4S124 32 128 32s9.1 4.9 14.1 9.7s10.2 9.7 16.5 12.4s13.1 2.6 19.8 2.7s14.4.2 17.5 3.3s3.2 10.4 3.3 17.5s.2 13.7 2.7 19.8s7.6 11.5 12.4 16.5S224 124 224 128s-4.9 9.1-9.7 14.1ZM140 180a12 12 0 1 1-12-12a12 12 0 0 1 12 12Zm24-72a36 36 0 0 1-28 35.1v.9a8 8 0 0 1-16 0v-8a8 8 0 0 1 8-8a20 20 0 1 0-20-20a8 8 0 0 1-16 0a36 36 0 0 1 72 0Z"></path></svg></div></a><a href="/changelog" class="link-block-74 w-inline-block"><div>Changelog</div><div class="icon-embed-xxsmall-354 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M104 68a36 36 0 1 0-44 35.1v49.8a36 36 0 1 0 16 0v-49.8A36.1 36.1 0 0 0 104 68Zm-56 0a20 20 0 1 1 20 20a20.1 20.1 0 0 1-20-20Zm40 120a20 20 0 1 1-20-20a20.1 20.1 0 0 1 20 20Zm108-35.1v-33a55.5 55.5 0 0 0-16.4-39.6L155.3 56H176a8 8 0 0 0 0-16h-40a8 8 0 0 0-8 8v40a8 8 0 0 0 16 0V67.3l24.3 24.3a40 40 0 0 1 11.7 28.3v33a36 36 0 1 0 16 0Zm-8 55.1a20 20 0 1 1 20-20a20.1 20.1 0 0 1-20 20Z"></path></svg></div></a><a href="/executive-summary" class="link-block-74 goldy w-inline-block"><div class="text-block-313">Exec Summary</div><div class="icon-embed-xxsmall-349 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M48 136a8 8 0 0 0 8-8V40h88v48a8 8 0 0 0 8 8h48v32a8 8 0 0 0 16 0V88a7.7 7.7 0 0 0-2.4-5.7l-55.9-56A8.1 8.1 0 0 0 152 24H56a16 16 0 0 0-16 16v88a8 8 0 0 0 8 8Zm112-84.7L188.7 80H160ZM64 160H48a8 8 0 0 0-8 8v48a8 8 0 0 0 16 0v-8h8a24 24 0 0 0 0-48Zm0 32h-8v-16h8a8 8 0 0 1 0 16Zm132-16v12h16a8 8 0 0 1 0 16h-16v12a8 8 0 0 1-16 0v-48a8 8 0 0 1 8-8h28a8 8 0 0 1 0 16Zm-68-16h-14a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h14a32 32 0 0 0 0-64Zm0 48h-6v-32h6a16 16 0 0 1 0 32Z"></path></svg></div></a><a href="https://cal.com/forms/9c5f3fcf-55ee-452b-8df3-0a1098010774" target="_blank" class="link-block-74 blue w-inline-block"><div>Book A Demo</div><div class="icon-embed-xxsmall-352 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16ZM72 48v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24v32H48V48Zm136 160H48V96h160v112Zm-38.2-85.5a8 8 0 0 1-.3 11.3l-46.7 44a7.7 7.7 0 0 1-5.5 2.2a7.9 7.9 0 0 1-5.5-2.2l-25.3-24a8 8 0 1 1 11-11.6l19.8 18.8l41.2-38.8a7.9 7.9 0 0 1 11.3.3Z"></path></svg></div></a></div></div></div></nav></div><a href="/pricing" data-wf-event-ids="157064125" class="navbar5_link w-nav-link">Pricing</a><a href="/customers" class="navbar5_link w-nav-link"><span class="text-span-50">Customers</span></a><a href="/blog" class="navbar5_link w-nav-link">Blog</a><a href="/about" class="navbar5_link w-nav-link">Company</a><a href="/contact-us" class="navbar5_link w-nav-link">Contact</a><a href="https://docs.warpstream.com/warpstream" target="_blank" class="navbar5_link lasto w-nav-link">Docs</a></div><div class="navbar5_menu-right"><a href="/migration" aria-label="Learn about migrating to WarpStream" class="link-block-44 w-inline-block"><div class="tooltip1_component"><div class="tooltip1_tooltip-wrapper-3 is-bottom-wrapper"><div class="tooltip1_card-wrapper"><div class="text-size-small-3">Switch to WarpStream<br/></div></div><div class="tooltip1_pointer is-bottom-pointer"></div></div><div class="tooltip1_element-wrapper-6"><div class="icon-embed-xxsmall-332 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M28 4H4a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 22H12v-6h-2v6H4v-9h16.172l-3.586 3.586L18 22l6-6l-6-6l-1.414 1.414L20.172 15H4V6h6v6h2V6h16Z"></path></svg></div></div><div class="tooltip1_responsive w-embed w-script"><!-- Responsive Tooltip Custom Code -->
<script>
(()=>{
//Update these class names here if you rename classes
iconWrapperClass="tooltip1_element-wrapper"
tooltipWrapperClass="tooltip1_tooltip-wrapper"
pointerClass="tooltip1_pointer"
//Code to reposition the tooltip if it is going to go outside the viewport. See https://github.com/relumetech/powerups/tree/main/tooltips for more info
function f(t){return t[0].toUpperCase()+t.slice(1)}function w(t){return"padding"+f(t)}const y={bottom:"top",left:"right",right:"left",top:"bottom"},C={bottom:{margin:[1,"auto",0,"auto"],inset:[0,0,"auto",0]},left:{margin:[0,1,0,0],inset:["auto",0,"auto","auto"]},right:{margin:[0,0,0,1],inset:["auto","auto","auto",0]},top:{margin:[0,"auto",1,"auto"],inset:["auto",0,0,0]}};var t={start:"left",end:"right",len:"width",translate:"translateX"},e={start:"top",end:"bottom",len:"height",translate:"translateY"};const b={top:t,bottom:t,left:e,right:e};function n(s){var e,n="relumeTooltipSetup";if(!s.dataset[n]){s.dataset[n]=1;const d=s.parentElement.querySelector("."+tooltipWrapperClass),m=s.parentElement.querySelector("."+pointerClass),g=m.className.includes("is-left")?"left":m.className.includes("is-right")?"right":m.className.includes("is-bottom")?"bottom":"top",u=y[g],c=(n=d,n=window.getComputedStyle(n),parseInt(n.paddingTop,10)||parseInt(n.paddingBottom,10)||parseInt(n.paddingLeft,10)||parseInt(n.paddingRight,10)||0);n=m,e=g,n=window.getComputedStyle(n),e=C[e].margin.indexOf(1);const h=[n.marginTop,n.marginRight,n.marginBottom,n.marginLeft][e];let t=!1;function p(){if(t){window.requestAnimationFrame(p);var e=s.getBoundingClientRect(),n=d.getBoundingClientRect(),o=document.documentElement,a=b[g],i=(e[a.start]+e[a.end]-n[a.len])/2,r=(e[a.start]+e[a.end]+n[a.len])/2;let t=0;var l=o["client"+f(a.len)],i=(i<0?t=-i:l<r&&(t=l-r),{bottom:e.bottom+n.height<o.clientHeight,left:0<e.left-n.width,right:e.right+n.width<o.clientWidth,top:0<e.top-n.height}),l=i[g]||!i[u]?g:u;r=l,o=a,e=t,n=y[r],d.style[n]="100%",d.style[r]="auto",d.style[w(n)]=c+"px",d.style[w(r)]="0",d.style.transform=o.translate+"("+e+"px)",m.style.transform=o.translate+"("+-e+"px) rotate(45deg)",m.style.margin=C[r].margin.map(t=>1===t?h:t).join(" "),m.style.inset=C[r].inset.join(" ")}}s.parentElement.addEventListener("mouseenter",()=>{t=!0,p()}),s.parentElement.addEventListener("mouseleave",()=>{t=!1})}}function o(){document.querySelectorAll("."+iconWrapperClass).forEach(n)}window.addEventListener("DOMContentLoaded",o),o()})();
</script></div></div></a><a aria-label="Join WarpStream on Slack" href="https://console.warpstream.com/socials/slack" target="_blank" class="link-block-44 w-inline-block"><div class="icon-embed-xxsmall-6 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M9.042 19.166a2.521 2.521 0 1 1-2.52-2.521h2.52zm1.27 0a2.521 2.521 0 0 1 5.043 0v6.313a2.521 2.521 0 1 1-5.042 0zm2.522-10.124a2.521 2.521 0 1 1 2.521-2.52v2.52zm0 1.27a2.521 2.521 0 0 1 0 5.043H6.52a2.521 2.521 0 1 1 0-5.042zm10.124 2.522a2.521 2.521 0 1 1 2.52 2.521h-2.52zm-1.27 0a2.521 2.521 0 0 1-5.043 0V6.52a2.521 2.521 0 1 1 5.042 0zm-2.522 10.124a2.521 2.521 0 1 1-2.521 2.52v-2.52zm0-1.27a2.521 2.521 0 0 1 0-5.043h6.313a2.521 2.521 0 1 1 0 5.042z"></path></svg></div></a><a aria-label="Join WarpStream on Discord" href="https://console.warpstream.com/socials/discord" target="_blank" class="link-block-44 w-inline-block"><div class="icon-embed-small-2 w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 32 32" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
<path d="M19.7599 5.67999C19.4951 6.15424 19.2591 6.64402 19.0532 7.14666C17.0302 6.82673 14.9695 6.82673 12.9466 7.14666C12.7407 6.64402 12.5047 6.15424 12.2399 5.67999C10.3343 6.00559 8.48176 6.58871 6.73322 7.41333C3.60648 11.9257 2.18847 17.4039 2.73322 22.8667C4.77087 24.3985 7.05783 25.5668 9.49322 26.32C10.0478 25.5875 10.5427 24.8116 10.9732 24C10.1787 23.707 9.41495 23.3363 8.69322 22.8933C8.89117 22.7616 9.07842 22.6145 9.25322 22.4533C11.3578 23.4671 13.6638 23.9935 15.9999 23.9935C18.3359 23.9935 20.6419 23.4671 22.7466 22.4533C22.9332 22.6133 23.1199 22.76 23.3066 22.8933C22.5809 23.3329 21.818 23.7076 21.0266 24.0133C21.4392 24.8434 21.9209 25.6373 22.4666 26.3867C24.8989 25.636 27.1819 24.4674 29.2132 22.9333C29.7711 17.4696 28.3519 11.9869 25.2132 7.47999C23.4843 6.63831 21.6501 6.03289 19.7599 5.67999ZM11.5732 19.7467C10.906 19.6988 10.2833 19.3942 9.83578 18.897C9.38829 18.3998 9.15082 17.7486 9.17322 17.08C9.14744 16.4105 9.38374 15.7574 9.83191 15.2595C10.2801 14.7615 10.9048 14.458 11.5732 14.4133C12.2417 14.458 12.8664 14.7615 13.3145 15.2595C13.7627 15.7574 13.999 16.4105 13.9732 17.08C13.999 17.7494 13.7627 18.4025 13.3145 18.9005C12.8664 19.3985 12.2417 19.702 11.5732 19.7467ZM20.4266 19.7467C19.7593 19.6988 19.1366 19.3942 18.6891 18.897C18.2416 18.3998 18.0042 17.7486 18.0266 17.08C18.0008 16.4105 18.2371 15.7574 18.6852 15.2595C19.1334 14.7615 19.7581 14.458 20.4266 14.4133C21.0963 14.4546 21.723 14.7572 22.1718 15.2559C22.6207 15.7546 22.8558 16.4097 22.8266 17.08C22.8558 17.7503 22.6207 18.4053 22.1718 18.9041C21.723 19.4028 21.0963 19.7054 20.4266 19.7467Z" fill="currentColor"/>
</svg></div></a><a href="https://console.warpstream.com/login" target="_blank" class="button-4 is-secondary is-small w-button">Sign In</a><a href="#" class="button is-small is-icon prettyboxshadow smol hude w-button">Start Free</a><div data-delay="200" data-hover="false" data-w-id="75c45d33-03a8-3af8-4473-7cd23ec50886" class="dropdown2_component w-dropdown"><div class="button is-small is-icon prettyboxshadow smol w-dropdown-toggle"><div>Start Free</div></div><nav class="dropdown2_dropdown-list-2 shadbut navbar w-dropdown-list"><a href="https://console.warpstream.com/signup" class="link-block-89 firsto w-inline-block"><div class="div-block-731"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683882630fceea3de6f57800_Group%20(20).svg" loading="lazy" alt="WarpStream Logo" class="image-175"/><div class="text-block-356">Console Sign Up</div></div></a><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="link-block-89 w-inline-block"><div class="div-block-731"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a43277293dc830587c6d_aws_marketplace%20(1).svg" loading="lazy" alt="AWS Marketplace logo" class="image-175"/><div class="text-block-356">AWS Marketplace</div></div></a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream?project=warpstream-cp-stag" target="_blank" class="link-block-89 lastye w-inline-block"><div class="div-block-731 lasty"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a128ac3a3262e7a3509e_gcp%20(1).svg" loading="lazy" alt="Google Cloud Platform Marketplace logo" class="image-175"/><div class="text-block-356">Google Cloud Marketplace</div></div></a></nav></div></div></nav><div class="div-block-676"><a aria-label="Sign in to WarpStream" href="https://console.warpstream.com/login" class="link-block-81 w-inline-block"><div class="icon-embed-xxsmall-384 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><g fill="currentColor"><path d="M200 40v176H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16Z" opacity=".2"></path><path d="m141.66 133.66l-40 40a8 8 0 0 1-11.32-11.32L116.69 136H24a8 8 0 0 1 0-16h92.69L90.34 93.66a8 8 0 0 1 11.32-11.32l40 40a8 8 0 0 1 0 11.32M200 32h-64a8 8 0 0 0 0 16h56v160h-56a8 8 0 0 0 0 16h64a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8"></path></g></svg></div></a><div class="navbar5_menu-button w-nav-button"><div class="menu-icon1"><div class="menu-icon1_line-top"></div><div class="menu-icon1_line-middle"><div class="menu-icon1_line-middle-inner"></div></div><div class="menu-icon1_line-bottom"></div></div></div></div></div></div></div></div></div></div><header class="section_blog-post-header2"><div class="padding-global"><div class="container-large"><div class="padding-section-large blogposts"><div class="blog-post-header2_component"><div class="max-width-large"><div class="blog-post-header2_title-wrapper"><div class="margin-bottom margin-xsmall"><div class="blog-post-header2_meta-wrapper"><div><div class="w-dyn-list"><div role="list" class="collection-list-14 w-dyn-items"><div role="listitem" class="collection-item-6 w-dyn-item"><a href="/blog-category/engineering" target="_blank" class="tag-2 w-inline-block"><div class="text-block-230">Engineering</div></a></div></div></div></div><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/683f2df449811574aa6f5bb5_character.ai.svg" loading="lazy" alt="" class="image-103 w-condition-invisible w-dyn-bind-empty"/><div class="text-size-small text-weight-semibold"><span fs-readtime-element="time" class="text-span-56">5</span> min read</div></div></div><h1 class="heading-style-h2 spoo">The Case for Shared Storage</h1><div class="w-embed"><style>
.heading-style-h2 {
text-wrap: pretty;
}
</style></div></div></div></div></div></div></div></header><section class="section_content28"><div class="padding-global"><div class="padmay"><div class="container-large"><div class="blogmeta bigmeta"><div class="div-block-64"><div class="div-block-464"><a href="/blog" class="link-block-33 _450676 z abo w-inline-block"><div class="icon-embed-xxsmall-209 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M232 56a104.2 104.2 0 0 1-104 104H51.3l34.4 34.3a8.1 8.1 0 0 1 0 11.4a8.2 8.2 0 0 1-11.4 0l-48-48a8.1 8.1 0 0 1 0-11.4l48-48a8.1 8.1 0 0 1 11.4 11.4L51.3 144H128a88.1 88.1 0 0 0 88-88a8 8 0 0 1 16 0Z"></path></svg></div><div>Back To Blog</div></a></div><div class="div-block-465"><a href="https://www.warpstream.com/contact-us#subscribe" target="_blank" class="link-block-33 _450676 z w-inline-block"><div>Subscribe</div><div class="icon-embed-xxsmall-258 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m224 56l-96 88l-96-88Z" opacity=".2"></path><path fill="currentColor" d="M224 48H32a8 8 0 0 0-8 8v136a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a8 8 0 0 0-8-8Zm-83.9 74L128 133.1L52.6 64h150.8Zm-41.4 6L40 181.8V74.2Zm11.8 10.9l12.1 11a8 8 0 0 0 10.8 0l12.1-11l57.9 53.1H52.6Zm46.8-10.9L216 74.2v107.6Z"></path></svg></div></a><a href="https://www.warpstream.com/blog/rss.xml" target="_blank" class="link-block-33 _450676 w-inline-block"><div>RSS</div><div class="icon-embed-xxsmall-257 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M98.9 157.1A71.6 71.6 0 0 1 120 208a8 8 0 0 1-16 0a56 56 0 0 0-56-56a8 8 0 0 1 0-16a71.6 71.6 0 0 1 50.9 21.1ZM48 88a8 8 0 0 0 0 16a102.9 102.9 0 0 1 73.5 30.5A102.9 102.9 0 0 1 152 208a8 8 0 0 0 16 0A119.8 119.8 0 0 0 48 88Zm118.8 1.2A166.9 166.9 0 0 0 48 40a8 8 0 0 0 0 16a151.1 151.1 0 0 1 107.5 44.5A151.1 151.1 0 0 1 200 208a8 8 0 0 0 16 0a166.9 166.9 0 0 0-49.2-118.8ZM52 192a12 12 0 1 0 12 12a12 12 0 0 0-12-12Z"></path></svg></div></a></div></div></div><div class="content28_component blogbottom"><div id="w-node-_5aa3e456-6444-848a-1fe0-e2be77ec7eb9-e6f5774a" class="max-width-large blogwrap"><div id="author" class="authorbio"><div class="div-block-714"><div class="div-block-712"><div class="div-block-713"><div class="icon-embed-xxsmall-405 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M128 32a96 96 0 0 0-64.2 167.4A72 72 0 0 1 128 160a40 40 0 1 1 40-40a40 40 0 0 1-40 40a72 72 0 0 1 64.2 39.4A96 96 0 0 0 128 32Z" opacity=".2"></path><path fill="currentColor" d="M232 128a104 104 0 1 0-174.2 76.7l1.3 1.2a104 104 0 0 0 137.8 0l1.3-1.2A103.7 103.7 0 0 0 232 128Zm-192 0a88 88 0 1 1 153.8 58.4a79.2 79.2 0 0 0-36.1-28.7a48 48 0 1 0-59.4 0a79.2 79.2 0 0 0-36.1 28.7A87.6 87.6 0 0 1 40 128Zm56-8a32 32 0 1 1 32 32a32.1 32.1 0 0 1-32-32Zm-21.9 77.5a64 64 0 0 1 107.8 0a87.8 87.8 0 0 1-107.8 0Z"></path></svg></div><div class="text-block-335">Richard Artoul</div></div><div class="div-block-711"><div class="div-block-718"><div class="icon-embed-xxsmall-403 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m229.7 157.7l-48 48a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4l34.4-34.3H128A104.2 104.2 0 0 1 24 56a8 8 0 0 1 16 0a88.1 88.1 0 0 0 88 88h76.7l-34.4-34.3a8.1 8.1 0 0 1 11.4-11.4l48 48a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div><div class="text-block-334">Co-Founder</div></div></div></div></div><div class="div-block-712 right"><div><div class="div-block-716"><div class="icon-embed-xxsmall-404 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M40 88h176V48a8 8 0 0 0-8-8H48a8 8 0 0 0-8 8Z" opacity=".2"></path><path fill="currentColor" d="M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16ZM72 48v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24v32H48V48Zm136 160H48V96h160v112Z"></path></svg></div><div class="text-block-335">November 19, 2024</div></div></div><div class="div-block-715"><a id="perma" data-w-id="a0dc6c7d-3849-d842-2ce0-e69b2cce84b3" href="#" class="link-block-86 perma-link w-inline-block"><div class="div-block-717"><div class="div-block-726"><div id="click-clack" fs-copyclip-element="click" class="icon-embed-xsmall-38 spectro w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.9999 7.66008V8.00008C21.0007 9.06616 20.576 10.0885 19.8199 10.84L16.9999 13.67C16.4738 14.1911 15.6261 14.1911 15.1 13.67L15 13.56C14.8094 13.3656 14.8094 13.0544 15 12.86L18.4399 9.42006C18.807 9.03938 19.0083 8.52883 18.9999 8.00008V7.66008C19.0003 7.12705 18.788 6.61589 18.4099 6.2401L17.7599 5.59011C17.3841 5.21207 16.873 4.99969 16.3399 5.00011H15.9999C15.4669 4.99969 14.9558 5.21207 14.58 5.59011L11.14 9.00007C10.9456 9.19064 10.6344 9.19064 10.44 9.00007L10.33 8.89007C9.8089 8.36394 9.8089 7.51623 10.33 6.99009L13.16 4.15012C13.9165 3.40505 14.9382 2.99133 15.9999 3.00014H16.3399C17.4011 2.9993 18.4191 3.42018 19.1699 4.17012L19.8299 4.83012C20.5798 5.5809 21.0007 6.59891 20.9999 7.66008ZM8.64993 13.94L13.9399 8.65008C14.0338 8.55543 14.1616 8.50218 14.2949 8.50218C14.4282 8.50218 14.556 8.55543 14.6499 8.65008L15.3499 9.35007C15.4445 9.44395 15.4978 9.57175 15.4978 9.70507C15.4978 9.83839 15.4445 9.96618 15.3499 10.0601L10.0599 15.35C9.96604 15.4447 9.83824 15.4979 9.70492 15.4979C9.57161 15.4979 9.44381 15.4447 9.34993 15.35L8.64993 14.65C8.55528 14.5561 8.50204 14.4283 8.50204 14.295C8.50204 14.1617 8.55528 14.0339 8.64993 13.94ZM13.5599 15C13.3655 14.8094 13.0543 14.8094 12.8599 15L9.42993 18.41C9.0517 18.7905 8.53645 19.003 7.99995 18.9999H7.65995C7.12691 19.0004 6.61576 18.788 6.23997 18.41L5.58997 17.76C5.21194 17.3842 4.99956 16.873 4.99998 16.34V16C4.99956 15.4669 5.21194 14.9558 5.58997 14.58L9.00993 11.14C9.2005 10.9456 9.2005 10.6345 9.00993 10.44L8.89993 10.33C8.3738 9.80894 7.52609 9.80894 6.99996 10.33L4.17999 13.16C3.42392 13.9116 2.99916 14.9339 3 16V16.35C3.00182 17.4077 3.42249 18.4216 4.16999 19.1699L4.82998 19.8299C5.58076 20.5799 6.59878 21.0008 7.65995 20.9999H7.99995C9.05338 21.0061 10.0667 20.5964 10.8199 19.8599L13.6699 17.01C14.191 16.4838 14.191 15.6361 13.6699 15.11L13.5599 15Z" fill="CurrentColor"/>
</svg></div><div class="icon-embed-xxsmall-406 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M104 196a12.2 12.2 0 0 1-8.5-3.5l-56-56a12 12 0 0 1 17-17L104 167L207.5 63.5a12 12 0 0 1 17 17l-112 112a12.2 12.2 0 0 1-8.5 3.5Z"></path></svg></div></div><div class="text-block-334 url">the-case-for-shared-storage</div></div></a></div></div><div class="code-embed-42 w-embed"><style>
/* Break the min-width chain at the grid item level */
.max-width-large.blogwrap {
min-width: 0;
}
/* Ensure authorbio fills available width and flex children can shrink */
.authorbio {
width: 100%;
min-width: 0;
}
.authorbio .div-block-714,
.authorbio .div-block-712,
.authorbio .div-block-713,
.authorbio .div-block-711,
.authorbio .div-block-715,
.authorbio .div-block-717,
.authorbio .div-block-718 {
min-width: 0;
}
</style></div></div><div class="code-embed-22 w-embed w-script"><style>
.hn-disclaimer {
display: none; /* Initially hide the div */
margin-top: 1rem;
border-radius: 6px;
padding: 2rem;
border: 1px solid rgba(58, 33, 237, 1);
box-shadow: 5px 5px rgba(58, 33, 237, 0.2);
font-size: .9rem !important;
color: rgba(58, 33, 237, 1);
margin-bottom: 3rem;
}
</style>
<div class="hn-disclaimer">
<strong>HN Disclosure:</strong> WarpStream sells a drop-in replacement for Apache Kafka built directly on-top of object storage.
</div>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function() {
var referrer = document.referrer;
if (referrer.includes("news.ycombinator.com")) {
document.querySelector(".hn-disclaimer").style.display = "block"; // Show the div if the referrer is Hacker News
}
});
</script></div><div fs-readtime-element="contents" fs-toc-element="contents" fs-codehighlight-element="code" fs-toc-offsettop="5.5rem" fs-richtext-element="rich-text" fs-codehighlight-theme="github" class="text-rich-text w-richtext"><h2>Introduction</h2><p>In this post, I’ll start off with a brief overview of “shared nothing” vs. “shared storage” architectures <em>in general</em>. This discussion will be a bit abstract and high-level, but the goal is to share with you some of the guiding philosophy that ultimately led to WarpStream’s architecture. We’ll then quickly transition to discussing the trade-offs between the two architectures <em>more specifically</em> in the context of data streaming and WarpStream; this is the WarpStream blog after all!</p><h2>Shared Nothing</h2><p>The term “<a href="https://en.wikipedia.org/wiki/Shared-nothing_architecture">shared nothing</a>” was first introduced as a distributed systems architecture in which nodes share “nothing”, where “nothing” was defined (in practice) as either memory or storage. The goal with shared-nothing architectures is to improve performance and scalability by minimizing <em>contention and coordination overhead</em>. The reasoning for this is simple: if contention and coordination are minimized, then the system should scale almost linearly as nodes are added, since each additional node provides significant additional capacity, and doesn’t incur (much) additional overhead on the existing nodes.</p><p>The most common way that shared-nothing architectures are implemented is by sharding or partitioning the data model. This is almost definitionally true: in order for nodes in the system to avoid excessive coordination, each node must only process a subset of the data, otherwise every request would inevitably involve interacting with every node. In fact, the relationship between shared nothing and sharded architectures is so strong that the terms can be used almost interchangeably. Some people will still refer to a sharded distributed system as leveraging a “shared nothing” architecture, but more commonly they’ll just describe the system as “sharded” or “partitioned”.</p><figure style="max-width:1319pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c76_673c9dc02eceb08b4fb5bf4e_673c9bddfbdf238bc68be59e_Group%252520606.png"/></div></figure><p>Today, the term “shared nothing” is usually reserved for a more specific flavor of sharded distributed system where sharding happens at the <em>CPU level</em> instead of at the <em>node level</em>. Specifically, the term is often used to describe systems that leverage a process-per-core or thread-per-core model where each core of the machine acts as its own logical shard / partition with zero (or very minimal) cross-CPU communication. This architecture is usually implemented with an event-loop-based framework that runs on each CPU using <a target="_blank" href="https://en.wikipedia.org/wiki/Processor_affinity#:~:text=Processor%20affinity%2C%20or%20CPU%20pinning,CPUs%20rather%20than%20any%20CPU.">processor affinity</a> (CPU pinning). A popular example of this is <a target="_blank" href="https://seastar.io/">the C++ Seastar library</a>, which is used by databases like <a target="_blank" href="https://www.scylladb.com/">ScyllaDB</a>.</p><figure style="max-width:1606pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c7a_673c9dc02eceb08b4fb5bf6f_673c9bbc3451798d80d235c2_Group%252520605.png"/></div></figure><p>Shared-nothing architectures have a lot of benefits –  primarily that they scale (almost) infinitely for perfectly shardable workloads. Of course, the primary downside of shared-nothing architectures is that they’re susceptible to hotspotting if the workload <strong>doesn’t</strong> shard well. For example, if you write records to a sharded KV store like Redis or Cassandra, but 90% of the records have the same partition key, then scaling the cluster beyond the maximum throughput of a single node will be impossible because the entire cluster will be bottlenecked by the node(s) responsible for the hot partition key.</p><figure style="max-width:1606pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c7c_673cd00c92141d02dc381e09_673ccffb4ab6783c61e606d9_Group%252520611.png"/></div></figure><p>This problem is particularly acute for systems that take “shared nothing” to its logical extreme with CPU-level sharding. The reason for this is simple: in a system where sharding happens at the node level, the maximum potential throughput of a single shard is the maximum throughput of a single node which can be increased with vertical scaling, whereas if sharding happens at the CPU level, the maximum potential throughput is bound by the maximum throughput of a <em>single core.</em></p><figure style="max-width:1256pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c7b_673c9dc12eceb08b4fb5bf7d_673c9c403451798d80d2b310_Group%252520608.png"/></div></figure><p>Because of all this, heat management (the process of trying to keep every shard evenly balanced) is <strong>the</strong> defining problem that shared-nothing distributed systems must solve.</p><h2>Shared Storage</h2><p>Shared storage systems take a very different approach. Instead of sharding at <em>the node level</em> or <em>cpu level,</em> they shard at the <em>storage level</em> using remote storage. In practice, this is usually accomplished by using a remote storage system that is implemented as a shared-nothing architecture (like commodity object storage), and combining it with a centralized metadata store.</p><figure style="max-width:2068pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c78_673c9dc02eceb08b4fb5bf69_673c9c86bc41fd1a1d20a48d_Group%252520609.png"/></div></figure><p>The metadata store acts as a central point of coordination (the exact opposite of a shared-nothing architecture), which enables the compute nodes in the system to behave as one logical system while still performing work independently. In terms of what the metadata <em>is</em>, that varies a lot from one shared storage system to another, but <em>in general</em>, the primary responsibility of the metadata layer is to serve as a strongly consistent source of truth about what data exists in the system, and where it is located. In addition, it is the metadata layers’ responsibility to guarantee the overall correctness of the system behaving in a highly distributed manner: ensuring that operations are performed atomically/transactionally, resolving conflicts, preventing duplicates, etc.</p><p>This technique is commonly referred to as “separation of storage and compute”, but a phrase I’ve found to be more useful is “separation of data from metadata”. What does this mean? Well, compare and contrast a shared-nothing distributed <a target="_blank" href="https://en.wikipedia.org/wiki/Log-structured_merge-tree">log-structured merge-tree</a> (LSM) like Cassandra, with a shared storage distributed LSM like a modern data lake.</p><p>In Cassandra, there are $REPLICATION_FACTOR nodes that are responsible for all the data for a given partition key. When we want to interact with that data, we must route our requests to the nodes responsible for that key no matter what, and then consult the metadata stored on those nodes to find the data that we want to process (if it exists). With this architecture, the maximum throughput of a partition key will <strong>always</strong> be bound by the maximum throughput of a Cassandra node.</p><p>In a modern data lake, the metadata store introduces a layer of indirection between the sharding scheme (I.E the user-facing data model) and the storage layer. It doesn’t matter <em>at all</em> which storage node(s) the data is stored on, because its location is tracked and indexed in the metadata store. As a result, we can pick a sharding key for the storage layer that shards perfectly, like a UUID or strong hash function. In distributed LSM terms, this means we could write <em>all of the records</em> to the system with the same partitioning key, and still evenly distribute the load across all of the storage nodes in the system.</p><figure style="max-width:2415pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c7d_673cd15782724ad551cc669d_673cd1528f110b5b36f7b25b_Group%252520612.png"/></div></figure><p>For example in the diagram above, imagine the client is constantly writing to the same key: “key1”. In a shared-nothing architecture, all of this traffic will be routed to the same storage node and overload it. In a shared storage architecture, the layer of indirection created by the intermediary compute layer and centralized metadata store results in the load being evenly distributed across the storage nodes.</p><p>This results in a very different set of trade-offs from shared-nothing architectures: the system will not scale <em>infinitely</em>, even with a perfect sharding/partitioning key, because the centralized metadata store is a (potential) bottleneck. However, the problem of hotspotting disappears almost entirely because as you can see in the diagram above, we can balance writes against the storage nodes however we want, whenever we want. In fact, not only does hotspotting become a non-issue, but the system also gains the ability to shift load around the cluster almost instantaneously.</p><p>This is the killer feature that explains why almost every modern data lake / warehouse is implemented as a shared storage architecture instead of a shared-nothing one: the ability to choose <em>at query time</em> whether to recruit one CPU or 10,000 to process an individual request is what enables all of the performance and functionality that defines the modern data landscape.</p><p>Of course, while this architecture solves the hotspotting problem, it’s not without trade-offs. If heat management is the defining problem for shared-nothing systems, then metadata scaling is the defining problem for shared storage systems. We’ll discuss this problem more later in the <a href="#warpstream-metadata-scalability">WarpStream Metadata Scalability section</a>.</p><h2>One Final Tradeoff: Flexibility vs. Latency</h2><p>The split between shared nothing and shared storage architectures is not a hard boundary –many systems lie somewhere in the middle and include aspects of both. But <em>in general,</em> highly transactional systems (like <a target="_blank" href="https://www.postgresql.org/">Postgres</a>) tend to lean toward shared-nothing architectures, whereas highly analytical systems (like <a target="_blank" href="https://info.snowflake.net/rs/252-RFO-227/images/Snowflake_SIGMOD.pdf">Snowflake</a>) tend to lean toward shared storage architectures. The reason for this is primarily due to the inherent trade-offs around flexibility and latency.</p><p>Transactional systems forgo flexibility to reduce latency. For example, relational databases require that you define your schemas and indexes up front, that your data is (mostly) structured, that you pre-size your database instances to the amount of expected load, and that you think hard about what types of queries your application will need to run <em>up front</em>. In exchange, they will happily serve tens of thousands of concurrent queries with single-digit milliseconds latency.</p><p>Analytical systems take the exact opposite approach. You can run whatever query you want, whenever you want, regardless of the existing schemas. You can also recruit as much hardware as you want at a moment&#x27;s notice to accelerate the queries, even thousands of cores for just a few minutes, and you don’t have to think about what types of queries you want to run up front. However, your data lake / warehouse will almost never complete any queries in single-digit milliseconds. Even double-digit milliseconds query execution time is rare for analytical databases <em>in practice</em>, except for the easiest workloads.</p><p>The details and intuitions behind <em>why</em> shared nothing architectures can provide much lower latency than shared storage architectures are beyond the scope of this blog post, but here’s a simple intuition: Since shared storage architectures involve so much more coordination, they tend to do a lot of batching to improve throughput; this results in higher latency.</p><h2>Apache Kafka and Other Data Streaming Systems</h2><p>OK, let’s get more specific and talk about the data streaming landscape. <a target="_blank" href="https://kafka.apache.org/">Apache Kafka</a> is a <em>classic</em> shared-nothing distributed system that uses node-level sharding to scale. The primary unit of sharding in Kafka is a <a target="_blank" href="https://developer.confluent.io/courses/apache-kafka/partitions/">topic-partition</a>, and scaling is handled by balancing topic-partitions across brokers (nodes).</p><figure style="max-width:1319pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c76_673c9dc02eceb08b4fb5bf4e_673c9bddfbdf238bc68be59e_Group%252520606.png"/></div></figure><p>This means that Apache Kafka can handle imbalances in the throughput (either read or write) of individual topic-partitions reasonably well, but the maximum throughput of a single topic-partition will always be bound by the maximum throughput of a single broker. This is obvious if we go back to the diagram from earlier:</p><figure style="max-width:1256pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c7b_673c9dc12eceb08b4fb5bf7d_673c9c403451798d80d2b310_Group%252520608.png"/></div></figure><p>The bigger the machine we can get Apache Kafka to run on, the more resilient it will be to variation in individual topic-partition throughput. That said, while some imbalance can be tolerated, <em>in general,</em> the topic-partitions in a Kafka cluster need to be well balanced across the brokers in order for the cluster to scale properly. They also need to be balanced across multiple dimensions (throughput, requests per second, storage, etc.).</p><p>As discussed earlier, the trade-offs with this approach are clear: Apache Kafka clusters can scale linearly and (almost) infinitely as long as additional brokers and partitions are added. However, topic-partitions <em>must</em> be balanced very carefully across various dimensions, adding or removing capacity takes a long time (especially if you use very large brokers!), and there are hard limits on the maximum throughput of individual topic-partitions, especially in an already-busy cluster.</p><p>Of course, Apache Kafka isn’t the only technology in the data streaming space, but in practice, almost all of the other data streaming systems (AWS Kinesis, Azure Event Hubs, AWS MSK, etc.) use a similar shared-nothing architecture and as a result experience similar tradeoffs.</p><p>In fact, for a long time, shared-nothing was widely considered to be <em>the correct way</em> to build data streaming systems, to the point where even some of the <em>newest</em> entrants to the data streaming space leaned <em>even further</em> into the shared-nothing architecture by leveraging libraries like Seastar(C++) to do CPU-level sharding of topic-partitions. This enables lower latency in some scenarios, but exacerbates all of Apache Kafka’s topic-partition balancing issues <em>even further</em> since the maximum throughput of a single partition is now bound by the maximum throughput <em>of a single core</em> instead of a <em>single broker</em>.</p><figure style="max-width:1606pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c7c_673cd00c92141d02dc381e09_673ccffb4ab6783c61e606d9_Group%252520611.png"/></div></figure><p>Unless you need microsecond-level performance, the trade-offs of using CPU-level sharding for data streaming workloads are simply not worth it. Another thing I won’t dwell on, but will point out quickly is that while it’s <em>tempting</em> to think that tiered storage could help here, in practice <a target="_blank" href="https://www.warpstream.com/blog/tiered-storage-wont-fix-kafka">it doesn’t</a>.</p><h2>WarpStream’s Shared Storage Architecture</h2><p>With WarpStream, we took a different approach. Instead of doubling down on the shared-nothing architecture used by other data streaming systems, we decided to take a page out of the data warehousing playbook and build WarpStream from the ground up with a shared storage architecture instead of a shared-nothing architecture.</p><figure style="max-width:5061pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c79_672d530a89def12811a86672_With%20WarpStream%20-%20Editable%20Text.svg"/></div></figure><p>Instead of Kafka brokers, WarpStream has “Agents”. Agents are stateless Go binaries (no JVM!) that speak the Kafka protocol, but unlike a traditional Kafka broker, any WarpStream Agent can act as the “leader” for any topic, commit offsets for any consumer group, or act as the coordinator for the cluster. No Agent is special, so auto-scaling them based on CPU usage or network bandwidth is trivial. In other words, WarpStream is the shared storage alternative to Apache Kafka’s shared nothing architecture.</p><p>WarpStream can still provide all the exact same abstractions that Kafka does (topics, partitions, consumer groups, ordering within a topic-partition, transactions, etc) even though the Agents are stateless and there are no leaders, because it uses a centralized metadata store that acts as the logical leader for the entire cluster. For example, two Agents can concurrently flush files to object storage that contain batches of data for the same topic-partition, but consumers will still consume the batches in a deterministic order because the metadata store will determine the order of the batches in the two different files relative to each other when the files are <em>committed</em> to the metadata store.</p><figure style="max-width:1849pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c77_673c9dc02eceb08b4fb5bf6c_673c9d31dc241fbe43452188_Group%252520580.png"/></div></figure><p>Because WarpStream relies on remote storage, it is a higher latency data streaming system than Apache Kafka. In practice, we’ve found that it&#x27;s <em>real-time enough</em> (P99 latency in the hundreds of milliseconds) not to matter for the vast majority of use cases. And in exchange for this higher latency, WarpStream gains a lot of other benefits. </p><p>We’ve written about many of those benefits before in previous posts (<a href="https://www.warpstream.com/blog/zero-disks-is-better-for-kafka" target="_blank">like this one on our zero disks / diskless kafka architecture</a>), so we won’t repeat them here. Instead, today I’d like to focus on one specific benefit that is usually overlooked: heat management and topic-partition limits.</p><p>In Apache Kafka, a topic-partition is a “real” thing. Somewhere in the cluster there is a broker that is the leader for that topic-partition, and it is the <em>only</em> broker in the cluster that is allowed to process writes for that topic-partition. No matter what you do, the throughput of that topic-partition will always be bound by the free capacity of that specific broker.</p><p>In WarpStream, topic-partitions are much more virtualized – so much so that you could configure a WarpStream cluster with a single topic-partition and write 10GiB/s to it across a large number of Agents. Consuming the data in a reasonable manner would be almost impossible, but you’d have no trouble writing it.</p><p>The reason this is possible is because WarpStream has a shared storage architecture that separates storage from compute, and data from metadata. In WarpStream, any Agent can handle writes or reads for any topic-partition, therefore the maximum throughput of a topic-partition is not bound by the maximum throughput of any single Agent, let alone a single core.</p><p>Obviously, there are not many use cases for writing 10GiB/s to a single topic-partition, but it turns out that having a data streaming system with effectively no limits on the throughput of individual topic-partitions is really useful, especially for multi-tenant workloads. </p><p>For example, consider an Apache Kafka cluster that is streaming data for a multi-tenant workload where tenants are mapped to specific topic-partitions in some deterministic manner. A tenant typically doesn’t write more than 50MiB/s of data at peak, but every once in a while one of the tenants temporarily bursts 10x to 500 MiB/s.</p><p>With a traditional shared-nothing Apache Kafka cluster, every Broker in the cluster would always require an additional 450MiB/s of spare capacity (in terms of CPU, networking, and disk). This would be extremely inefficient and difficult to pull off in practice.</p><p>Contrast that with WarpStream where the additional 450MiB/s would be automatically spread across all of the available Agents so you would only need 450MiB/s of spare capacity at the <em>cluster level</em> instead of the <em>node level</em> which is much easier (and cheaper) to accomplish. In addition, since the WarpStream Agents are stateless, <a target="_blank" href="https://docs.warpstream.com/warpstream/byoc/deploy#auto-scaling">they’ll auto-scale when the overall cluster load increases</a>, so you won’t have to worry about manual capacity planning.</p><p>But how does this work <em>in practice</em> while remaining within the confines of the Kafka protocol? Since any WarpStream Agent can handle writes or reads for any topic-partition, WarpStream doesn’t try to balance partitions across brokers as Kafka does. Instead, WarpStream balances <em>connections</em> across Agents. </p><p>When a Kafka client issues a Metadata request to a WarpStream cluster to determine which Agent is the “leader” for a specific topic-partition, the WarpStream control plane consults <a target="_blank" href="https://docs.warpstream.com/warpstream/overview/architecture/service-discovery">the service discovery system</a> and returns a Metadata response with a single Agent (one that has lower overall utilization than the other Agents in the cluster) as the leader for <strong>all</strong> of the topic-partitions that the client requested.</p><figure style="max-width:2345pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c7f_673c9dc12eceb08b4fb5bfb4_673c9d610df03ce0dfd65927_Group%252520601.png"/></div><figcaption>WarpStream&#x27;s load balancing strategy looks more like a traditional load balancer than Apache Kafka which results in a full mesh of connections.</figcaption></figure><p>Another way to think about this is that with Apache Kafka, the “processing power” of the cluster is assigned to <strong>individual partitions</strong> and divided amongst all the Brokers when a rebalance happens (which can take hours, or even days to perform), whereas with WarpStream the “processing power” of the cluster is assigned to <strong>individual connections </strong>and divided amongst all the Agents on the fly based on observable load. “Rebalancing” happens continuously, but since its just <strong>connections</strong> being rebalanced, not <strong>partitions or data</strong> it happens in seconds/minutes instead of hours/days.</p><p>This has a number of benefits:</p><ol role="list"><li>It balances the overall cluster utilization for both produce and fetch across all the Agents equally regardless of how writes / reads are distributed across different topic-partitions.</li><li>Each Kafka client ends up connected to roughly one Agent, instead of creating a full mesh of connections like it would with Apache Kafka. This makes it much easier to scale WarpStream to workloads with a very high number of client connections. In other words, WarpStream clusters scale more like a traditional load balancer than a Kafka cluster.</li><li>The Kafka clients will periodically issue background Metadata requests to refresh their view of the cluster, so the client connections are continuously rebalanced in the background.</li><li>Load balancing connections is an almost instantaneous process that doesn’t require copying or re-replicating data, whereas rebalancing partitions in Apache Kafka can take hours or even days to complete.</li></ol><h2>WarpStream Metadata Scalability</h2><p>There’s still one final point to discuss: metadata scalability. We mentioned earlier in the shared storage section that the defining problem for shared storage systems is scaling the metadata layer to high-volume use cases. Since the metadata store is centralized and shared by the entire system, it’s the most likely component to become the limiting factor for an individual cluster.</p><p>In terms of what the metadata <em>is</em> for WarpStream, I mentioned earlier in the shared storage section that the metadata layer’s primary responsibility is keeping track of what data exists in the system, and where it can be located. WarpStream’s metadata store is no different: its primary responsibility is to keep track of all the different batches for every topic-partition, as well as their relative ordering. This ensures that consumers can read a topic-partition’s batches in the correct order, even if those batches are spread across many different files. This is how WarpStream recreates Apache Kafka’s abstraction of an ordered log.</p><p>How WarpStream solves the metadata layer scalability problem warrants its own blog post, but I’ll share a few key points briefly:</p><ol role="list"><li>Depending on the data model of the system being implemented, the metadata store itself may be amenable to sharding. This is interesting because it further solidifies the idea that the line between shared nothing and shared storage systems is blurry where a shared storage system may be implemented with dependencies on a shared nothing system, and vice versa.</li><li>Good design that incorporates batching and ensures that the ratio of $DATA_PLANE_BYTES / $CONTROL_PLANE_BYTES is high minimizes the amount of work that the metadata store has to perform relative to the data plane. A ratio of 1,000 ensures that the metadata store will scale comfortably to large workloads, and a ratio of 10,000 or higher means the metadata store will likely never be the bottleneck in the first place even if it runs on a single CPU.</li></ol><p>To make this more concrete, consider the following real WarpStream cluster. At peak, the cluster handles roughly 4.5GiB/s of traffic:</p><figure style="max-width:1340pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c93_673c9b3adf6e6ad8d094ec64_AD_4nXf5FoCdcfgVw4IWJQCDcYk_M4iXVjfF5_5tlAJAPwsakWLAeQ3jH9k-E0J_xs-noKSV_B9G4Z8xdMX3i5PBBA69hnCnz6e27bwZpN04ue--_r5gKSgg2gGB5avFzbDC2SGycXYnW48yclQKF1fAv_QBkU7N.png"/></div></figure><figure style="max-width:1342pxpx" class="w-richtext-align-fullwidth w-richtext-figure-type-image"><div><img loading="lazy" alt="" src="https://cdn.prod.website-files.com/683882630fceea3de6f57776/683882630fceea3de6f57c8f_673c9b37aa2abbde4d7d03da_AD_4nXfgLte-85jH6YA5gH5U_nPQhsXSZNO5ByU2cOVepvfeN-vOY9czvm6L4IUL8vrp3YajC79tsp7BCUMEm3GYRwR61cm1xpSZEHhX6kMtadI1MSMjombN-ZOefF4wZF3WwSEMtJRipA1i2cyTgn-ayzm4To0.png"/></div></figure><p>At this peak, the metadata store for this cluster is less than 10% utilized. This implies that with no further changes, this workload could scale another 10x to over 40 GiB/s in write throughput before the metadata store became a bottleneck. This is a real customer workload, not a benchmark, running with our default metadata store settings, with no special tuning or optimizations to handle this particular workload.</p><p>Of course in reality there are many different factors that impact the metadata store utilization besides write throughput. Things like the number of Kafka clients, how they’re configured, the number of topic-partitions that are being written / read from, etc.</p><p>But in practice, we’ve never encountered a workload that came even close to the theoretical limits of our metadata store. The highest metadata store utilization we’ve ever observed across any of our clusters currently sits at 30%, and that’s a single WarpStream cluster that serves hundreds of applications, more than 10,000 clients, and has nearly 40,000 topic-partitions. In addition, this particular customer onboarded to WarpStream after several failed attempts to scale their workload with alternative systems (not Apache Kafka) that use CPU-level shared-nothing architectures. These systems should have scaled better than WarpStream <em>in theory</em>, but in practice were plagued by heat management issues that made it impossible for them to keep up with the demands of this workload.</p><h2>Conclusion</h2><p>I’ll end with this: shared-nothing architectures are incredibly attractive for their <em>theoretical</em> scaling properties. But actually <em>realizing</em> those benefits requires finding a natural sharding key that’s very regular, or deploying an incredible amount of effort to face the heat management problem. In the real world, where it’s hard to keep all your clients very well-behaved, hoping the sharding key is going to keep your workload very balanced is often unrealistic. To make things worse, it often needs to be balanced across multiple dimensions like write throughput, read throughput, storage size, etc.</p><p>Shared storage architectures, on the other hand, have a lower <em>theoretical</em> scale ceiling, but <em>in practice</em> they are often much easier to scale than their shared nothing counterparts. The reason for this is simple, but not obvious: shared storage systems separate data from metadata which introduces a layer of abstraction between the user-facing domain model and the physical sharding used by the storage engine. As a result, it is possible to choose at runtime how much of the resources we allocate to storing or retrieving data for a particular key, rather than forcing us to choose it when we create the cluster topology. This solves the heat management problem in a very simple way. </p><p>In exchange for this massive benefit, shared storage architectures usually incur a higher latency penalty and have to figure out how to scale their centralized metadata stores. While scaling the metadata layer seems daunting at first, especially since sharding is often impractical, it turns out that often the metadata problem can be made <em>so small</em> that it <strong>doesn’t need to be sharded in the first place.</strong></p><p>Shared storage architectures are not the answer to every problem. But they’re so much more <em>flexible</em> and <em>easier</em> to manage than shared-nothing architectures, they should probably be the default for all but the most latency-sensitive workloads. For example, as we outlined earlier in the WarpStream section, the ability to leverage the abstraction of Kafka without ever having to deal with topic-partition balancing or per-partition limits is a huge improvement for the end-user. In addition, with modern cloud storage technologies like S3 Express One Zone and even DynamoDB, the latency penalty just isn’t that high.</p></div><section class="section_cta7-2 blog"><div class="cta7_component-2"><div class="cta7_content-2"><div class="text-block-185">Get started with WarpStream today and get $400 in credits that never expire. No credit card is required to start.</div></div><div class="cta7_button-row"><div class="button-group"><a href="https://console.warpstream.com/signup" target="_blank" class="button is-small is-icon prettyboxshadow w-inline-block"><div class="text-block-3">Get Started</div><div class="icon-embed-xxsmall-125 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M94.1 184.6c-11.4 33.9-56.6 33.9-56.6 33.9s0-45.2 33.9-56.6Zm90.5-67.9v64.6a8 8 0 0 1-2.4 5.6l-32.3 32.4a8 8 0 0 1-13.5-4.1l-8.4-41.9Zm-45.3-45.3H74.7a8 8 0 0 0-5.6 2.4l-32.4 32.3a8 8 0 0 0 4.1 13.5l41.9 8.4Z" opacity=".2"></path><path fill="currentColor" d="M96.6 177a7.9 7.9 0 0 0-10.1 5c-6.6 19.7-27.9 25.8-40.2 27.7c1.9-12.3 8-33.6 27.7-40.2a8 8 0 1 0-5.1-15.1c-16.4 5.4-28.4 18.4-34.8 37.5a91.8 91.8 0 0 0-4.6 26.6a8 8 0 0 0 8 8a91.8 91.8 0 0 0 26.6-4.6c19.1-6.4 32.1-18.4 37.5-34.8a7.9 7.9 0 0 0-5-10.1Z"></path><path fill="currentColor" d="M227.6 41.8a15.7 15.7 0 0 0-13.4-13.4c-11.3-1.7-40.6-2.5-69.2 26.1l-9 8.9H74.7a16.2 16.2 0 0 0-11.3 4.7l-32.3 32.4a15.9 15.9 0 0 0-4 15.9a16 16 0 0 0 12.2 11.1l39.5 7.9l41.8 41.8l7.9 39.5a16 16 0 0 0 11.1 12.2a14.7 14.7 0 0 0 4.6.7a15.6 15.6 0 0 0 11.3-4.7l32.4-32.3a16.2 16.2 0 0 0 4.7-11.3V120l8.9-9c28.6-28.6 27.8-57.9 26.1-69.2ZM74.7 79.4H120l-39.9 39.9l-37.7-7.5Zm81.6-13.6c7.8-7.8 28.8-25.6 55.5-21.6c4 26.7-13.8 47.7-21.6 55.5L128 161.9L94.1 128Zm20.3 115.5l-32.4 32.3l-7.5-37.7l39.9-39.9Z"></path></svg></div></a></div></div></div><div class="div-block-736"><div class="div-block-735"><div class="text-block-358">Or, get started through a cloud marketplace:</div><div class="div-block-734"><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="link-block-90 shadbut w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a43277293dc830587c6d_aws_marketplace%20(1).svg" loading="lazy" alt="AWS Marketplace logo" class="image-178"/><div>AWS</div></a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream" target="_blank" class="link-block-90 shadbut w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a092e2b0c1127bcb19fb_google_cloud-icon.svg" loading="lazy" alt="" class="image-178"/><div>GCP</div></a></div></div></div></section><div class="w-layout-grid grid-66"><div class="div-block-508"><div class="zeroisbetter smool">Explore WarpStream</div></div><a href="https://www.warpstream.com/migration" class="div-block-642 w-inline-block"><div class="zeroisbetter smool">Why Switch?</div><div class="icon-embed-xxsmall-191 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m229.7 157.7l-48 48a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4l34.4-34.3H128A104.2 104.2 0 0 1 24 56a8 8 0 0 1 16 0a88.1 88.1 0 0 0 88 88h76.7l-34.4-34.3a8.1 8.1 0 0 1 11.4-11.4l48 48a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div></a><a href="/bring-your-own-cloud-kafka-data-streaming" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Bring Your Own Cloud</div><div class="icon-embed-xxsmall-133 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 128a80 80 0 1 1 80 80H72a56 56 0 0 1 0-112a57.5 57.5 0 0 1 13.9 1.7" opacity=".2"></path><path fill="currentColor" d="M160 40a88 88 0 0 0-78.7 48.7A58.2 58.2 0 0 0 72 88a64 64 0 0 0 0 128h88a88 88 0 0 0 0-176Zm0 160H72a48 48 0 0 1 0-96h3.3a85.7 85.7 0 0 0-3.3 24a8 8 0 0 0 16 0a72 72 0 1 1 72 72Z"></path><path fill="currentColor" d="M186.3 110.3L144 152.7l-18.3-18.4a8.1 8.1 0 0 0-11.4 11.4l24 24a8.2 8.2 0 0 0 11.4 0l48-48a8.1 8.1 0 0 0-11.4-11.4Z"></path></svg></div></div><div class="text-block-255">Deploy in any cloud or self-host, using your own compute and object storage.</div></a><a href="/managed-data-pipelines-kafka-compatible-stream-processing" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Managed Data Pipelines</div><div class="icon-embed-xxsmall-134 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M72 176a28 28 0 1 1-28-28a28 28 0 0 1 28 28Z" opacity=".2"></path><path fill="currentColor" d="m245.7 74.3l-40-40a8.1 8.1 0 0 0-11.4 11.4L220.7 72H176a56 56 0 0 0-56 56a40 40 0 0 1-40 40h-.9a36 36 0 1 0 0 16h.9a56 56 0 0 0 56-56a40 40 0 0 1 40-40h44.7l-26.4 26.3a8.1 8.1 0 0 0 0 11.4a8.2 8.2 0 0 0 11.4 0l40-40a8.1 8.1 0 0 0 0-11.4ZM44 196a20 20 0 1 1 20-20a20.1 20.1 0 0 1-20 20Z"></path></svg></div></div><div class="text-block-255">Managed integrations and connectors. Powerful, scalable stream processing.</div></a><a id="w-node-_770f74e4-2677-c4f5-91ab-0f24f65dea91-e6f5774a" href="/orbit-apache-kafka-migration-and-replication" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Orbit</div><div class="icon-embed-xxsmall-135 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M216 128a88 88 0 1 1-88-88a88 88 0 0 1 88 88Z" opacity=".2"></path><path fill="currentColor" d="M245.8 60c-5.5-9.5-20.3-18.4-59.8-8.5A96 96 0 0 0 32 128a117.3 117.3 0 0 0 .7 12c-28.3 29.2-27.9 46.5-22.5 56c3.7 6.4 11.9 12.8 29.8 12.8a121.7 121.7 0 0 0 25.5-3.2l4.5-1.1A96 96 0 0 0 224 128a117.3 117.3 0 0 0-.7-12l3.1-3.3c25.3-27.5 24.5-43.8 19.4-52.7ZM128 48a80.2 80.2 0 0 1 78.1 62.5c-16.2 15.4-37.8 31.2-62.1 45.2s-48.7 24.9-70.1 31.1A79.9 79.9 0 0 1 128 48ZM24.1 188c-1.5-2.6-.7-7.5 2.3-13.4A85.7 85.7 0 0 1 37.1 159a95.2 95.2 0 0 0 18.7 32.2c-18.7 3.3-29.3 1-31.7-3.2ZM128 208a79.6 79.6 0 0 1-37.9-9.6c19.6-6.8 40.8-16.7 61.9-28.8a373.3 373.3 0 0 0 55.9-39.2A80 80 0 0 1 128 208Zm72.2-143.2a83.9 83.9 0 0 1 19-1.5c6.6.4 11.2 2.1 12.7 4.7c2.4 4.2-.9 14.5-13 29a95.2 95.2 0 0 0-18.7-32.2Z"></path></svg></div></div><div class="text-block-255">Offset-preserving replication from any source Apache Kafka cluster.</div></a><a href="/data-governance-schema-registry-and-validation" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Data Governance</div><div class="icon-embed-xxsmall-136 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><ellipse cx="128" cy="80" fill="currentColor" opacity=".2" rx="88" ry="48"></ellipse><path fill="currentColor" d="M128 24c-53.8 0-96 24.6-96 56v96c0 31.4 42.2 56 96 56s96-24.6 96-56V80c0-31.4-42.2-56-96-56Zm80 104c0 9.6-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 147.4 48 137.6 48 128v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6ZM69.6 53.1C85.1 44.6 105.8 40 128 40s42.9 4.6 58.4 13.1C200.1 60.6 208 70.4 208 80s-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 99.4 48 89.6 48 80s7.9-19.4 21.6-26.9Zm116.8 149.8c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 195.4 48 185.6 48 176v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6V176c0 9.6-7.9 19.4-21.6 26.9Z"></path></svg></div></div><div class="text-block-255">Schema registry, linking, and validation in your own cloud account.</div></a><a href="/multi-region-clusters" class="div-block-507 w-inline-block"><div class="div-block-506"><div>Multi-Region Clusters</div><div class="icon-embed-xxsmall-138 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M80 108v40a8 8 0 0 1-8 8H32a8 8 0 0 1-8-8v-40a8 8 0 0 1 8-8h40a8 8 0 0 1 8 8Zm136-68h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8V48a8 8 0 0 0-8-8Zm0 112h-48a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8Z" opacity=".2"></path><path fill="currentColor" d="M168 112h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a32.1 32.1 0 0 0-32 32v24H88v-12a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v40a16 16 0 0 0 16 16h40a16 16 0 0 0 16-16v-12h24v24a32.1 32.1 0 0 0 32 32h8v16a16 16 0 0 0 16 16h48a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-48a16 16 0 0 0-16 16v16h-8a16 16 0 0 1-16-16V96a16 16 0 0 1 16-16h8v16a16 16 0 0 0 16 16Zm-96 36H32v-40h40v40Zm96 12h48v48h-48Zm0-112h48v48h-48Z"></path></svg></div></div><div class="text-block-255">RPO=0: Zero point of failure by default with no ops, tuning, or trade-offs.</div></a><a href="/tableflow" class="div-block-507 w-inline-block"><div class="div-block-506"><div class="div-block-549"><div>Tableflow</div><div class="text-block-266">New!</div></div><div class="div-block-548"><div class="icon-embed-xxsmall-292 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M33.7 77A8 8 0 0 1 35 65.8a81.8 81.8 0 0 1 29.1-13.6c16.1-4 41.1-5 68.3 13.1c42.4 28.3 77.2 1.6 78.6.4a8.2 8.2 0 0 1 11.3 1.3a8 8 0 0 1-1.3 11.2a81.8 81.8 0 0 1-29.1 13.6a81 81 0 0 1-19.7 2.4c-14 0-30.8-3.7-48.6-15.5c-42.4-28.3-77.2-1.6-78.6-.4A8.2 8.2 0 0 1 33.7 77ZM211 121.7c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 121.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a81 81 0 0 0 19.7-2.4a81.8 81.8 0 0 0 29.1-13.6a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Zm0 56c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 177.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a82.6 82.6 0 0 0 48.8-16a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Z"></path></svg></div></div></div><div class="text-block-255">Fully-managed iceberg tables, materialized from any Kafka topic.</div></a></div></div><div id="w-node-_5aa3e456-6444-848a-1fe0-e2be77ec7edb-e6f5774a" class="content28_sidebar"><div class="margin-top margin-xsmall"><div class="content28_link-content"><div class="div-block-330"><div class="icon-embed-xxsmall-139 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 72v112a8 8 0 0 1-8 8h-24v-88l-40-40H80V40a8 8 0 0 1 8-8h80Z" opacity=".2"></path><path fill="currentColor" d="m213.7 66.3l-40-40A8.1 8.1 0 0 0 168 24H88a16 16 0 0 0-16 16v16H56a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h112a16 16 0 0 0 16-16v-16h16a16 16 0 0 0 16-16V72a8.1 8.1 0 0 0-2.3-5.7ZM168 216H56V72h76.7l35.3 35.3V216Zm32-32h-16v-80a8.1 8.1 0 0 0-2.3-5.7l-40-40A8.1 8.1 0 0 0 136 56H88V40h76.7L200 75.3Zm-56-32a8 8 0 0 1-8 8H88a8 8 0 0 1 0-16h48a8 8 0 0 1 8 8Zm0 32a8 8 0 0 1-8 8H88a8 8 0 0 1 0-16h48a8 8 0 0 1 8 8Z"></path></svg></div><h3 class="heading-style-h5">Table of contents</h3></div><div class="content28_link-wrapper is-h2"><a href="#" class="content28_link w-inline-block"><div fs-toc-element="link" class="text-size-medium-2">Heading 2</div></a><div fs-toc-element="ix-trigger" data-w-id="5aa3e456-6444-848a-1fe0-e2be77ec7ee6" class="content28_h-trigger"></div></div></div><div class="div-block-70"><a href="https://cal.com/forms/9c5f3fcf-55ee-452b-8df3-0a1098010774" target="_blank" class="div-block-68 w-inline-block"><div class="icon-embed-xxsmall-142 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16ZM48 48h24v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24v32H48Zm160 160H48V96h160v112Zm-80-44a24 24 0 0 1-41 17a8 8 0 0 1 0-11.3a7.9 7.9 0 0 1 11.3 0a8.3 8.3 0 0 0 5.7 2.3a8 8 0 0 0 0-16a8 8 0 0 1-6.2-13l5.6-7H92a8 8 0 0 1 0-16h28a8 8 0 0 1 6.2 13l-8.8 11.1A23.9 23.9 0 0 1 128 164Zm40-36v52a8 8 0 0 1-16 0v-36l-3.2 2.4a8.1 8.1 0 0 1-11.2-1.6a8 8 0 0 1 1.6-11.2l16-12A8 8 0 0 1 168 128Z"></path></svg></div><div>Talk to an expert</div></a><a href="/migration" target="_blank" class="div-block-68 fw w-inline-block"><div class="icon-embed-xxsmall-341 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M224 128a8 8 0 0 1-8 8H112a8 8 0 0 1 0-16h104a8 8 0 0 1 8 8ZM112 72h104a8 8 0 0 0 0-16H112a8 8 0 0 0 0 16Zm104 112H40a8 8 0 0 0 0 16h176a8 8 0 0 0 0-16ZM34.3 141.7a8.2 8.2 0 0 0 11.4 0l40-40a8.1 8.1 0 0 0 0-11.4l-40-40a8.1 8.1 0 0 0-11.4 11.4L68.7 96l-34.4 34.3a8.1 8.1 0 0 0 0 11.4Z"></path></svg></div><div>Why Switch?</div></a><a href="https://www.warpstream.com/contact-us#subscribe" target="_blank" class="div-block-68 fw w-inline-block"><div class="icon-embed-xxsmall-141 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M224 48H32a8 8 0 0 0-8 8v136a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a8 8 0 0 0-8-8Zm-20.6 16L128 133.1L52.6 64ZM216 192H40V74.2l82.6 75.7a8 8 0 0 0 10.8 0L216 74.2V192Z"></path></svg></div><div>Subscribe  </div></a><a href="/executive-summary" target="_blank" class="div-block-68 fw _89 w-inline-block"><div class="icon-embed-xxsmall-233 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M88 96a8 8 0 0 1 8-8h64a8 8 0 0 1 0 16H96a8 8 0 0 1-8-8Zm8 40h64a8 8 0 0 0 0-16H96a8 8 0 0 0 0 16Zm32 16H96a8 8 0 0 0 0 16h32a8 8 0 0 0 0-16Zm96-104v108.7a15.9 15.9 0 0 1-4.7 11.3L168 219.3a15.9 15.9 0 0 1-11.3 4.7H48a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16ZM48 208h104v-48a8 8 0 0 1 8-8h48V48H48Zm120-40v28.7l28.7-28.7Z"></path></svg></div><div>Executive Summary</div></a><a href="/blog" class="div-block-68 fw lastman w-inline-block"><div class="icon-embed-xxsmall-226 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M208 224h-48a16 16 0 0 1-16-16v-48h-32v48a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16v-92.5a16 16 0 0 1 5.2-11.8l80-72.7a16 16 0 0 1 21.6 0l80 72.7a16 16 0 0 1 5.2 11.8V208a16 16 0 0 1-16 16Zm-96-80h32a16 16 0 0 1 16 16v48h48v-92.5l-80-72.7l-80 72.7V208h48v-48a16 16 0 0 1 16-16Z"></path></svg></div><div>View More Posts</div></a><a data-w-id="e02a1a90-18e8-419d-bb9e-42206bca0bb1" href="https://console.warpstream.com/signup" target="_blank" class="button is-small is-icon prettyboxshadow w-inline-block"><div class="text-block-3">Start For Free</div><div class="icon-embed-xxsmall-125 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M94.1 184.6c-11.4 33.9-56.6 33.9-56.6 33.9s0-45.2 33.9-56.6Zm90.5-67.9v64.6a8 8 0 0 1-2.4 5.6l-32.3 32.4a8 8 0 0 1-13.5-4.1l-8.4-41.9Zm-45.3-45.3H74.7a8 8 0 0 0-5.6 2.4l-32.4 32.3a8 8 0 0 0 4.1 13.5l41.9 8.4Z" opacity=".2"></path><path fill="currentColor" d="M96.6 177a7.9 7.9 0 0 0-10.1 5c-6.6 19.7-27.9 25.8-40.2 27.7c1.9-12.3 8-33.6 27.7-40.2a8 8 0 1 0-5.1-15.1c-16.4 5.4-28.4 18.4-34.8 37.5a91.8 91.8 0 0 0-4.6 26.6a8 8 0 0 0 8 8a91.8 91.8 0 0 0 26.6-4.6c19.1-6.4 32.1-18.4 37.5-34.8a7.9 7.9 0 0 0-5-10.1Z"></path><path fill="currentColor" d="M227.6 41.8a15.7 15.7 0 0 0-13.4-13.4c-11.3-1.7-40.6-2.5-69.2 26.1l-9 8.9H74.7a16.2 16.2 0 0 0-11.3 4.7l-32.3 32.4a15.9 15.9 0 0 0-4 15.9a16 16 0 0 0 12.2 11.1l39.5 7.9l41.8 41.8l7.9 39.5a16 16 0 0 0 11.1 12.2a14.7 14.7 0 0 0 4.6.7a15.6 15.6 0 0 0 11.3-4.7l32.4-32.3a16.2 16.2 0 0 0 4.7-11.3V120l8.9-9c28.6-28.6 27.8-57.9 26.1-69.2ZM74.7 79.4H120l-39.9 39.9l-37.7-7.5Zm81.6-13.6c7.8-7.8 28.8-25.6 55.5-21.6c4 26.7-13.8 47.7-21.6 55.5L128 161.9L94.1 128Zm20.3 115.5l-32.4 32.3l-7.5-37.7l39.9-39.9Z"></path></svg></div><div class="icon-embed-xxsmall-161 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M101.6 187.1c-5.4 16.4-18.4 28.4-37.5 34.8a91.8 91.8 0 0 1-26.6 4.6a8 8 0 0 1-8-8a91.8 91.8 0 0 1 4.6-26.6c6.4-19.1 18.4-32.1 34.8-37.5a8 8 0 1 1 5.1 15.1c-19.7 6.6-25.8 27.9-27.7 40.2c12.3-1.9 33.6-8 40.2-27.7a8 8 0 0 1 15.1 5.1Zm99.9-76.1l-8.9 9v61.3a16.2 16.2 0 0 1-4.7 11.3l-32.4 32.3a15.6 15.6 0 0 1-11.3 4.7a14.7 14.7 0 0 1-4.6-.7a16 16 0 0 1-11.1-12.2l-7.9-39.5l-41.8-41.8l-39.5-7.9a16 16 0 0 1-12.2-11.1a15.9 15.9 0 0 1 4-15.9l32.3-32.4a16.2 16.2 0 0 1 11.3-4.7H136l9-8.9c28.6-28.6 57.9-27.8 69.2-26.1a15.7 15.7 0 0 1 13.4 13.4c1.7 11.3 2.5 40.6-26.1 69.2Zm-159.1.8l37.7 7.5L120 79.4H74.7ZM176.6 136l-39.9 39.9l7.5 37.7l32.4-32.3Z"></path></svg></div></a></div><div class="social-icons1_component"><div class="w-layout-grid social-icons1_list"><a href="https://www.linkedin.com/company/warpstream/" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819V16.9818V16.9816V16.9815V16.9812C12.4203 15.9674 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292V17.0294C15.6567 17.3992 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591V16.759V16.7588C18.327 15.6293 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721L15.2781 9.53721L15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2991 10.9315L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="CurrentColor"/>
</svg></div></a><a href="https://bsky.app/profile/warpstream.com" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.33526 4.21162C8.62822 5.97119 11.0945 9.53886 12.0001 11.4535C12.9056 9.53901 15.3718 5.97116 17.6649 4.21162C19.3193 2.94199 22 1.95962 22 5.08557C22 5.70987 21.6498 10.33 21.4444 11.08C20.7306 13.6878 18.1292 14.3529 15.8152 13.9503C19.86 14.654 20.8889 16.9848 18.6668 19.3156C14.4465 23.7423 12.601 18.205 12.1278 16.7861C12.0412 16.526 12.0006 16.4043 12 16.5078C11.9994 16.4043 11.9588 16.526 11.8721 16.7861C11.3993 18.205 9.55378 23.7424 5.33322 19.3156C3.11103 16.9848 4.13995 14.6538 8.18483 13.9503C5.87077 14.3529 3.26934 13.6878 2.55555 11.08C2.35016 10.3299 2 5.7098 2 5.08557C2 1.95962 4.68074 2.94199 6.33515 4.21162H6.33526Z" fill="currentcolor"/>
</svg></div></a><a href="https://x.com/warpstream_labs" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.1761 4H19.9362L13.9061 10.7774L21 20H15.4456L11.0951 14.4066L6.11723 20H3.35544L9.80517 12.7508L3 4H8.69545L12.6279 9.11262L17.1761 4ZM16.2073 18.3754H17.7368L7.86441 5.53928H6.2232L16.2073 18.3754Z" fill="CurrentColor"/>
</svg></div></a><a href="https://www.facebook.com/warpstream" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 12.0611C22 6.50451 17.5229 2 12 2C6.47715 2 2 6.50451 2 12.0611C2 17.0828 5.65684 21.2452 10.4375 22V14.9694H7.89844V12.0611H10.4375V9.84452C10.4375 7.32296 11.9305 5.93012 14.2146 5.93012C15.3088 5.93012 16.4531 6.12663 16.4531 6.12663V8.60261H15.1922C13.95 8.60261 13.5625 9.37822 13.5625 10.1739V12.0611H16.3359L15.8926 14.9694H13.5625V22C18.3432 21.2452 22 17.083 22 12.0611Z" fill="CurrentColor"/>
</svg></div></a><a href="https://www.youtube.com/@WarpStreamLabs" target="_blank" class="social-icons1_link w-inline-block"><div class="icon-embed-xsmall-35 w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.5686 4.77345C21.5163 5.02692 22.2555 5.76903 22.5118 6.71673C23.1821 9.42042 23.1385 14.5321 22.5259 17.278C22.2724 18.2257 21.5303 18.965 20.5826 19.2213C17.9071 19.8831 5.92356 19.8015 3.40294 19.2213C2.45524 18.9678 1.71595 18.2257 1.45966 17.278C0.827391 14.7011 0.871044 9.25144 1.44558 6.73081C1.69905 5.78311 2.44116 5.04382 3.38886 4.78753C6.96561 4.0412 19.2956 4.282 20.5686 4.77345ZM9.86682 8.70227L15.6122 11.9974L9.86682 15.2925V8.70227Z" fill="CurrentColor"/>
</svg></div></a></div></div></div></div></div></div></div></div></section><footer class="footer14_component darksection"><div class="padding-global"><div class="container-large-2"><div class="padding-vertical padding-xxhuge"><div class="footer14_cta"><div class="max-width-large-2 foot"><div class="text-style-tagline zar">Streaming That Just Works</div><h2 class="heading-style-h1-2 zavb"><span class="lightgradient">Get Started With WarpStream Today</span></h2></div><div class="div-block-321"><div class="button-group centerbuttons"><a href="https://console.warpstream.com/signup" target="_blank" class="button is-small is-icon prettyboxshadow fix w-inline-block"><div class="text-block-3">Get Started</div><div class="icon-embed-xxsmall w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M101.6 187.1c-5.4 16.4-18.4 28.4-37.5 34.8a91.8 91.8 0 0 1-26.6 4.6a8 8 0 0 1-8-8a91.8 91.8 0 0 1 4.6-26.6c6.4-19.1 18.4-32.1 34.8-37.5a8 8 0 1 1 5.1 15.1c-19.7 6.6-25.8 27.9-27.7 40.2c12.3-1.9 33.6-8 40.2-27.7a8 8 0 0 1 15.1 5.1Zm99.9-76.1l-8.9 9v61.3a16.2 16.2 0 0 1-4.7 11.3l-32.4 32.3a15.6 15.6 0 0 1-11.3 4.7a14.7 14.7 0 0 1-4.6-.7a16 16 0 0 1-11.1-12.2l-7.9-39.5l-41.8-41.8l-39.5-7.9a16 16 0 0 1-12.2-11.1a15.9 15.9 0 0 1 4-15.9l32.3-32.4a16.2 16.2 0 0 1 11.3-4.7H136l9-8.9c28.6-28.6 57.9-27.8 69.2-26.1a15.7 15.7 0 0 1 13.4 13.4c1.7 11.3 2.5 40.6-26.1 69.2Zm-159.1.8l37.7 7.5L120 79.4H74.7ZM94.1 128l33.9 33.9l62.2-62.2c7.8-7.8 25.6-28.8 21.6-55.5c-26.7-4-47.7 13.8-55.5 21.6Zm82.5 8l-39.9 39.9l7.5 37.7l32.4-32.3Z"></path></svg></div></a><a href="/migration" class="button is-secondary is-small is-icon light gfo fix w-inline-block"><div class="text-block-2 lighttext">Why Switch?</div><div class="icon-embed-xxsmall-333 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M28 4H4a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h24a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 22H12v-6h-2v6H4v-9h16.172l-3.586 3.586L18 22l6-6l-6-6l-1.414 1.414L20.172 15H4V6h6v6h2V6h16Z"></path></svg></div></a></div><div class="div-block-482"><div class="text-block-241 fartyh">Get started through a cloud marketplace:</div><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="cloudmarket w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a2ca4fa4edc9c53c8a71_aws_marketplace.svg" loading="lazy" alt="AWS Marketplace logo" class="awsmarket bigger"/></a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream" target="_blank" class="cloudmarket w-inline-block"><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6854a128ac3a3262e7a3509e_gcp%20(1).svg" loading="lazy" alt="Google Cloud Platform Marketplace logo" class="gcp bigger"/></a></div></div><div class="div-block-469"><div class="w-embed w-script"><style>
.ws-status {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;
font-size: 0.8125rem;
font-weight: 500;
line-height: 1;
color: rgba(255, 255, 255, 0.7);
text-decoration: none;
padding: 8px 14px 9px 14px;
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 9999px;
background: rgba(255, 255, 255, 0);
transition: color 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;
}
.ws-status:hover {
color: rgba(255, 255, 255, 0.95);
border-color: rgba(255, 255, 255, 0.28);
background: rgba(255, 255, 255, 0.06);
}
.ws-status-dot {
position: relative;
width: 8px;
height: 8px;
border-radius: 50%;
background: #9ca3af;
flex-shrink: 0;
}
.ws-status-dot::after {
content: "";
position: absolute;
inset: -3px;
border-radius: 50%;
background: inherit;
opacity: 0;
}
.ws-status.ws-ok .ws-status-dot { background: #22c55e; }
.ws-status.ws-minor .ws-status-dot { background: #eab308; }
.ws-status.ws-major .ws-status-dot { background: #f97316; }
.ws-status.ws-critical .ws-status-dot { background: #ef4444; }
.ws-status.ws-maint .ws-status-dot { background: #3b82f6; }
.ws-status:not(.ws-loading) .ws-status-dot::after {
animation: ws-pulse 1.8s ease-out infinite;
opacity: 1;
}
@keyframes ws-pulse {
0% { transform: scale(1); opacity: 0.45; }
100% { transform: scale(1.9); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
.ws-status .ws-status-dot::after { animation: none; }
}
.ws-status-uptime {
display: inline-flex;
align-items: center;
opacity: 1;
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.ws-status-uptime::before {
content: "";
width: 3px;
margin-top: 3px;
height: 3px;
border-radius: 50%;
background: currentColor;
opacity: 0.5;
margin-right: 8px;
flex-shrink: 0;
}
.ws-status-uptime:empty { display: none; }
</style>
<a class="ws-status ws-loading" href="https://status.warpstream.com/" target="_blank" rel="noopener" aria-live="polite">
<span class="ws-status-dot" aria-hidden="true"></span>
<span class="ws-status-text">Status</span>
<span class="ws-status-uptime"></span>
</a>
<script>
(function () {
var el = document.currentScript.previousElementSibling;
if (!el || !el.classList || !el.classList.contains("ws-status")) return;
var textEl = el.querySelector(".ws-status-text");
var uptimeEl = el.querySelector(".ws-status-uptime");
var MAP = {
none: { cls: "ws-ok", label: "All systems operational" },
minor: { cls: "ws-minor", label: "Minor service issue" },
major: { cls: "ws-major", label: "Major service issue" },
critical: { cls: "ws-critical", label: "Critical service issue" },
maintenance: { cls: "ws-maint", label: "Scheduled maintenance" }
};
var base = "https://status.warpstream.com/api/v2/";
Promise.allSettled([
fetch(base + "status.json", { cache: "no-store" }).then(function (r) { return r.ok ? r.json() : Promise.reject(); }),
fetch(base + "incidents.json", { cache: "no-store" }).then(function (r) { return r.ok ? r.json() : Promise.reject(); })
]).then(function (results) {
el.classList.remove("ws-loading");
if (results[0].status === "fulfilled") {
var s = results[0].value.status || {};
var m = MAP[s.indicator] || MAP.none;
el.classList.add(m.cls);
textEl.textContent = s.description || m.label;
} else {
textEl.textContent = "Status";
}
if (results[1].status === "fulfilled" && uptimeEl) {
var incidents = results[1].value.incidents || [];
uptimeEl.textContent = formatUptime(calcUptime(incidents)) + " last 90 days";
}
});
function calcUptime(incidents) {
var now = Date.now();
var windowMs = 90 * 24 * 60 * 60 * 1000;
var cutoff = now - windowMs;
var intervals = [];
for (var i = 0; i < incidents.length; i++) {
var inc = incidents[i];
if (inc.impact === "none") continue;
var s = Date.parse(inc.started_at);
var e = inc.resolved_at ? Date.parse(inc.resolved_at) : now;
if (!s || !e || e < cutoff) continue;
if (s < cutoff) s = cutoff;
intervals.push([s, e]);
}
intervals.sort(function (a, b) { return a[0] - b[0]; });
var merged = [];
for (var j = 0; j < intervals.length; j++) {
var iv = intervals[j];
if (merged.length && iv[0] <= merged[merged.length - 1][1]) {
merged[merged.length - 1][1] = Math.max(merged[merged.length - 1][1], iv[1]);
} else {
merged.push([iv[0], iv[1]]);
}
}
var down = 0;
for (var k = 0; k < merged.length; k++) down += merged[k][1] - merged[k][0];
return (windowMs - down) / windowMs * 100;
}
function formatUptime(pct) {
if (pct >= 99.9995) return "100%";
return pct.toFixed(2) + "%";
}
})();
</script></div></div><a href="https://www.warpstream.com/contact-us#subscribe" class="div-block-325 w-inline-block"><div class="text-block-98"><span class="text-span-16">Join our mailing list to stay up to date</span></div><div class="icon-embed-xxsmall-126 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m229.7 157.7l-48 48a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4l34.4-34.3H128A104.2 104.2 0 0 1 24 56a8 8 0 0 1 16 0a88.1 88.1 0 0 0 88 88h76.7l-34.4-34.3a8.1 8.1 0 0 1 11.4-11.4l48 48a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div></a></div><div class="padding-bottom padding-xxlarge"><div class="w-layout-grid footer14_top-wrapper"><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">WarpStream</div></div><div class="footer14_link-list"><a href="/pricing" class="footer14_link">Pricing</a><a href="/about" class="footer14_link">Company</a><a href="/blog" class="footer14_link">Blog</a><a href="/contact-us" class="footer14_link">Contact</a><a href="/customers" class="footer14_link">Customers</a><a href="/migration" class="footer14_link">Migration</a><a href="https://docs.warpstream.com/warpstream" target="_blank" class="footer14_link last">Docs</a></div></div><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">Product</div></div><div class="footer14_link-list"><a href="/bring-your-own-cloud-kafka-data-streaming" class="link-block-62 w-inline-block"><div class="text-block-315">Bring Your Own Cloud</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M160.1 40a88.1 88.1 0 0 0-78.8 48.7a86.6 86.6 0 0 0-9.3 39a8.2 8.2 0 0 1-7.4 8.3a8 8 0 0 1-8.6-8a105 105 0 0 1 5.3-32.9a4 4 0 0 0-4.7-5.2A64 64 0 0 0 8 152c0 35.2 29.8 64 64.9 64H160a88 88 0 0 0 .1-176Zm37.6 81.7l-48 48a8.2 8.2 0 0 1-11.4 0l-24-24a8.1 8.1 0 0 1 11.4-11.4l18.3 18.4l42.3-42.4a8.1 8.1 0 0 1 11.4 11.4Z"></path></svg></div></a><a href="/tableflow" class="link-block-62 w-inline-block"><div class="div-block-550"><div class="text-block-265">Tableflow</div><div class="text-block-267">GA!</div></div><div class="icon-embed-xxsmall-288 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M33.7 77A8 8 0 0 1 35 65.8a81.8 81.8 0 0 1 29.1-13.6c16.1-4 41.1-5 68.3 13.1c42.4 28.3 77.2 1.6 78.6.4a8.2 8.2 0 0 1 11.3 1.3a8 8 0 0 1-1.3 11.2a81.8 81.8 0 0 1-29.1 13.6a81 81 0 0 1-19.7 2.4c-14 0-30.8-3.7-48.6-15.5c-42.4-28.3-77.2-1.6-78.6-.4A8.2 8.2 0 0 1 33.7 77ZM211 121.7c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 121.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a81 81 0 0 0 19.7-2.4a81.8 81.8 0 0 0 29.1-13.6a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Zm0 56c-1.4 1.2-36.2 27.9-78.6-.4c-27.2-18.1-52.2-17.1-68.3-13.1A81.8 81.8 0 0 0 35 177.8a8 8 0 0 0-1.3 11.2a8.2 8.2 0 0 0 11.3 1.3c1.4-1.2 36.2-27.9 78.6.4c17.8 11.8 34.6 15.5 48.6 15.5a82.6 82.6 0 0 0 48.8-16a8 8 0 0 0 1.3-11.2a8.2 8.2 0 0 0-11.3-1.3Z"></path></svg></div></a><a href="/managed-data-pipelines-kafka-compatible-stream-processing" class="link-block-62 w-inline-block"><div class="text-block-265">Managed Data Pipelines</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="m245.7 85.7l-40 40a8.2 8.2 0 0 1-11.4 0a8.1 8.1 0 0 1 0-11.4L220.7 88H176a40 40 0 0 0-40 40a56 56 0 0 1-56 56h-.9a36 36 0 1 1 0-16h.9a40 40 0 0 0 40-40a56 56 0 0 1 56-56h44.7l-26.4-26.3a8.1 8.1 0 0 1 11.4-11.4l40 40a8.1 8.1 0 0 1 0 11.4Z"></path></svg></div></a><a href="/orbit-apache-kafka-migration-and-replication" class="link-block-62 w-inline-block"><div>Orbit</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M223.3 116a117.3 117.3 0 0 1 .7 12a96 96 0 0 1-154 76.5c24.6-6.2 53.5-18.5 82-34.9s53.6-35.4 71.3-53.6Zm22.5-56c-5.5-9.5-20.3-18.4-59.8-8.5A96 96 0 0 0 32 128a117.3 117.3 0 0 0 .7 12c-28.3 29.2-27.9 46.5-22.5 56c3.7 6.4 11.9 12.8 29.8 12.8a121.7 121.7 0 0 0 25.5-3.2l4.5-1.1a105 105 0 0 1-14.2-13.3c-18.7 3.3-29.3 1-31.7-3.2c-1.5-2.6-.7-7.5 2.3-13.4A85.7 85.7 0 0 1 37.1 159a95.2 95.2 0 0 0 18.7 32.2l6.2-1.3c24-5.3 53.1-17.5 82-34.2s54-35.8 70.6-53.9a62 62 0 0 0 4.3-4.8a95.2 95.2 0 0 0-18.7-32.2a83.9 83.9 0 0 1 19-1.5c6.6.4 11.2 2.1 12.7 4.7c2.4 4.2-.9 14.5-13 29a107.3 107.3 0 0 1 4.4 19l3.1-3.3c25.3-27.5 24.5-43.8 19.4-52.7Z"></path></svg></div></a><a href="/data-governance-schema-registry-and-validation" class="link-block-62 w-inline-block"><div>Data Goverance</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24c-53.8 0-96 24.6-96 56v96c0 31.4 42.2 56 96 56s96-24.6 96-56V80c0-31.4-42.2-56-96-56Zm80 104c0 9.6-7.9 19.4-21.6 26.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 147.4 48 137.6 48 128v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6Zm-21.6 74.9c-15.5 8.5-36.2 13.1-58.4 13.1s-42.9-4.6-58.4-13.1C55.9 195.4 48 185.6 48 176v-16.6c17.1 14.9 46.2 24.6 80 24.6s62.9-9.7 80-24.6V176c0 9.6-7.9 19.4-21.6 26.9Z"></path></svg></div></a><a href="/multi-region-clusters" class="link-block-62 w-inline-block"><div class="text-block-265">Multi-Region Clusters</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M156 92V80h-12a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h12v-12a16 16 0 0 1 16-16h40a16 16 0 0 1 16 16v40a16 16 0 0 1-16 16h-40a16 16 0 0 1-16-16v-12h-12a32.1 32.1 0 0 1-32-32v-24H84v8a16 16 0 0 1-16 16H36a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v8h28V96a32.1 32.1 0 0 1 32-32h12V52a16 16 0 0 1 16-16h40a16 16 0 0 1 16 16v40a16 16 0 0 1-16 16h-40a16 16 0 0 1-16-16Z"></path></svg></div></a><a href="/integrations" class="link-block-62 last w-inline-block"><div>Integrations</div><div class="icon-embed-xxsmall-282 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ph" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="currentColor" d="M56 60a8 8 0 0 1 8-8h12V40a8 8 0 0 1 16 0v12h12a8 8 0 0 1 0 16H92v12a8 8 0 0 1-16 0V68H64a8 8 0 0 1-8-8Zm184 84h-16v-16a8 8 0 0 0-16 0v16h-16a8 8 0 0 0 0 16h16v16a8 8 0 0 0 16 0v-16h16a8 8 0 0 0 0-16Zm-58.3-26.3L75.3 224a15.9 15.9 0 0 1-22.6 0L32 203.3a15.9 15.9 0 0 1 0-22.6L180.7 32a16.1 16.1 0 0 1 22.6 0L224 52.7a15.9 15.9 0 0 1 0 22.6l-42.3 42.4Zm-5.7-17L212.7 64L192 43.3L155.3 80Zm8 91.3h-8v-8a8 8 0 0 0-16 0v8h-8a8 8 0 0 0 0 16h8v8a8 8 0 0 0 16 0v-8h8a8 8 0 0 0 0-16Z"></path></svg></div></a></div></div><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">Community</div></div><div class="footer14_link-list"><a href="https://console.warpstream.com/socials/slack" class="link-block-62 w-inline-block"><div>Slack</div><div class="icon-embed-xxsmall-6 w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M9.042 19.166a2.521 2.521 0 1 1-2.52-2.521h2.52zm1.27 0a2.521 2.521 0 0 1 5.043 0v6.313a2.521 2.521 0 1 1-5.042 0zm2.522-10.124a2.521 2.521 0 1 1 2.521-2.52v2.52zm0 1.27a2.521 2.521 0 0 1 0 5.043H6.52a2.521 2.521 0 1 1 0-5.042zm10.124 2.522a2.521 2.521 0 1 1 2.52 2.521h-2.52zm-1.27 0a2.521 2.521 0 0 1-5.043 0V6.52a2.521 2.521 0 1 1 5.042 0zm-2.522 10.124a2.521 2.521 0 1 1-2.521 2.52v-2.52zm0-1.27a2.521 2.521 0 0 1 0-5.043h6.313a2.521 2.521 0 1 1 0 5.042z"></path></svg></div></a><a href="https://console.warpstream.com/socials/discord" class="link-block-62 w-inline-block"><div>Discord</div><div class="icon-embed-small-2 w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 32 32" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
<path d="M19.7599 5.67999C19.4951 6.15424 19.2591 6.64402 19.0532 7.14666C17.0302 6.82673 14.9695 6.82673 12.9466 7.14666C12.7407 6.64402 12.5047 6.15424 12.2399 5.67999C10.3343 6.00559 8.48176 6.58871 6.73322 7.41333C3.60648 11.9257 2.18847 17.4039 2.73322 22.8667C4.77087 24.3985 7.05783 25.5668 9.49322 26.32C10.0478 25.5875 10.5427 24.8116 10.9732 24C10.1787 23.707 9.41495 23.3363 8.69322 22.8933C8.89117 22.7616 9.07842 22.6145 9.25322 22.4533C11.3578 23.4671 13.6638 23.9935 15.9999 23.9935C18.3359 23.9935 20.6419 23.4671 22.7466 22.4533C22.9332 22.6133 23.1199 22.76 23.3066 22.8933C22.5809 23.3329 21.818 23.7076 21.0266 24.0133C21.4392 24.8434 21.9209 25.6373 22.4666 26.3867C24.8989 25.636 27.1819 24.4674 29.2132 22.9333C29.7711 17.4696 28.3519 11.9869 25.2132 7.47999C23.4843 6.63831 21.6501 6.03289 19.7599 5.67999ZM11.5732 19.7467C10.906 19.6988 10.2833 19.3942 9.83578 18.897C9.38829 18.3998 9.15082 17.7486 9.17322 17.08C9.14744 16.4105 9.38374 15.7574 9.83191 15.2595C10.2801 14.7615 10.9048 14.458 11.5732 14.4133C12.2417 14.458 12.8664 14.7615 13.3145 15.2595C13.7627 15.7574 13.999 16.4105 13.9732 17.08C13.999 17.7494 13.7627 18.4025 13.3145 18.9005C12.8664 19.3985 12.2417 19.702 11.5732 19.7467ZM20.4266 19.7467C19.7593 19.6988 19.1366 19.3942 18.6891 18.897C18.2416 18.3998 18.0042 17.7486 18.0266 17.08C18.0008 16.4105 18.2371 15.7574 18.6852 15.2595C19.1334 14.7615 19.7581 14.458 20.4266 14.4133C21.0963 14.4546 21.723 14.7572 22.1718 15.2559C22.6207 15.7546 22.8558 16.4097 22.8266 17.08C22.8558 17.7503 22.6207 18.4053 22.1718 18.9041C21.723 19.4028 21.0963 19.7054 20.4266 19.7467Z" fill="currentColor"/>
</svg></div></a><a href="https://www.linkedin.com/company/warpstream/" class="link-block-62 w-inline-block"><div>LinkedIn</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819V16.9818V16.9816V16.9815V16.9812C12.4203 15.9674 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292V17.0294C15.6567 17.3992 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591V16.759V16.7588C18.327 15.6293 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721L15.2781 9.53721L15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2991 10.9315L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="CurrentColor"/>
</svg></div></a><a href="https://twitter.com/warpstream_labs" class="link-block-62 w-inline-block"><div>X (Twitter)</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.1761 4H19.9362L13.9061 10.7774L21 20H15.4456L11.0951 14.4066L6.11723 20H3.35544L9.80517 12.7508L3 4H8.69545L12.6279 9.11262L17.1761 4ZM16.2073 18.3754H17.7368L7.86441 5.53928H6.2232L16.2073 18.3754Z" fill="CurrentColor"/>
</svg></div></a><a href="https://bsky.app/profile/warpstream.com" class="link-block-62 w-inline-block"><div>BlueSky</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.33526 4.21162C8.62822 5.97119 11.0945 9.53886 12.0001 11.4535C12.9056 9.53901 15.3718 5.97116 17.6649 4.21162C19.3193 2.94199 22 1.95962 22 5.08557C22 5.70987 21.6498 10.33 21.4444 11.08C20.7306 13.6878 18.1292 14.3529 15.8152 13.9503C19.86 14.654 20.8889 16.9848 18.6668 19.3156C14.4465 23.7423 12.601 18.205 12.1278 16.7861C12.0412 16.526 12.0006 16.4043 12 16.5078C11.9994 16.4043 11.9588 16.526 11.8721 16.7861C11.3993 18.205 9.55378 23.7424 5.33322 19.3156C3.11103 16.9848 4.13995 14.6538 8.18483 13.9503C5.87077 14.3529 3.26934 13.6878 2.55555 11.08C2.35016 10.3299 2 5.7098 2 5.08557C2 1.95962 4.68074 2.94199 6.33515 4.21162H6.33526Z" fill="currentcolor"/>
</svg></div></a><a href="https://www.youtube.com/@WarpStreamLabs" class="link-block-62 w-inline-block"><div>YouTube</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.5686 4.77345C21.5163 5.02692 22.2555 5.76903 22.5118 6.71673C23.1821 9.42042 23.1385 14.5321 22.5259 17.278C22.2724 18.2257 21.5303 18.965 20.5826 19.2213C17.9071 19.8831 5.92356 19.8015 3.40294 19.2213C2.45524 18.9678 1.71595 18.2257 1.45966 17.278C0.827391 14.7011 0.871044 9.25144 1.44558 6.73081C1.69905 5.78311 2.44116 5.04382 3.38886 4.78753C6.96561 4.0412 19.2956 4.282 20.5686 4.77345ZM9.86682 8.70227L15.6122 11.9974L9.86682 15.2925V8.70227Z" fill="CurrentColor"/>
</svg></div></a><a href="https://facebook.com/warpstream" class="link-block-62 last w-inline-block"><div>Facebook</div><div class="icon-embed-xsmall-35 footersmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22 12.0611C22 6.50451 17.5229 2 12 2C6.47715 2 2 6.50451 2 12.0611C2 17.0828 5.65684 21.2452 10.4375 22V14.9694H7.89844V12.0611H10.4375V9.84452C10.4375 7.32296 11.9305 5.93012 14.2146 5.93012C15.3088 5.93012 16.4531 6.12663 16.4531 6.12663V8.60261H15.1922C13.95 8.60261 13.5625 9.37822 13.5625 10.1739V12.0611H16.3359L15.8926 14.9694H13.5625V22C18.3432 21.2452 22 17.083 22 12.0611Z" fill="CurrentColor"/>
</svg></div></a></div></div><div class="footer14_link-column shadow-xlarge"><div class="margin-bottom margin-xxsmall"><div class="text-weight-semibold foot shadbut">Other</div></div><div class="footer14_link-list"><a href="/changelog" class="footer14_link">Changelog</a><a href="/executive-summary" class="footer14_link">Executive Summary</a><a href="https://www.warpstream.com/contact-us#subscribe" class="footer14_link">Mailing List</a><a href="https://aws.amazon.com/marketplace/pp/prodview-aciq4fyplkpgy" target="_blank" class="footer14_link">AWS Marketplace</a><a href="https://console.cloud.google.com/marketplace/product/warpstream-public/warpstream" target="_blank" class="footer14_link">GCP Marketplace</a><a href="https://support.confluent.io/hc/en-us" target="_blank" class="footer14_link">Support</a><a href="https://status.warpstream.com/" target="_blank" class="footer14_link last">Status</a></div></div></div></div><div class="padding-bottom padding-medium"><div class="footer14_middle-wrapper"><a href="/" class="footer14_logo-link w-nav-brand"><img loading="lazy" src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6a96ec03341fccd5fb18e6b4_Group%207.svg" alt="WarpStream Logo" class="footer14_logo"/></a><div class="footer14_image-list"><div class="footer14_image-item"><a href="https://www.ibm.com/products/confluent" target="_blank" class="w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/69dd07df6f5799507e16e0f5_Frame%20(1).svg" alt="Confluent logo" class="footer14_image ibm"/></a><a href="https://security.warpstream.com/" target="_blank" class="w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6842472884a1134b0e3dde13_66db21cd8a3638d2481ec998_soc2%201.svg" alt="SOC 2 Certification" class="footer14_image"/></a></div></div></div></div><div class="divider-horizontal"></div><div class="padding-top padding-medium"><div class="footer14_bottom-wrapper"><div class="div-block-46"><div class="div-block-341"><div id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea61e-26fea5b4" class="footer14_credit-text">© 2026 WarpStream. All rights reserved.</div><img src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/6849f0c28731b34944edf23c_Group.svg" loading="lazy" alt="WarpStream icon" class="image-59"/></div><a id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea620-26fea5b4" href="https://status.warpstream.com/" target="_blank" class="link-3">Status</a><a id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea622-26fea5b4" href="/privacy-policy" class="link-3">Privacy Policy</a><a href="https://assets.confluent.io/m/7cc915b8d26e73a7/original/Confluent-Cloud-Unified-SLA-July-2025-Legal.pdf?_gl=1*1typb35*_gcl_aw*R0NMLjE3NTgwMzI3ODAuQ2p3S0NBandsYVRHQmhBTkVpd0FvUmdYQlFOTXlOTUZyWlBuZWNpdDk1MXFJWjByRllaMjk2NGlSUjJxc1MwYXNTSW5mLWY1ai1jcFlob0NubjRRQXZEX0J3RQ..*_gcl_au*MTQ0NDQ1OTM5Ny4xNzUyNDk2MzU4*_ga*MTE4ODgwNjk5NC4xNzUyNDk2MzU4*_ga_D2D3EGKSGD*czE3NTgxMTM1MDEkbzE2MiRnMCR0MTc1ODExMzUwMSRqNjAkbDAkaDA.&amp;_ga=2.251478662.1086911196.1757938834-1188806994.1752496358&amp;_gac=1.19661386.1758032780.CjwKCAjwlaTGBhANEiwAoRgXBQNMyNMFrZPnecit951qIZ0rFYZ2964iRR2qsS0asSInf-f5j-cpYhoCnn4QAvD_BwE" target="_blank" class="link-3">SLA</a><a href="https://assets.confluent.io/m/6e14449e149899d3/original/20250602-Confluent-Cloud-Support-Services-Policy.pdf?_gl=1*fe9xly*_gcl_aw*R0NMLjE3NTgwMzI3ODAuQ2p3S0NBandsYVRHQmhBTkVpd0FvUmdYQlFOTXlOTUZyWlBuZWNpdDk1MXFJWjByRllaMjk2NGlSUjJxc1MwYXNTSW5mLWY1ai1jcFlob0NubjRRQXZEX0J3RQ..*_gcl_au*MTQ0NDQ1OTM5Ny4xNzUyNDk2MzU4*_ga*MTE4ODgwNjk5NC4xNzUyNDk2MzU4*_ga_D2D3EGKSGD*czE3NTgxMTM1MDEkbzE2MiRnMCR0MTc1ODExMzUwMSRqNjAkbDAkaDA.&amp;_ga=2.238840064.1086911196.1757938834-1188806994.1752496358&amp;_gac=1.51439195.1758032780.CjwKCAjwlaTGBhANEiwAoRgXBQNMyNMFrZPnecit951qIZ0rFYZ2964iRR2qsS0asSInf-f5j-cpYhoCnn4QAvD_BwE" id="w-node-_18ddefd5-4a2f-4541-68f1-a0c826fea626-26fea5b4" target="_blank" class="link-3">Support Policy</a><a href="https://www.confluent.io/contracts/" target="_blank" class="link-3">Terms of Service</a><a id="trust_center" href="https://confluent.safebase.us/?product=bring-your-own-cloud-warpstream" class="trust-center link-3">Trust Center</a><a href="https://support.confluent.io/hc/en-us" target="_blank" class="link-3">Support</a><a href="https://www.confluent.io/trust-and-security/" target="_blank" class="link-3">Security</a><a href="/ai-info" class="link-3">AI Info</a><div class="w-embed"><style>
button.ot-sdk-show-settings.link-3 { appearance: none; -webkit-appearance: none; display: inline; background: transparent; border: 0; padding: 0; font-family: inherit; line-height: inherit; cursor: pointer; }
@media screen and (max-width: 991px) { button.ot-sdk-show-settings.link-3 { padding-left: 10px; } }
@media screen and (max-width: 479px) { button.ot-sdk-show-settings.link-3 { padding: 0 0 0.5rem; } }
</style>
<button type="button" class="ot-sdk-show-settings link-3">Cookie settings</button></div></div><div class="div-block-322"><div class="text-block-96">Apache, Apache Kafka, Kafka, and associated open source project namesare trademarks of the Apache Software Foundation.</div></div></div></div></div></div></div><div class="code-embed-27 w-embed w-script"><script>
window.addEventListener("load", function () {
const navbar = document.querySelector('.navbar5_component');
const darkSections = document.querySelectorAll('.darksection');
if (!navbar || darkSections.length === 0) {
console.warn("Missing navbar or dark sections.");
return;
}
const checkOverlap = () => {
const navbarTop = 0; // top of the viewport (fixed nav)
let isInDark = false;
darkSections.forEach(section => {
const rect = section.getBoundingClientRect();
if (rect.top <= navbarTop && rect.bottom >= navbarTop) {
isInDark = true;
}
});
navbar.classList.toggle('on-dark', isInDark);
};
// Check on scroll and resize
window.addEventListener('scroll', checkOverlap);
window.addEventListener('resize', checkOverlap);
// Initial run
checkOverlap();
});
</script></div><div class="code-embed-28 w-embed w-script"><!-- Elfsight AI Chatbot | WarpStream Chatbot -->
<script src="https://static.elfsight.com/platform/platform.js" async></script>
<div class="elfsight-app-d30a88e8-a1a4-4f20-b160-f6b7548a842e" data-elfsight-app-lazy></div></div></footer><div class="html-embed-5 w-embed w-script"><script>
window.onload = function() {
document.getElementById('perma').onclick = function(e) {
e.preventDefault(); // This prevents the default action of the click event
// Copy to clipboard
var dummy = document.createElement('input'),
text = window.location.href;
document.body.appendChild(dummy);
dummy.value = text;
dummy.select();
document.execCommand('copy');
document.body.removeChild(dummy);
}
}
</script></div><script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=683882630fceea3de6f5776a" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script><script src="https://cdn.prod.website-files.com/683882630fceea3de6f5776a/js/warbd8f8uhb.b62db53d.0521e4f9229f0d4d.js" type="text/javascript" integrity="sha384-Jz0H49wXEfcaqyiVS1XX/I6RMDzlBEOKakg4x3c/3bMp/iK9vfxE8/tQEoSweOMl" crossorigin="anonymous"></script><!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MF9MRLCR"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) --></body></html>