Event streaming cost: self-hosted, partner or managed service

Self-hosted Kafka, Pulsar or NATS costs less in licenses than managed streaming but shifts brokers, storage, replication, networking and on-call to your team or partner. This page shows how to build your own estimate.

On this page

What event streaming really costs when you run it yourself

The software is free under its license, but the total cost depends on throughput, retention, replication, network placement and who operates the cluster. Apache Kafka and Apache Pulsar are both licensed under Apache-2.0, and NATS server is also Apache-2.0, so the core projects carry no license fee. The money goes elsewhere: compute and disks for brokers, storage that must survive a node loss, cross-zone or cross-site traffic, and the engineers who patch, upgrade and wake up for the cluster. Building in-house, engaging a partner to implement and hand over, and buying a managed streaming service each move these components to a different party, so compare them on the same line items rather than on the headline price. No price is given here because none has been supplied for this topic, and any figure you see from a vendor should be checked against the scope it assumes.

Start by writing down the inputs that drive every line: sustained and peak message rates, average and maximum message size, retention period per topic, replication factor and the number of availability zones or sites the cluster spans. Retention and replication multiply storage, and a replication factor above one means each message is written and copied across brokers, which adds network traffic that cloud providers may bill when it crosses zones. For Kafka, confirm the operating model before costing it: ZooKeeper-based clusters must migrate to KRaft before upgrading to 4.x, and Java 17 is required for brokers since Kafka 4.0, so the upgrade path is part of the labor estimate. For Pulsar, storage capacity grows by adding BookKeeper bookies independently of brokers, which changes how you budget compute and disk. For NATS, JetStream replication at R3 is the production floor, so plan for at least three servers per stream group.

Ask every bidder, whether an internal platform team, an implementation partner or a managed provider, to price the same workload and to list what is in and out of scope: monitoring, backup and restore tests, security hardening, TLS and ACL administration, 24x7 on-call, and upgrades. Separate one-time work (design, migration, initial hardening, handover) from recurring work (infrastructure, support, upgrades, testing). Request the assumptions for throughput and retention in writing, and check whether egress and cross-zone charges are included. A fixed-scope written agreement makes these comparisons fair, because the same deliverables and timelines can be priced for each option.

Which cost components sit with in-house, partner and SaaS

This table compares who carries each cost component when you run Kafka, Pulsar or NATS yourself, bring in a partner to build or run it, or buy a managed streaming service. Read each row for who pays and whether the cost is one-time or recurring, then confirm the split in writing with any partner or vendor before you compare totals.

Cost componentIn-housePartner (fixed scope)Managed SaaS
Brokers and computeYour team pays cloud or hardware costs and sizes the node pools, recurringPartner designs and sizes; you still pay the infrastructure, recurringVendor bills capacity, usually recurring and metered by the provider
Storage and retentionYou pay disks or object storage for every retained copy, recurring and growing with retentionSame infrastructure bill as in-house; partner sets retention policy in writingVendor bills storage, often recurring and tied to retention settings
Cross-zone and cross-region trafficYour cloud account pays network charges for replication and client traffic, recurringYou pay the same network charges; partner designs topology to limit themOften included in the price or billed separately; confirm the traffic terms
ReplicationYou pay for extra brokers, copies and cross-site links, recurringPartner sets replication factor and tests failover; you pay the extra capacityVendor sets replication; check whether multi-site replication is an add-on
Metadata and controller operationsYour engineers run KRaft, ZooKeeper or Oxia metadata stores and handle leader or quorum faultsPartner configures and monitors the metadata layer during the engagement, then hands overVendor operates the control plane; you have no direct cost for it
Upgrades and patchingYour team plans releases, rolling upgrades and Java updates, recurring effort per releasePartner performs upgrades under a retainer or a fixed-scope project, one-time or recurringVendor applies upgrades on its schedule; check maintenance windows and version control
Monitoring and observabilityYou pay for metrics, logs and alerting tools and the people who respond, recurringPartner builds dashboards and alerts; tooling licenses or hosting stay with youBasic metrics included; advanced tooling may be a separate recurring charge
Security toolingYou pay for certificates, secrets management, ACL administration and scanning, recurringPartner hardens the cluster and tests it; ongoing tooling stays with youVendor covers platform security; you pay for your own identity and audit integrations
On-call and staffingYour staff carry the largest recurring cost, including 24/7 rotation for production streamsPartner provides a handover and optional retainer; your staff still own incident responseLower operating burden; you still need engineers for topics, schemas and consumers
Support and escalationCommunity support or paid third-party support, recurring if you contract for itSupport is set by the written scope or retainer, one-time or recurringVendor support tiers, usually recurring; confirm response commitments in the contract

