Summary:
- Kinesis Data Streams delivers sub-second latency with granular shard control, while Amazon Data Firehose provides fully managed delivery with automatic batching to destinations like S3, Redshift, and Apache Iceberg tables.
- The 2025-2026 enhancements including On-Demand Advantage mode, 10 MiB record sizes, and native Iceberg integration have fundamentally changed how architects should evaluate these services.
- Cost modeling differs dramatically. Streams charges per shard-hour and data volume, while Firehose charges purely on ingested data volume with no infrastructure management overhead.
- This guide provides a decision framework, comparison tables, and configuration examples to help you select the right service for real-time analytics, log aggregation, or event-driven architectures.
Choosing between AWS streaming services can feel like navigating a maze where every turn reveals another trade-off between latency, cost, and operational complexity. When your architecture demands real-time data processing, the decision between Kinesis Data Streams and Amazon Data Firehose becomes one of the most consequential choices you will make. Both services handle streaming data at scale, yet they serve fundamentally different purposes and impose distinct operational burdens on your team.
Understanding these differences is not merely academic. It directly impacts your system’s responsiveness, your monthly AWS bill, and the engineering hours required to maintain your data pipeline. This guide dissects both services through the lens of recent AWS enhancements, providing you with a decision framework grounded in 2025-2026 capabilities.
Overview of Kinesis Data Streams and Amazon Data Firehose
Amazon Kinesis Data Streams is a massively scalable, durable real-time data streaming service designed for scenarios where you need fine-grained control over data consumption. It operates on a shard-based architecture where each shard provides 1 MB/s write capacity and 2 MB/s read capacity. You provision shards explicitly in provisioned mode or let AWS handle scaling automatically in on-demand mode.
Data persists in the stream for a configurable retention period ranging from 24 hours to 365 days. This enables replay capabilities that prove invaluable during incident recovery or reprocessing scenarios.
Amazon Data Firehose, formerly known as Kinesis Data Firehose, takes a fundamentally different approach by abstracting away all infrastructure management. You configure a delivery stream, specify your destination, and Firehose handles buffering, batching, compression, and delivery automatically. There are no shards to manage, no capacity planning exercises, and no consumer applications to build.
Firehose scales elastically based on incoming data volume, making it the preferred choice when your primary goal is loading streaming data into storage or analytics services without writing custom consumer code.
The naming evolution itself reflects AWS’s strategic positioning. The rebranding to “Amazon Data Firehose” in 2024 signaled its expansion beyond Kinesis-only sources to accept data directly from Amazon MSK, CloudWatch Logs, and even S3 event notifications. This architectural flexibility positions Firehose as a universal delivery mechanism rather than a Kinesis-specific feature. Understanding this distinction helps clarify when each service fits your requirements.
Architectural differences and source integration
The architectural philosophies underlying these services diverge at their core. Kinesis Data Streams implements a publish-subscribe model where multiple consumers can independently read from the same stream at their own pace. Each consumer maintains its own checkpoint, enabling different applications to process the same data for distinct purposes. This fan-out capability makes Streams ideal for event-driven architectures where a single event triggers multiple downstream workflows.
Source types and ingestion patterns
Kinesis Data Streams accepts data exclusively through the PutRecord and PutRecords APIs, requiring producers to explicitly push data into the stream. This design provides maximum flexibility but demands that you build or configure producer applications. Common producer patterns include:
- Kinesis Producer Library (KPL): Aggregates multiple user records into single Kinesis records for efficiency
- AWS SDK direct integration: Custom applications using PutRecords for batch ingestion
- Kinesis Agent: File-based ingestion from EC2 instances or on-premises servers
Amazon Data Firehose supports a broader range of source types that eliminate producer development entirely in many scenarios. Beyond direct API puts, Firehose can ingest from Kinesis Data Streams as a source, Amazon MSK topics, CloudWatch Logs subscriptions, and AWS IoT rules. This source diversity means you can route data from managed services directly to storage without intermediate processing layers.
Consumer architecture and processing models
Kinesis Data Streams requires you to build or deploy consumer applications that poll for records, process them, and checkpoint progress. The Kinesis Client Library (KCL) simplifies this by handling shard assignment, load balancing, and checkpointing automatically. However, you remain responsible for deploying, scaling, and monitoring these consumer applications. This operational overhead is the price of flexibility.
Firehose eliminates consumer development entirely by acting as both the consumer and the delivery mechanism. You configure transformation logic through Lambda functions if needed, but Firehose handles all record retrieval, batching, and destination writes internally. This serverless model reduces operational burden dramatically but removes your ability to implement complex processing logic or maintain state across records.
Real-time streaming performance
Latency characteristics represent one of the most significant differentiators between these services. Kinesis Data Streams delivers end-to-end latency measured in hundreds of milliseconds under normal conditions. Records become available to consumers within 200-500ms of ingestion, making Streams suitable for real-time dashboards, fraud detection, and interactive applications where users expect immediate feedback.
Enhanced Fan-Out for dedicated throughput
Standard Kinesis consumers share the 2 MB/s per-shard read capacity, which can create contention when multiple applications consume from the same stream. Enhanced Fan-Out addresses this limitation by providing each registered consumer with dedicated 2 MB/s throughput per shard. Records are pushed to consumers over HTTP/2, reducing latency to approximately 70ms and eliminating polling overhead.
Consider the following comparison of consumer modes:
| Characteristic | Standard consumer | Enhanced Fan-Out consumer |
|---|---|---|
| Throughput per shard | 2 MB/s shared across all consumers | 2 MB/s dedicated per consumer |
| Delivery model | Pull via GetRecords API | Push over HTTP/2 |
| Typical latency | 200-500ms | ~70ms |
| Maximum consumers | 5 per shard (soft limit) | 20 registered consumers per stream, upto 50 on On-Demand Advantage streams |
| Additional cost | None | Per consumer-shard hour plus data retrieval |
Firehose buffering and delivery intervals
Amazon Data Firehose introduces intentional latency through its buffering mechanism. You configure buffer size (1-128 MB) and buffer interval (0-900 seconds), and Firehose delivers data when either threshold is reached. The minimum practical latency is approximately 60 seconds when using the smallest buffer settings. Most production configurations use larger buffers to optimize cost and reduce small-file proliferation in S3.
This buffering behavior makes Firehose unsuitable for true real-time use cases but ideal for near-real-time analytics where minute-level freshness suffices. Log aggregation, clickstream analysis, and data lake ingestion typically tolerate this latency in exchange for simplified operations.
Scaling and recent enhancements for 2025-2026
AWS has introduced substantial enhancements to both services that change the calculus for many architectural decisions. Understanding these recent capabilities ensures your design leverages the latest optimizations rather than working around limitations that no longer exist.
On-Demand Advantage mode for Kinesis Data Streams
The On-Demand Advantage mode, announced in November 2025, represents a significant evolution in Streams capacity management. It adds a ‘warm throughput’ capability to on-demand streams, you can configure instantly available capacity up to 10 GiB/s ahead of an expected traffic event, rather than relying on standard on-demand mode’s reactive scale-up. It’s best suited to accounts ingesting at least 10 MiB/s in aggregate, or those running hundreds of streams in a region.
Key characteristics of On-Demand Advantage include:
- Warm throughput lets you pre-configure instantly available capacity up to 10 GiB/s ahead of anticipated spikes, instead of waiting on reactive scaling
- At least 60% lower usage pricing than On-Demand Standard ($0.032/GB ingested, $0.016/GB retrieved in US East, vs. standard on-demand rates)
- No per-stream hourly charge, billing shifts entirely to data volume, with a 25 MiB/s account-level minimum for ingest and retrieval
- Enhanced Fan-Out included at no additional charge, with support for up to 50 registered consumers per stream (up from 20 on standard on-demand streams)
- Extended retention pricing cut by 77%, from $0.10/GB-month to $0.023/GB-month
This mode particularly benefits workloads with predictable baseline traffic but occasional spikes, such as e-commerce platforms during flash sales or media streaming services during live events. The guaranteed baseline eliminates the risk of throttling during critical moments while the automatic scaling handles unexpected demand.
Record size increases and Iceberg integration
Kinesis Data Streams has expanded its record size limit significantly, as of October 2025, streams support records up to 10 MiB, a tenfold increase from the previous 1 MiB default. Amazon Data Firehose’s record limit, by contrast, remains 1,000 KiB for standard sources like Direct PUT or Kinesis Data Streams, it only rises to 10 MB when the source is Amazon MSK. The Kinesis increase enables new use cases involving large JSON documents, embedded media metadata, or aggregated event batches that previously required splitting across multiple records, without needing a separate large-object workaround.
Perhaps the most architecturally significant enhancement is Firehose’s native support for Apache Iceberg table format and S3 Tables. Rather than delivering raw Parquet or JSON files that require separate cataloging, Firehose can now write directly to Iceberg tables with automatic schema evolution, partition management, and ACID transaction guarantees. This integration eliminates the need for separate ETL jobs to maintain table metadata and enables immediate queryability through Athena, Spark, or Trino.
Configuration example for Iceberg delivery
The following AWS CLI command demonstrates creating a Firehose delivery stream with Iceberg table destination:
This configuration routes data directly to an Iceberg table managed through the AWS Glue Data Catalog, with Firehose handling all compaction, manifest updates, and partition management automatically. The transformation capabilities extend further with dynamic partitioning support.
Transformation, retention, and delivery destinations
Data transformation requirements often determine which service fits your architecture. Kinesis Data Streams itself performs no transformation. It stores records exactly as received and delivers them unchanged to consumers. All transformation logic lives in your consumer applications, giving you complete flexibility but requiring development effort.
Firehose transformation with Lambda and dynamic partitioning
Amazon Data Firehose offers built-in transformation through Lambda function invocation. Each record passes through your Lambda function before delivery, enabling format conversion, enrichment, filtering, or any custom logic expressible in Lambda’s supported runtimes. The transformation Lambda receives batches of records and must return the same number of records with a processing status for each.
Dynamic partitioning extends transformation capabilities by allowing Firehose to route records to different S3 prefixes based on record content. You define partitioning keys using JQ expressions or Lambda-extracted metadata, and Firehose automatically organizes output files accordingly. This feature proves invaluable for multi-tenant architectures or time-series data requiring partition pruning during queries.
Data retention and replay capabilities
Kinesis Data Streams provides configurable retention from 24 hours to 365 days. Extended retention enables replay scenarios where you reprocess historical data through updated consumer logic or recover from downstream failures. This capability proves essential for debugging, compliance auditing, and machine learning model retraining on historical event sequences.
Firehose provides no retention capability. Once records are delivered to the destination, they exist only in that destination. Failed deliveries retry automatically, and undeliverable records route to an S3 backup bucket. However, there is no mechanism to replay successfully delivered data through Firehose itself. Your replay strategy must rely on the destination storage.
Destination comparison
The supported destinations differ substantially between services:
| Destination type | Kinesis Data Streams | Amazon Data Firehose |
|---|---|---|
| Amazon S3 | Via custom consumer | Native support with partitioning |
| Amazon Redshift | Via custom consumer | Native COPY command integration |
| Amazon OpenSearch | Via custom consumer | Native indexing support |
| Apache Iceberg tables | Via custom consumer | Native support (2025) |
| S3 Tables | Via custom consumer | Native support (2025) |
| Splunk | Via custom consumer | Native HEC integration |
| HTTP endpoints | Via custom consumer | Native webhook delivery |
| Custom applications | Native via KCL/SDK | Not supported |
| Lambda functions | Native event source mapping | Transformation only, not destination |
Cost comparison with practical examples
Pricing models for these services follow fundamentally different structures, making direct comparison challenging without specific workload parameters. Kinesis Data Streams charges based on shard-hours in provisioned mode or data volume in on-demand mode, plus additional charges for extended retention and Enhanced Fan-Out consumers. Firehose charges purely on ingested data volume with no infrastructure fees.
Kinesis Data Streams pricing breakdown
For provisioned mode, you pay approximately $0.015 per shard-hour in US regions, translating to roughly $11 per shard per month. Each shard provides 1 MB/s ingestion and 2 MB/s retrieval. Extended retention beyond 24 hours adds $0.020 per shard-hour for retention up to 7 days, with long-term retention pricing for periods beyond that. Enhanced Fan-Out adds $0.013 per consumer-shard-hour plus $0.013 per GB retrieved.
On-demand mode simplifies pricing to approximately $0.08 per GB ingested and $0.04 per GB retrieved, eliminating shard management but potentially increasing costs for high-throughput workloads. The On-Demand Advantage mode introduces baseline capacity pricing that varies by region and committed throughput level.
Amazon Data Firehose pricing breakdown
Firehose pricing centers on ingested data volume at approximately $0.029 per GB for the first 500 TB per month in US regions. Format conversion to Parquet or ORC adds $0.018 per GB. Dynamic partitioning adds $0.020 per GB of processed data. There are no charges for delivery to S3, but deliveries to Redshift, OpenSearch, or HTTP endpoints incur additional per-GB fees.
Cost scenario comparison
Consider a workload ingesting 10 TB per month with requirements for both real-time processing and long-term storage:
| Cost component | Streams + custom S3 consumer | Streams + Firehose to S3 | Firehose only |
|---|---|---|---|
| Ingestion (10 TB) | $800 (on-demand) | $800 + $290 | $290 |
| Consumer compute | ~$200 (Lambda/EC2) | $0 (Firehose managed) | N/A |
| Real-time capability | Yes | Yes | No (60s+ latency) |
| Operational overhead | High | Medium | Low |
| Estimated monthly total | ~$1,000 | ~$1,090 | ~$290 |
This comparison illustrates why architecture requirements, not just cost, should drive your decision. The Firehose-only option costs 70% less but cannot support real-time use cases. The combined approach provides both capabilities at moderate additional cost.
Use-case decision framework
After clarifying the technical differences, applying them to specific scenarios helps crystallize the right choice for your architecture. The decision often reduces to answering three questions. What latency can your application tolerate? Do you need multiple consumers processing the same data? How much operational complexity can your team absorb?
When to choose Kinesis Data Streams
Kinesis Data Streams excels in scenarios requiring sub-second latency, multiple independent consumers, or complex stateful processing. Specific use cases include:
- Real-time fraud detection: Transaction scoring must complete before authorization timeout
- Live dashboards and monitoring: Metrics must reflect current state within seconds
- Event sourcing architectures: Multiple services rebuild state from the same event stream
- Gaming leaderboards: Score updates must propagate to all players immediately
- IoT command and control: Device responses require millisecond-level feedback loops
When to choose Amazon Data Firehose
Firehose fits scenarios where delivery to storage or analytics services matters more than processing latency. Ideal use cases include:
- Log aggregation: Application logs flowing to S3 or OpenSearch for later analysis
- Clickstream analytics: User behavior data populating data lakes for batch processing
- Data lake ingestion: Streaming data into Iceberg tables for SQL analytics
- Compliance archival: Audit events requiring durable storage without real-time processing
- Third-party integrations: Delivering data to Splunk, Datadog, or custom HTTP endpoints
Conclusion
The choice between Kinesis Data Streams and Amazon Data Firehose ultimately reflects your priorities across three dimensions. These are latency requirements, operational complexity tolerance, and consumer architecture needs. Streams delivers the sub-second responsiveness and multi-consumer flexibility that real-time applications demand. Firehose provides the operational simplicity and native destination integrations that accelerate data lake and analytics implementations.
The 2025-2026 enhancements, particularly On-Demand Advantage mode and native Iceberg support, have narrowed the gap in some areas while reinforcing the distinct value propositions of each service.
Looking ahead, AWS continues investing in both services with features that reduce operational burden without sacrificing capability. The trend toward managed table formats like Iceberg suggests that Firehose will increasingly serve as the default path for analytics-focused streaming. Streams remains the foundation for event-driven architectures requiring immediate processing.
For most production systems handling significant data volumes, the combination of both services provides the optimal balance of real-time capability and durable storage. Your architecture should leverage each service for its strengths rather than forcing one to serve purposes better suited to the other.