{"id":2340,"date":"2026-11-09T18:41:46","date_gmt":"2026-11-09T18:41:46","guid":{"rendered":"https:\/\/motoshare.in\/blog\/?p=2340"},"modified":"2026-11-09T18:41:47","modified_gmt":"2026-11-09T18:41:47","slug":"choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs","status":"publish","type":"post","link":"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/","title":{"rendered":"Choosing an Event Streaming Platform: Log Storage, Latency, and Operational Trade-Offs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Modern software architectures rarely move data in nightly batch files anymore. Whether processing payment authorizations, synchronizing microservice state, capturing database change events (CDC), or feeding real-time fraud models, organizations rely on event streaming platforms as the central nervous system connecting operational applications to analytical infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yet &#8220;event streaming&#8221; covers technologies built around very different architectural assumptions. Choosing between a distributed commit log, a cloud-native serverless stream, a tiered storage engine, or a lightweight messaging broker comes down to three engineering realities: how long events must be retained, what throughput and tail-latency guarantees are required, and how much cluster administration your team can realistically absorb.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Event_Streaming_vs_Traditional_Message_Queues\" >Event Streaming vs. Traditional Message Queues<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Major_Event_Streaming_Platforms_and_How_They_Differ\" >Major Event Streaming Platforms and How They Differ<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Apache_Kafka\" >Apache Kafka<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Confluent_Platform_and_Confluent_Cloud\" >Confluent Platform and Confluent Cloud<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Redpanda\" >Redpanda<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Apache_Pulsar\" >Apache Pulsar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Amazon_Kinesis_Data_Streams\" >Amazon Kinesis Data Streams<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#WarpStream_by_Confluent\" >WarpStream (by Confluent)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#NATS_with_JetStream\" >NATS (with JetStream)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Event_Streaming_Platform_Comparison\" >Event Streaming Platform Comparison<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Critical_Architectural_Factors_to_Verify_Before_Committing\" >Critical Architectural Factors to Verify Before Committing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/motoshare.in\/blog\/choosing-an-event-streaming-platform-log-storage-latency-and-operational-trade-offs\/#Selecting_the_Right_Streaming_Backbone\" >Selecting the Right Streaming Backbone<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Event_Streaming_vs_Traditional_Message_Queues\"><\/span>Event Streaming vs. Traditional Message Queues<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Many architectural mistakes begin by treating an event streaming platform as a drop-in replacement for a traditional task queue like RabbitMQ or Amazon SQS:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Traditional Message Queues<\/strong> route discrete tasks to competing consumers and delete each message once acknowledged. They excel at complex routing rules, priority queues, and asynchronous job distribution.<\/li>\n\n\n\n<li><strong>Distributed Event Streaming Platforms<\/strong> append immutable records to ordered, partitioned logs. Multiple independent consumer groups can read the same stream at their own pace, replay historical events from days or months earlier to rebuild downstream state, and process continuous event flows in strict partition order.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Major_Event_Streaming_Platforms_and_How_They_Differ\"><\/span>Major Event Streaming Platforms and How They Differ<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Apache_Kafka\"><\/span>Apache Kafka<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apache Kafka remains the foundational standard for distributed event streaming across enterprise engineering. Writing append-only logs across partitioned topics, Kafka delivers high throughput, durable replication, and an unmatched ecosystem of connectors (Kafka Connect), stream processors (Kafka Streams, Apache Flink), and schema registries. With the removal of ZooKeeper in favor of its internal KRaft consensus protocol, modern Kafka deployments also streamline metadata management.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Organizations needing proven multi-datacenter replication, massive ecosystem compatibility, and vendor-neutral portability across clouds rely on Kafka. Its operational challenge lies in infrastructure management: scaling partitions, rebalancing brokers after node failures, and managing local disk storage on large self-hosted clusters demand dedicated platform engineering expertise.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Confluent_Platform_and_Confluent_Cloud\"><\/span>Confluent Platform and Confluent Cloud<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Founded by the original creators of Apache Kafka, Confluent wraps the open-source Kafka protocol in an enterprise data streaming platform available both as self-managed software and a fully managed serverless cloud service. Confluent adds cloud-native Kora storage engines that decouple compute from object storage, built-in stream governance (Schema Registry, Data Portal, lineage), managed connectors, and native Apache Flink stream processing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enterprises standardized on the Kafka API that want to offload broker operations, gain enterprise security\/governance controls, and pair streaming transport with managed Flink processing adopt Confluent to accelerate delivery. Buyers should model network egress, partition-hour charges, and connector usage carefully, as managed convenience scales with throughput and feature tiers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Redpanda\"><\/span>Redpanda<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Redpanda is a Kafka-API-compatible streaming data platform rewritten from the ground up in C++ using a thread-per-core architecture (Seastar) rather than the Java Virtual Machine (JVM). By eliminating JVM garbage-collection pauses and external dependencies while writing directly to modern NVMe hardware and tiered cloud object storage, Redpanda delivers remarkably low tail latency (p99) and simpler single-binary operations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Latency-sensitive workloads\u2014such as algorithmic trading, real-time fraud scoring, and edge-to-cloud ingestion\u2014as well as platform teams tired of JVM memory tuning find Redpanda compelling. While protocol-compatible with Kafka clients, teams migrating complex Kafka setups should verify edge-case support for specific legacy Kafka administrative APIs or custom broker plugins.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Apache_Pulsar\"><\/span>Apache Pulsar<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Apache Pulsar separates compute from storage at its core architectural layer. Stateless serving brokers handle client connections and caching, while Apache BookKeeper stores replicated log segments and automatically offloads older ledgers to cloud object storage (S3, GCS, Azure Blob). This decoupled design allows clusters to scale serving capacity and storage independently without painful partition data rebalancing, while natively supporting both pub-sub streaming and traditional queuing semantics alongside multi-tenancy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Large platform teams operating shared multi-tenant streaming infrastructure across dozens of business units or requiring geo-replicated, long-retention streams gain substantial architectural flexibility from Pulsar. The trade-off is moving-part complexity: running self-hosted Pulsar requires operating brokers, BookKeeper bookies, and metadata stores, though commercial vendors like StreamNative simplify deployment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Amazon_Kinesis_Data_Streams\"><\/span>Amazon Kinesis Data Streams<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Amazon Kinesis Data Streams provides a fully managed, serverless streaming ingestion service deeply integrated into the AWS ecosystem. Available in both provisioned-shard and on-demand capacity modes, Kinesis connects natively to AWS Lambda, Amazon Data Firehose, Managed Service for Apache Flink, and IAM security policies without any broker provisioning or OS patching.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AWS-centric engineering teams that prioritize zero operational maintenance and tight IAM\/VPC integration for ingesting clickstreams, IoT telemetry, or application logs move quickly with Kinesis. Its constraints are cloud lock-in and API incompatibility with Kafka: migrating workloads off Kinesis requires rewriting producer and consumer client code, and default retention windows are shorter unless extended retention tiers are enabled.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"WarpStream_by_Confluent\"><\/span>WarpStream (by Confluent)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WarpStream introduces a diskless, bring-your-own-cloud (BYOC) Kafka-compatible architecture that writes streaming data directly to cloud object storage (such as Amazon S3 or Google Cloud Storage) without local disks or cross-availability-zone replication fees. Stateless agent containers run inside the customer&#8217;s own VPC, keeping all payload data inside the buyer&#8217;s security perimeter while a hosted control plane coordinates metadata.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">High-volume logging, observability pipelines, and batch-adjacent streaming workloads\u2014where multi-terabyte throughput makes traditional cross-AZ broker replication prohibitively expensive\u2014benefit dramatically from WarpStream&#8217;s cost structure. Because object storage introduces higher write latency than local NVMe disks, WarpStream targets throughput-heavy workloads (hundreds of milliseconds latency) rather than ultra-low-latency transactional microservices.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"NATS_with_JetStream\"><\/span>NATS (with JetStream)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">NATS is a lightweight, high-performance connective messaging system written in Go that gains persistent event streaming, replay, and key-value\/object store capabilities through its built-in <strong>JetStream<\/strong> engine. Deploying as a tiny single binary with minimal memory footprint, NATS supports flexible subject-based routing, request-reply patterns, edge-to-cloud superclusters, and durable streams without the heavy operational overhead of JVM-based platforms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Distributed edge deployments, IoT fleets, microservice control planes, and smaller engineering teams seeking unified messaging and durable streaming in a lightweight footprint thrive with NATS. For massive multi-terabyte analytical data lakes requiring hundreds of pre-built enterprise database connectors, Kafka&#8217;s broader data-integration ecosystem remains deeper.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Event_Streaming_Platform_Comparison\"><\/span>Event Streaming Platform Comparison<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Platform<\/strong><\/td><td><strong>Architecture Model<\/strong><\/td><td><strong>API Compatibility<\/strong><\/td><td><strong>Best Fit<\/strong><\/td><td><strong>Key Trade-Off<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Apache Kafka<\/strong><\/td><td>Partitioned distributed commit log (JVM \/ KRaft)<\/td><td>Kafka protocol (standard)<\/td><td>High-throughput enterprise backbones and broad ecosystem needs<\/td><td>Operational overhead of broker scaling and partition rebalancing<\/td><\/tr><tr><td><strong>Confluent<\/strong><\/td><td>Managed cloud-native Kafka + Flink + governance<\/td><td>Kafka protocol<\/td><td>Enterprises wanting serverless Kafka with full governance and Flink<\/td><td>Consumption and connector pricing scales with throughput<\/td><\/tr><tr><td><strong>Redpanda<\/strong><\/td><td>C++ thread-per-core engine with tiered object storage<\/td><td>Kafka API compatible<\/td><td>Low tail-latency workloads and simpler self-hosted operations<\/td><td>Smaller third-party ecosystem of broker-level plugins<\/td><\/tr><tr><td><strong>Apache Pulsar<\/strong><\/td><td>Decoupled compute (brokers) and storage (BookKeeper)<\/td><td>Pulsar native + Kafka protocol proxy<\/td><td>Multi-tenant platforms and long-retention cloud-native streams<\/td><td>More moving components to manage in self-hosted clusters<\/td><\/tr><tr><td><strong>Amazon Kinesis<\/strong><\/td><td>Serverless AWS-managed shard streams<\/td><td>Proprietary AWS API<\/td><td>AWS-native teams prioritizing zero infrastructure management<\/td><td>AWS lock-in; non-Kafka client SDKs and per-shard pricing nuances<\/td><\/tr><tr><td><strong>WarpStream<\/strong><\/td><td>Diskless BYOC architecture backed by object storage<\/td><td>Kafka API compatible<\/td><td>High-volume streaming where cross-AZ replication costs dominate<\/td><td>Higher baseline latency (hundreds of ms) due to object storage<\/td><\/tr><tr><td><strong>NATS JetStream<\/strong><\/td><td>Lightweight Go binary for messaging + persistent streams<\/td><td>NATS protocol<\/td><td>Edge computing, IoT, microservices, and lean platform teams<\/td><td>Fewer turnkey enterprise data-warehouse connectors than Kafka<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Critical_Architectural_Factors_to_Verify_Before_Committing\"><\/span>Critical Architectural Factors to Verify Before Committing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cross-Availability-Zone Networking Costs:<\/strong> On public clouds, replicating high-volume Kafka clusters across three availability zones often generates inter-AZ data transfer bills that exceed compute and storage costs combined. Evaluate tiered storage, rack-aware fetching, or diskless object-storage engines early if throughput exceeds several gigabytes per minute.<\/li>\n\n\n\n<li><strong>Schema Governance and Compatibility Rules:<\/strong> A streaming platform without an enforced Schema Registry quickly turns into a breaking-change hazard when an upstream service alters a JSON or Avro field. Ensure your chosen stack enforces backward and forward schema compatibility at ingestion time.<\/li>\n\n\n\n<li><strong>Stream Processing Requirements:<\/strong> Decide whether your streaming layer only transports bytes from point A to point B or needs stateful transformations\u2014such as windowed aggregations, stream-to-stream joins, and enrichment\u2014via Apache Flink, Kafka Streams, or rising SQL stream processors.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Selecting_the_Right_Streaming_Backbone\"><\/span>Selecting the Right Streaming Backbone<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If your organization values ecosystem longevity, broad vendor portability, and massive connector availability, <strong>Apache Kafka<\/strong>\u2014or managed <strong>Confluent Cloud<\/strong>\u2014remains the safest architectural anchor. When sub-10ms tail latency and simplified single-binary operations matter more than legacy JVM tuning, <strong>Redpanda<\/strong> offers an immediate performance upgrade without rewriting client code. For massive, high-throughput telemetry streams crushed by cloud networking fees, <strong>WarpStream<\/strong> reshapes infrastructure economics, while <strong>NATS JetStream<\/strong> and <strong>Amazon Kinesis<\/strong> give lean engineering teams and AWS-native stacks the fastest path to production without broker babysitting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modern software architectures rarely move data in nightly batch files anymore. Whether processing payment authorizations, synchronizing microservice state, capturing database [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":2343,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[2458,2457,2392,2456,2454,2460,2459,2455],"class_list":["post-2340","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-apache-kafka","tag-apache-pulsar","tag-data-engineering","tag-distributed-systems","tag-event-streaming","tag-message-queues","tag-real-time-data","tag-redpanda"],"_links":{"self":[{"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/posts\/2340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/comments?post=2340"}],"version-history":[{"count":1,"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/posts\/2340\/revisions"}],"predecessor-version":[{"id":2346,"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/posts\/2340\/revisions\/2346"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/media\/2343"}],"wp:attachment":[{"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/media?parent=2340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/categories?post=2340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/motoshare.in\/blog\/wp-json\/wp\/v2\/tags?post=2340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}