Throughput, retention and replication: what moves the bill

Four cost drivers set the size of a self-hosted streaming platform: how much data moves, how long it stays, how many copies are kept and where those copies live. Each one also sets how much people time the platform consumes, so review them together before comparing a self-hosted build with a managed service.

Message throughput and partition count

Throughput sets how many brokers, how much network capacity and how much CPU the cluster needs at peak, not on average. Partition count sets how work spreads across brokers and consumers, and adding partitions later changes key-to-partition mapping for ordered data. Ask your partner to size against peak message rate and average message size, and to show the headroom kept for failover. Managed services usually bill throughput directly, so compare peak figures, not monthly averages.

Retention period and storage growth

Retention decides how much data sits on disk at any time, so storage cost grows with the product of ingest rate and retention window. Audit or replay requirements often push retention well beyond what consumers need for live processing. Pulsar adds storage by adding BookKeeper bookies independently of brokers, which lets storage grow without resizing compute. Confirm the retention period per topic, who owns that decision, and how much retained data must be restorable.

Replication factor and copies

Each extra replica multiplies storage and inter-broker traffic. NATS JetStream documentation calls R3 the production floor and limits a stream to at most five copies, so a three-node cluster with R3 keeps three copies of every stream. Your partner should show which streams need R3 and which can accept lower durability, since not every topic needs the same protection. Ask what replication costs in disk and network at your message rate, and which copies remain available during a node loss.

Number of sites and geo-replication

Every additional site adds a second or third cluster, its hardware, its monitoring and its replication link. Cross-site replication also adds sustained bandwidth charges in cloud accounts and ongoing operator effort to test failover. Kafka geo-replication and Pulsar geo-replication each carry their own configuration and offset handling. Ask whether the business needs active-passive or active-active operation, and price the replication link and failover test as separate line items.

Cross-zone traffic

In public clouds, traffic between availability zones is often billed separately from instance and storage charges, and it grows with replication and consumer fan-out. A three-zone cluster that replicates every message across zones and serves consumers in several zones can generate far more inter-zone traffic than the producers' own volume suggests. Ask your partner to model producer, replica and consumer traffic separately, and to confirm which zone consumers read from. Managed services may absorb some of this cost, so ask whether it appears in the quote.

Team skills and upgrade frequency

Self-hosting moves operating labor onto your team or your partner's retainer. Kafka releases three times a year on a four-month cadence, and rolling upgrades are supported from the last three releases, so upgrades are recurring work, not a one-time project. Kafka 4.0 removed ZooKeeper mode, and clusters older than 3.3.x are advised to move to 3.9.x before 4.x. Ask who performs upgrades, who is on call, and what evidence of a tested upgrade path the partner will provide.

Why the license line is the smallest line in self-hosted cost

The license line is zero for the core projects. Apache Kafka is released under the Apache License 2.0 and has no paid edition from the project itself, and Apache Pulsar and NATS are also Apache-2.0 licensed. That means the cost you will model is labor, infrastructure and vendor support contracts, not a software fee. Treat any vendor distribution or commercial support subscription as a separate line item to quote, and confirm its terms with the vendor rather than assuming them.

