TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Launch HN: Batch (YC S20) – Replays for event-driven systems

154 pointsby dsiesalmost 5 years ago
Hello HN!<p>We are Ustin and Daniel, co-founders of Batch (<a href="https:&#x2F;&#x2F;batch.sh" rel="nofollow">https:&#x2F;&#x2F;batch.sh</a>) - an event replay platform. You can think of us as version control for data passing through your messaging systems. With Batch, a company is able to go back in time, see what data looked like at a certain point and if it makes sense, replay that piece of data back into the company&#x27;s systems.<p>This idea was born out of getting annoyed by what an unwieldy blackbox Kafka is. While many folks use Kafka for streaming, there is an equal number of Kafka users that use it as a traditional messaging system. Historically, these systems have offered very poor visibility into what&#x27;s going on inside them and offer (at best) a poor replay experience. This problem is prevalent pretty much across every messaging system. Especially if the messages on the bus are serialized, it is almost guaranteed that you will have to write custom, one-off scripts when working with these systems.<p>This &quot;visibility&quot; pain point is exacerbated tenfold if you are working with event driven architectures and&#x2F;or event sourcing - you must have a way to search and replay events as you will need to rebuild state in order to bring up new data stores and services. That may sound straightforward, but it&#x27;s actually really involved. You have to figure out how and where to store your events, how to serialize them, search them, play them back, and how&#x2F;when&#x2F;if to prune, delete or archive them.<p>Rather than spending a ton of money on building such a replay platform in-house, we decided to build a generic one and hopefully save everyone a bunch of time and money. We are 100% believers in &quot;buy&quot; (vs &quot;build&quot;) - companies should focus on building their core product and not waste time on sidequests. We&#x27;ve worked on these systems before at our previous gigs and decided to put our combined experience into building Batch.<p>A friend of mine shared this bit of insight with me (that he heard from Dave Cheney, I think?) - &quot;Is this what you want to spend your innovation tokens on?&quot; (referring to building something in-house) - and the answer is probably... no. So this is how we got here!<p>In practical terms, we give you a &quot;connector&quot; (in the form of a Docker image) that hooks into your messaging system as a consumer and begins copying all data that it sees on a topic&#x2F;exchange to Batch. Alternatively, you can pump data into our platform via a generic HTTP or gRPC API. Once the messages reach Batch, we index them and write them to a long-term store (we use <a href="https:&#x2F;&#x2F;www.elassandra.io" rel="nofollow">https:&#x2F;&#x2F;www.elassandra.io</a>). At that point, you can use either our UI or HTTP API to search and replay a subset of the messages to an HTTP destination or into another messaging system.<p>Right now, our platform is able to ingest data from Kafka, RabbitMQ and GCP PubSub, and we&#x27;ve got SQS on the roadmap. Really, we&#x27;re cool with adding support for whatever messaging system you need as long as it solves a problem for you.<p>One super cool thing is that if you are encoding your events in protobuf, we are able to decode them upon arrival on our platform, so that we can index them and let you search for data within them. In fact, we think this functionality is so cool that we really wanted to share it - surely there are other folks that need to quickly read&#x2F;write encoded data to various messaging systems. We wrote <a href="https:&#x2F;&#x2F;github.com&#x2F;batchcorp&#x2F;plumber" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;batchcorp&#x2F;plumber</a> for that purpose. It&#x27;s like curl for messaging systems and currently supports Kafka, RabbitMQ and GCP PubSub. It&#x27;s a port from an internal tool we used when interacting with our own Kafka and RabbitMQ instances.<p>In closing, we would love for you to check out <a href="https:&#x2F;&#x2F;batch.sh" rel="nofollow">https:&#x2F;&#x2F;batch.sh</a> and tell us what you think. Our initial thinking is to allow folks to pump their data into us for free with 1-3 days of retention. If you need more retention, that&#x27;ll require $ (we&#x27;re leaning towards a usage-based pricing model).<p>We envision Batch becoming a foundational component of your system architecture, but right now, our #1 goal is to lower the barrier to entry for event sourcing and we think that offering &quot;out-of-the-box&quot; replay functionality is the first step towards making this happen.<p>.. And if event sourcing is not your cup of tea - then you can get us in your stack to gain visibility and a peace of mind.<p>OK that&#x27;s it! Thank you for checking us out!<p>~Dan &amp; Ustin<p>P.S. Forgot about our creds:<p>I (Dan), spent a large chunk of my career working at data centers doing systems integration work. I got exposed to all kinds of esoteric things like how to integrate diesel generators into CMSs and automate VLAN provisioning for customers. I also learned that &quot;move fast and break things&quot; does not apply to data centers haha. After data centers, I went to work for New Relic, followed by InVision, Digital Ocean and most recently, Community (which is where I met Ustin). I work primarily in Go, consider myself a generalist, prefer light beers over IPAs and dabble in metal (music) production.<p>Ustin is a physicist turned computer scientist and worked towards a PhD on distributed storage over lossy networks. He has spent most of his career working as a founding engineer at startups like Community. He has a lot of experience working in Elixir and Go and working on large, complex systems.

21 comments

worldsoupalmost 5 years ago
I&#x27;ve worked on a very similar product in the past and can affirm that there is definitely enterprise interest for a good solution to event replay for orgs that are already doing event sourcing...I&#x27;m curious if offering out of the box replay will actually lower the bar and drive more orgs to pursue event sourcing? The CLI search functionality is really cool and useful as well.
评论 #24188942 未加载
pratioalmost 5 years ago
Congrats on the release. We&#x27;ve made a ragtag solution in-house that is complicated but works on those few unfortunate events that we need it. There&#x27;s a demo on request but it would be helpful if we can have a better way to test the product. Maybe an endpoint where we stream maybe 10000 events and see them replay? What sort of pricing tier are we talking about?
评论 #24189077 未加载
logicx24over 4 years ago
Wow, this is a great idea. I recently worked on a team building streaming data pipelines, and we built a bespoke system to do exactly this: end-to-end test our software. We had past messages written to a &gt;300TB sharded file, and wrote a microservice to read each shard and publish it to the message queue for our staging instance, and then run data validation&#x2F;anomaly detection on the output. It was useful but incredibly painful to use and maintain, and Batch would have been a fantastic solution for accomplishing this.
kanoboalmost 5 years ago
Congrats, looks useful! Just an opinion, but I think you should skip the cool large animation on your homepage and just start with the &quot;Our platform is essential in scaling and maintaining your business.&quot;. I had no idea what Batch was until I scrolled way below the fold.
评论 #24188994 未加载
评论 #24188969 未加载
cflyingdutchmanalmost 5 years ago
How does bookmarking work&#x2F;How do I keep track of how far I&#x27;ve read while replaying from Batch? Will you also index by date? It can take a long time to replay a lot of data; do you have any numbers on the read rates you support per topic?
评论 #24192949 未加载
yamrzoualmost 5 years ago
Congrats on the launch!<p>Two questions:<p>- If I have some data in Kafka, why would I want to pump it into your platform instead of spawning an Elasticsearch instance and using something like Kafka Connect to write to it and gain visibility?<p>- If I use Kafka as a permanent data store (with infinite retention), I can easily replay all events with existing clients (or with plumber). What additional functionality does the &quot;replay&quot; feature offer compared to that?
评论 #24189225 未加载
评论 #24189071 未加载
treisalmost 5 years ago
If I&#x27;m writing all my messages to durable storage why not work off the durable storage? I&#x27;m definitely not an expert in this area so perhaps I&#x27;m missing something. My logic is that if you&#x27;re paying the resource cost to write all your messages why not pay the resource cost to read&#x2F;write back there?
评论 #24189361 未加载
danenaniaalmost 5 years ago
This looks interesting! A couple questions (that may also apply to event sourcing more generally):<p>- How do you handle events with side effects (sending emails, for example), and ensuring they aren&#x27;t triggered on replay when they shouldn&#x27;t be?<p>- How do you handle randomness, like uuid generation?
评论 #24190819 未加载
评论 #24190655 未加载
james_s_tayleralmost 5 years ago
I feel like a tagline like &quot;event sourcing made easy&quot; would hook me more and get me interested in _attempting_ to decipher your marketing page to understand the USP.<p>Pretty cool idea though. Hope it pans out for you guys.
评论 #24193666 未加载
kbyatnalalmost 5 years ago
One of my previous co. used Kafka and hacked something similar together on an internal Retool dashboard + DynamoDB. This definitely makes a lot of sense!<p>Will this work with Celery (python) configured with RabbitMQ as the broker?
评论 #24193738 未加载
shay_keralmost 5 years ago
Hi Dan&#x2F;Ustin,<p>Congrats on the launch. The pain-point makes sense to me. I&#x27;m just curious - what&#x27;s the big picture for you all? I imagine it must be larger than just replay.
评论 #24191028 未加载
ZephyrBlualmost 5 years ago
It seems like you&#x27;re solving quite a complex problem!<p>I&#x27;m curious how long it took you to build this initial product given the complexity.<p>YC has a bias for shipping quickly, but my gut instinct is that it would have taken you a while to build this initial version.<p>Did it only take a few months, or closer to 8-12+?
评论 #24195628 未加载
pepelotasalmost 5 years ago
I&#x27;ve solved the replaying bit before with a brute approach and AWS Athena. It would ingest all the events from S3, filter the unwanted ones out, and put the rest in SQS ready for consumption. It was definitely expensive though, not something you would run often.
评论 #24194688 未加载
benoittwakeover 4 years ago
Very interesting tool. You&#x27;re absolutely right that I wouldn&#x27;t spend my innovation tokens on it. Congratulations for your work !
Monotonicalmost 5 years ago
Does this have support for Rabbit pub&#x2F;sub? There&#x27;s a bit of confusing wording on the page that makes it unclear.
评论 #24190250 未加载
ponkeralmost 5 years ago
I hear so much about Kafka, could someone give the two-sentence description of what it is and who uses it and for what?
评论 #24190841 未加载
评论 #24190612 未加载
randtrain34almost 5 years ago
Is Pulsar support on the roadmap?
评论 #24189035 未加载
rswailalmost 5 years ago
Nice concept and interesting, expect a demo request incoming :)
Nikhil833032almost 5 years ago
Congratulations on this release....That is really useful!
评论 #24195652 未加载
LukeEFalmost 5 years ago
&#x27;Light beers over IPA&#x27; sorry, I&#x27;m out.<p>;)
pdubs1almost 5 years ago
Has anyone ever told you that you&#x27;re &quot;batch it crazy&quot;?
评论 #24191727 未加载
评论 #24191816 未加载