<p>Hi,</p>
<p>I'm not a varnish dev but I've been working with varnish and DBs for a long time.</p>
<p>My knee jerk is that you'll end up with more application logic in vcl than vcl is suitable for. Vcl can't loop or touch response bodies (without vmods). It'd be kind of neat to skip middleware and plug varnish straight into the db, but I wouldn't guess it to be worth the effort.</p>

<p>I'd instead write a mini web server using uwsgi or CherryPy to act as middleware. These tools have great memory footprints and performance. </p>
<p>- Leif</p>
<div class="gmail_quote">On 2013-07-30 6:30 AM, "Marcin Krol" <<a href="mailto:mrkafk@gmail.com">mrkafk@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<br>
Hello,<br>
<br>
This is a peculiar topic that I think goes beyond typical use of<br>
varnish so I post it here.<br>
<br>
At my company we have a need peculiar sort of infrastructural subsystem:<br>
<br>
- - HTTP requests are done to find if smth is cached<br>
- - RDBMS (mysql, oracle) backends<br>
- - Other subsystems as backends<br>
<br>
Clients use unified protocol based on (simple) http requests to get<br>
their data. (it's for this reason that we do not use caches built into<br>
rdbms directly, as well as we do not want to do tight coupling of a<br>
particular client to a particular rdbms or subsystem)<br>
<br>
<br>
Either we write the whole thing ourselves or we use smth else like<br>
varnish.<br>
<br>
<br>
I like the thought of using varnish, although I'm not sure if it this<br>
is not shoehorning it into such role. However, when it comes to<br>
caching, load balancing, failover and cached HTTP results serving it's<br>
ideal in such role.<br>
<br>
The only problem is backend. Essentially, what we need is e.g. for<br>
mysql backend:<br>
<br>
on cache miss:<br>
<br>
- - connect to mysql<br>
<br>
- - run the query we received in GET/POST/whatever<br>
<br>
- - JSONIFy result (query results are not big in our application,<br>
limited size of the result is a tolerable limitation for us)<br>
<br>
- - cache result, return it<br>
<br>
<br>
on cache hit:<br>
<br>
- - retrieve from cache, return it<br>
<br>
<br>
(and so on for other backends)<br>
<br>
<br>
Is this feasible? Is it even sane? Should I use smth else maybe?<br>
<br>
Essentially, what we need are pluggable, modular backends. (obviously<br>
we can handle writing the part that transforms particular backend<br>
response into HTTP response, the snag is how to plug this correctly<br>
into backend usable by varnish)<br>
<br>
I was thinking about using VMODs but none of the modules available<br>
seem to meddle with backends themselves somehow.<br>
<br>
<br>
Thanks!<br>
MK<br>
<br>
-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v2.0.20 (MingW32)<br>
Comment: Using GnuPG with Thunderbird - <a href="http://www.enigmail.net/" target="_blank">http://www.enigmail.net/</a><br>
<br>
iQEcBAEBAgAGBQJR95xLAAoJEFMgHzhQQ7hOXOYH/2QZgry4O55fRvvEE0I9tPnw<br>
xLCXV/snfnH2jawW01sFDZ87JV3S9s10bqSoqTs21vMkd7M+hHsp3I/wKTg2dwqR<br>
kQ0M9p2aPiLyijI7v6FCcpaorL10wZ0/12i6A+RnsyPLN2FDeDpCCDeB0oVNauqc<br>
K/yE2lfsAvVu+jxlmzygePlV9ZZ+B455G8GFIIvN+S10QFly1rAOLbCg7Mi1KRq9<br>
4BYPsISZnYDIbAUKjQWLQDmfhoXfbgIZQJMLzIJFiQC2+G1WFIVp94Z5JRsVQlHm<br>
PcIx3Gt0zq5Qd198+97qTDZLPO1irNSpYpWLidd9dnA+2rI85HZU+9B0Ktuwc1g=<br>
=/D+o<br>
-----END PGP SIGNATURE-----<br>
<br>
_______________________________________________<br>
varnish-dev mailing list<br>
<a href="mailto:varnish-dev@varnish-cache.org">varnish-dev@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev" target="_blank">https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev</a><br>
</blockquote></div>