The recurring cost sits in upgrades. Kafka's project aims for three releases a year, one every four months, and rolling upgrades are supported from each release in the past year to the latest. Pulsar runs a different rhythm: its 5.0 LTS line has active support until October 5, 2028, while the 4.0 LTS line leaves active support on October 21, 2026, so a cluster still on 4.0 will need a planned move soon. Someone has to own these windows, test each release, and schedule rollouts before support lapses. Upgrade obligations also convert directly into engineering hours. Kafka 4.0 supports only KRaft mode, so any ZooKeeper-based cluster must migrate to KRaft before moving to 4.x, and the upgrade notes recommend moving KRaft clusters older than 3.3.x to 3.9.x first. Since Kafka 4.0, brokers and Kafka Connect require Java 17, which pulls in JVM patching and connector compatibility checks. Each of these steps needs a test cluster, a rollback plan and a change window, and the people doing that work are the largest recurring cost in self-hosting.

Build, partner or managed: which cost profile fits your team

Building in-house means your own engineers install, configure, upgrade and run the cluster in your data centers or cloud accounts, with no outside operator. The cost is mostly people and time, and it recurs every month because the cluster never stops needing attention. Your team owns every decision, from broker sizing to the authorization model, and every failure lands on your on-call rota.

  • On-call: Your staff carry the pager for broker failures, disk pressure, under-replicated partitions and client lag, around the clock.
  • Upgrades: Kafka 4.0 supports only KRaft mode and requires ZooKeeper-based clusters to migrate first, and rolling upgrades are supported from each release in the past year to the latest version, so your team must plan and test each step.
  • Security configuration: Your team chooses among the documented SASL mechanisms (GSSAPI, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER), enables TLS, and writes ACLs in the KRaft authorizer, where resources without ACLs are restricted to super users unless you change that default.
  • Capacity planning: Your team forecasts throughput, retention and partition counts, then re-plans as volumes grow.

Confirm internally that you can staff the on-call and upgrade cadence for the life of the platform, and that you have a documented runbook for restoring topics.

How to build your own event streaming cost estimate

This sequence turns throughput, retention and site requirements into a cost model that you can compare line by line against self-hosted, partner-run and managed quotes. Each step produces an input or check that the next step depends on.

  1. Define throughput and retention per topic

    Start by listing every topic or stream, with its expected message rate, average and peak message size, number of producers and consumers, and how long each must be kept. Separate operational traffic from audit or replay needs, because retention often drives storage cost more than peak throughput does. Owners are the application teams that produce the events, reviewed with platform engineering. The step is done when each topic has a written row with rate, size, retention period and replay requirement, and the totals are agreed by both groups.

  2. Choose the replication and site model

    Decide how many copies of each partition or stream must exist, across how many zones, and whether a second site or region must hold a copy. Replication multiplies storage and inter-zone network traffic, so this choice changes the bill more than most teams expect. Confirm the replication settings your chosen platform supports for production, such as the replication factor and minimum in-sync replicas for Kafka, or the replica count for JetStream streams, and record the site topology. The output is a diagram and a table of copies per site that the sizing step can use.

  3. Size brokers and storage from those inputs

    Convert the throughput, message size, retention and replication figures into raw storage, then add headroom for growth, compaction, index overhead and rebalancing. Estimate broker or node count from sustained throughput and partition or stream counts, not from average load alone, and keep separate sizing for storage-heavy nodes where the platform separates compute from persistence, as Pulsar does with BookKeeper bookies. Ask your platform owner or implementation partner to show the sizing formula and assumptions in writing. The output is a bill of materials with node counts, CPU, memory, disk type and capacity per tier.

  4. Price cross-zone and cross-region traffic

    Multiply your replicated write volume and consumer fan-out by the data transfer rates in your cloud provider's current price list for traffic between zones, between regions and to the internet. Consumers in another zone or region can add more transfer than the brokers themselves, so map every producer and consumer to its zone before calculating. Pull rates directly from the provider's pricing page on the day you build the model, because these rates change and vary by provider and region. The output is a monthly transfer line per traffic path with the rate and its source noted.

  5. Add people, on-call and skills cost

    Estimate the operating effort for installation, configuration, monitoring, certificate and credential rotation, incident response, capacity changes and version upgrades. Include the on-call rota and the people who cover it, and be explicit about whether this work is internal staff, an implementation partner under a retainer, or a managed provider's responsibility. For a self-hosted platform, the upgrade path matters: for Kafka, for example, the project's upgrade notes state that ZooKeeper-based clusters must move to KRaft before upgrading to 4.x. The output is an hours-per-month estimate by role, with the one-time migration and build effort listed separately.

  6. Add upgrade and testing cycles

    Schedule the recurring work of applying supported releases, rehearsing rolling upgrades in a non-production environment, running failover and restore tests, and updating runbooks and evidence for auditors. Check the vendor's published support windows so you know when a version leaves support and forces an upgrade, and budget for the test environment that mirrors production sizing. Confirm with the project or vendor which releases are supported and how rolling upgrades are supported between them. The output is a yearly calendar of upgrade and test events with the people and environment each one requires.

  7. Compare against managed quotes on identical inputs

    Give every managed provider, implementation partner and internal team the same throughput, retention, replication, site, traffic and support assumptions from the earlier steps, and ask for a written quote with scope and assumptions attached. Compare the totals by category: infrastructure, network transfer, licensing or support, people, and one-time work. Where a quote omits transfer, storage tiers, support levels or upgrade effort, ask for those lines before comparing. The output is a side-by-side table in which every number traces to a stated assumption.

