<div dir="ltr"><div>Hi Karsten,<br></div><div><br>A lot of people I respect seem to use Dropwizard for this sort of thing. <br><br><a href="https://dropwizard.github.io/dropwizard/">https://dropwizard.github.io/dropwizard/</a><br>

<br></div>As for deployment on Debian (dunno if it's in the standard Debian universe)<br><div><div><br><a href="https://groups.google.com/d/msg/dropwizard-user/gv4TDQbcHBc/LGJz0egMNWQJ">https://groups.google.com/d/msg/dropwizard-user/gv4TDQbcHBc/LGJz0egMNWQJ</a><br>

<br></div><div>Hope that helps<br>Best<br><br></div><div>Noah<br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 20, 2014 at 12:54 PM, Karsten Loesing <span dir="ltr"><<a href="mailto:karsten@torproject.org" target="_blank">karsten@torproject.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello devs,<br>
<br>
I'm seeking advice from people with experience in writing server-side<br>
Java applications.<br>
<br>
Let me give you some background about this request: for the past five<br>
years, I have been developing server-side Java applications which all<br>
process large amounts of Tor directory data and provide their output via<br>
a web interface.<br>
<br>
Examples:<br>
<br>
 - The metrics data processor (metrics-db) fetches Tor descriptors from<br>
the Tor directory authorities, the bridge authority, etc., performs some<br>
sanity-checks, and provides descriptors by type as tarballs.  We're<br>
talking about roughly 7 GiB new bzip2-compressed data per month.<br>
<br>
 - The metrics website (metrics-web) uses the output from the metrics<br>
data processor, stuffs everything into a database, computes aggregates,<br>
and presents results in graphs and .csv files.<br>
<br>
 - The Onionoo service processes the same data from the metrics data<br>
processor, but provides statistics per Tor relay, not for the Tor<br>
network as a whole.  The processing is done every two hours and may take<br>
30 minutes to 1.5 hours, depending on how overloaded the server is.<br>
<br>
 - The ExoneraTor service, again, uses the same data and puts it in a<br>
database to answer whether a certain IP address has been a Tor relay at<br>
some point in the past.<br>
<br>
That's what is done.  And here's how it's done under the surface:<br>
<br>
 - There's one or more cronjobs, each of which starts an ant task to<br>
process data.  Some of these tasks import data into the database, others<br>
store results in the file system.<br>
<br>
 - Each application uses a web application deployed in Tomcat to provide<br>
results to web users.  Most things are written in servlets, some use JSPs.<br>
<br>
My problem is that this approach is rather fragile and difficult to<br>
setup for new volunteers.  I'm aware of that, and I'd like to improve it.<br>
<br>
My question is: what Java frameworks should I be looking at for the<br>
applications described above?  Bonus points if something is in Debian<br>
stable.<br>
<br>
Note that "switch to $some_other_programming_language" is not a very<br>
useful answer to me, at least not for the larger applications.  There's<br>
just too much existing code and not enough developer time to port it.<br>
<br>
Thanks in advance!<br>
<br>
All the best,<br>
Karsten<br>
_______________________________________________<br>
tor-dev mailing list<br>
<a href="mailto:tor-dev@lists.torproject.org">tor-dev@lists.torproject.org</a><br>
<a href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev" target="_blank">https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev</a><br>
</blockquote></div><br></div>