Sergey Makagonov
05/28/2026, 8:53 PMvenice-writer-router , alongside venice-router, venice-controller, etc- that will be a Netty HTTP server on top of the venice-producer client
• pros:
◦ not that hard to implement - we can reuse a bunch of code from router
◦ doesn't have to handle complex use-cases like write compute right away - we can start with simple PUT/DELETE for the entire key(s)
3. proxy solution, shipped as a DaemonSet
• can be extended further to support fast client and Da-Vinci client for reads. It's very likely we'll explore faster clients down the road.
Questions to the community:
• I heard from @Ankit that for their C++ service, they used go-proxy (overseeing the Java Da-vinci and Producer), and the writes and reads went through this proxy. Curious if there is any chance this part could be open-sourced? It should be generic enough, doesn't even have to compile, we can pick it up and make it work. Even design docs/proposal would be helpful.
• how common is the RT-only pattern for Venice, where writes happen outside of streaming/batch path?
cc @Koorous Vargha and @Zac Policzer would appreciate your input and recommendations on the direction.Sergey Makagonov
05/28/2026, 8:53 PMZac Policzer
05/28/2026, 8:55 PMAnkit
05/28/2026, 8:55 PMAnkit
05/28/2026, 8:56 PMats-tier-l1proxy
Java service was qcsAnkit
05/28/2026, 8:56 PMAnkit
05/28/2026, 8:57 PMKoorous Vargha
05/28/2026, 8:59 PMhow common is the RT-only pattern for Venice, where writes happen outside of streaming/batch path?It's pretty common, but our recommendation to our customers now is to still have a batch job to push the full dataset in the event of data loss.
Koorous Vargha
05/28/2026, 9:00 PMAnkit
05/28/2026, 9:00 PMKoorous Vargha
05/28/2026, 9:02 PMKoorous Vargha
05/28/2026, 9:04 PMSergey Makagonov
05/28/2026, 9:04 PMbasically ATS -> QCS-> Davinciok, so ATS (C++) was colocated with QCS (Java) and avoided network hops?
Sergey Makagonov
05/28/2026, 9:21 PMI think DaemonSet with the OnlineProducer would be the best approach here.At the end of the day, it's would be the same code/implementation, the difference is just deployment topology: Deployment (small replica count) vs DaemonSet (one per node, possibly scoped via nodeSelector). Either way it's a long-running service handling HTTP+Avro on top of OnlineProducer.
Koorous Vargha
05/28/2026, 9:24 PMFelix GV
05/28/2026, 9:31 PMKoorous Vargha
05/28/2026, 9:39 PMKoorous Vargha
05/28/2026, 9:40 PMKoorous Vargha
05/28/2026, 9:42 PMSergey Makagonov
05/28/2026, 9:43 PMMore importantly than the above (IMHO)… is the fact that the Venice write path is async by design. That needs to be made as clear as possible as part of the API design in order to avoid tech debt pile up from users (and let’s face it, LLMs) who misunderstand or completely skip reading the docsYes, that's a great point. We write through kafka. so there are no real "PUT/DELETE", more like "submit". By "if async writes are unacceptable, then you can build sync writes", do you mean writing to Servers directly?
Sergey Makagonov
05/28/2026, 9:45 PMI guess my hesitancy to move forward with the router approach is that the router is on deprecation path, and I don't think I can recommend building more on top of it as the team wants to remove router entirely in the futurejust to clarify, extending existing router was not an option - it would bring unnecessary and useless complexity for JVM-based client. The router proposed was specifically for write path only.
Koorous Vargha
05/28/2026, 9:47 PMjust to clarify, extending existing router was not an option - it would bring unnecessary and useless complexity for JVM-based client. The router proposed was specifically for write path only.So it would be a separate deployment that operates as an API service for writes? I guess I'm confused on this part
not that hard to implement - we can reuse a bunch of code from router
Felix GV
05/28/2026, 9:50 PMWe write through kafka. so there are no real "PUT/DELETE", more like "submit". By "if async writes are unacceptable, then you can build sync writes", do you mean writing to Servers directly?Well in order to make it truly sync the server needs to get involved, yes. There are many different design variants, but essentially, it boils down to waiting on an ack from 1, some or all server replicas before returning the write API call as successful.
Koorous Vargha
05/28/2026, 9:51 PMSergey Makagonov
05/28/2026, 9:51 PMKoorous Vargha
05/28/2026, 9:53 PMSergey Makagonov
05/28/2026, 9:54 PMbut essentially, it boils down to waiting on an ack from 1, some or all server replicas before returning the write API call as successful.turning it into Cassandra essentially 😄
Felix GV
05/28/2026, 9:55 PMSushant Mane
05/28/2026, 10:12 PMSergey Makagonov
05/29/2026, 2:45 PMFelix GV
05/29/2026, 3:20 PM> but essentially, it boils down to waiting on an ack from 1, some or all server replicas before returning the write API call as successful.
>
turning it into Cassandra essentially 😄Bah… that could be one of the options, though not the one I was envisioning… that being said, in the words of the great philosopher zwu: given enough code changes, any system can become any other system. The concept of tunable ack quantity is very widespread in dist sys. Kafka producers have the same knob while being a leader-follower system, and Cassandra as well while being a quorum consistency based system. In the case of Venice, since the write path is heavily reliant on Kafka, it would still remain mostly like a leader-follower system, though that depends what part of the architecture are you zooming in on (within a region, the single Kafka there acts as leader, and all Venice servers are replicas applying writes in the same order; but in a multi-region system, there are independent Kafkas in each region, and independent Venice leader servers in each region as well, and those can consume writes in different orders, which starts to become a little more similar to Cassandra’s eventual consistency model).
Zac Policzer
05/29/2026, 4:11 PMgiven enough code changes, any system can become any other systemAh, the old "YOLOship of Theseus"