Hidden costs that appear after go-live

The largest costs of a self-hosted streaming platform often show up months after go-live, in categories that a broker price comparison never includes. Cross-zone and cross-region network traffic is the first. Producers, consumers, replicas and geo-replication links all move bytes between zones and sites, and cloud providers bill much of that traffic. Confirm your provider's inter-zone and egress rates for your topology, model replication factor and consumer fan-out, and check whether consumers in another zone are reading from a leader in a third. Recurring costs also include disaster recovery drills, which need people time, a second environment or capacity, and a documented switchover. Plan at least one failover test per year for any stream a critical function depends on, and budget the staff hours and environment cost for each run.

Schema and topic governance adds recurring work that managed services often bundle with a schema registry and quotas. Self-hosted, someone owns topic naming, partition counts, retention settings, ACL requests and schema compatibility rules, and that work grows with the number of teams publishing. Security reviews repeat on every Kafka, Pulsar or NATS upgrade and every new integration, and they need evidence such as TLS and SASL configuration, ACL exports and access logs. The cost of keeping a second engineer trained is often the most underestimated item. A single operator who is on leave or leaves the company leaves the platform unpatched and undocumented, so budget for a named backup who has run a failover and a broker upgrade.

Tenancy changes the sizing question. In Pulsar, multi-tenancy with quotas and isolation can let several business units share one cluster, but the shared BookKeeper and metadata layers then need capacity for the combined peak, not each team's average. NATS accounts isolate messaging domains within one server or cluster, which can reduce the number of clusters you run, yet JetStream replication, storage and noisy-neighbor limits still have to be sized for the total load. Ask any partner to size the shared platform from the sum of peak workloads, to show the per-account limits they will configure, and to state which of those limits you can change without a vendor ticket.

Questions buyers ask before hiring outside help

What drives the cost of self-hosted Kafka?

Most of the cost comes from the infrastructure the cluster needs, the people who run it, and the traffic it generates. The main components are broker compute, disk for retention, replication factor, network traffic (especially cross-zone traffic in cloud accounts), monitoring and backup tooling, and the engineering time to upgrade, secure and recover the cluster. Throughput and retention multiply the first two: more data per second means more brokers and more network, and longer retention means more storage on every replica. Ask any partner to show each component as a separate line in the quote, with what is one-time (design, hardening, initial deployment) and what recurs (infrastructure, support, upgrades).

Is self-hosting Kafka cheaper than managed Kafka?

It depends on scale, skills and how much operational risk you are willing to carry, so there is no general answer. Apache Kafka is licensed under Apache-2.0 and has no paid edition from the project itself, so the software license is not the cost. Self-hosting shifts cost from a vendor's service fee to your cloud bills, your staff and your on-call rota. Managed services bundle those operations but charge for throughput, storage and networking in their own pricing model. The fair test is a side-by-side model using your expected throughput, retention, replication and staffing, including the cost of a failed upgrade or a lost site. Ask us to model both paths against your written requirements before deciding.

