ooni / collector

Next generation OONI collector
BSD 3-Clause "New" or "Revised" License
4 stars 0 forks source link

New collector implementation #1

Open hellais opened 6 years ago

hellais commented 6 years ago

As seen in recent incidents (https://github.com/TheTorProject/ooni-sysadmin/issues/183, https://github.com/TheTorProject/ooni-sysadmin/issues/216) the legacy python based backends are quite fragile and hard to deploy.

Moreover I think there is some value in improving our collector protocol.

The current collector protocol is not too hard to implement and I think there is some value in having a golang written collector replacement, that should also be easier to maintain and deploy.

Some of the issues with the current collector, stem from the fact that we have in the same service too many things (a collector is actually also a bouncer, 5 different test helpers, etc.). This means that the configuration is very fragile and in some cases needs to have valid values for irrelevant configuration options.

Designing it as a microservice that does only one thing (collect measurements) and does that well I think does not require too much effort and will pay off in the long run.

I think for the purpose of deploying an MVP the protocol should stay the same, yet have some improvements.

The requirements I would say for an MVP (and a strawman design for it) are the following:

Requirements

Notes: I think that the current design of making the collector responsible for starting tor and runinng a TLS server is sub-optimal and we should rather delegate these tasks to specific system services.

I also think it should be optimal to rely on a database for keeping track of state for the collector as part of this also record some telemetry that is useful to better understand our existing probe userbase and investigate issues easier.

gpestana commented 5 years ago

I'd love to help with this. Any idea how to jump in? :)