How much staff time does running Kafka take?

The time depends on how many clusters you run, how often you upgrade, how strict your security and recovery requirements are, and how much automation exists. Routine work includes monitoring, capacity reviews, topic and ACL management, certificate and credential rotation, and patching Java and brokers. Kafka's time-based release plan targets three releases a year, and rolling upgrades are supported from each release in the past year to the latest version, so upgrades are a recurring task rather than a one-off. Ask a partner to state the expected operating hours per month for your cluster, who covers on-call, and which tasks they would hand over to your team.

How long does a streaming rollout take, and what does it depend on?

The timeline depends on the number of clusters, the security model, integration count, the state of your infrastructure and how quickly decisions are made. Work typically covers requirements, sizing, deployment in your own cloud accounts or data centers, TLS and SASL setup, ACLs, monitoring, backup and restoration testing, and client onboarding. Migrating from ZooKeeper-based clusters adds a step: Kafka 4.0 supports only KRaft mode, so older clusters must move to KRaft before upgrading to 4.x. Most engagements are fixed-scope, so the duration appears in the written scope, which should list milestones, dependencies and acceptance criteria.

Can our own team run a self-hosted streaming platform?

A capable platform team can run it, provided it has Kafka-specific skills, documented runbooks and time reserved for operations. The hard parts are less the first deployment than the ongoing duties: upgrades across major versions, authorization in KRaft clusters (where resources without ACLs are restricted to super users unless configured otherwise), certificate rotation, capacity growth and recovery testing. Be honest about who is on call at night and who has done a broker recovery before. Many organizations split the work, with a partner handling design, hardening and handover and their team owning daily operations. Ask for a written handover plan with named skills.

What should we ask a partner to include in a streaming quote?

Ask for a written scope that names every deliverable, environment and exclusion, so you can compare proposals on the same basis. A useful quote separates one-time work (design, deployment, hardening, migration, testing) from recurring work (monitoring, upgrades, patching, on-call, backup verification). It should state the assumptions behind sizing, including throughput, retention, replication factor and number of clusters, and what changes the price. Ask who owns the infrastructure, how credentials and keys are handled, how upgrades and security patches are delivered, and what acceptance tests prove recovery. DeployOpen does not publish a price list, and a quote follows from the written scope.

How DeployOpen scopes and delivers a fixed-scope streaming implementation

DeployOpen plans, implements, hardens, documents and supports self-hosted streaming platforms inside your own cloud accounts or data centers. We start from a written scope that separates one-time build work from recurring operating costs, so the cost comparison between self-hosting, a partner-run cluster and a managed service rests on your numbers rather than ours.

How we scope

  • Engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts.
  • The written scope lists the platform choice, expected throughput, retention periods, replication targets and the number of clusters to be run.
  • We ask for your current managed streaming bills, cross-zone traffic and storage estimates so the cost model reflects your own environment.
  • The scope names who operates the brokers, who holds on-call duty and what evidence the handover must include.

How we build

  • We deploy Kafka, Pulsar or NATS into your accounts or data centers with brokers, storage and metadata components sized to the agreed throughput and retention.
  • We configure TLS, SASL or other authentication and ACLs according to the scope, and document each setting that affects cost or security.
  • We run load tests at the agreed message rates and record broker, storage and network measurements that feed the cost model.
  • We set up monitoring and alerting for lag, disk growth and replication health so operating cost stays visible after go-live.

How we hand over

  • Handover documents cover architecture, sizing assumptions, upgrade paths for the chosen release line and the recurring cost drivers.
  • Your team receives runbooks for scaling brokers or storage, rotating credentials and restoring topics from backups.
  • We walk your platform and on-call staff through the operating model so they can run the cluster without us.
  • The handover includes a cost worksheet your finance and platform teams can update as throughput and retention change.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers, scoped separately from the build.
  • Retainers can cover patching, version upgrades and recovery testing, with the frequency and response terms agreed in writing.
  • We can re-run the cost comparison when throughput, retention or replication requirements change, as a scoped piece of work.
  • Support questions are answered against your documented architecture, so changes are tracked in the same records as the original build.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.