[This is a slightly modified version of an email I sent to the private list
two days ago. Seanmonstar rightly pointed out that there was no good reason
to keep it private.]
Identity wants a more highly available DB option than our current single
write master MySQL setup. Has to work in AWS, has to fail gracefully during
region outages.
Do any experts on this list have time to help in the next few weeks?
We'll need help assessing our requirements and choosing a few potential
options. After that, Identity devs plan to prototype the best 2-3 options,
bang on them a bit, and choose a winner. (Help's welcome here as well, but
I don't really expect it.) Let me know if you're interested in offering
technical guidance, and we can get discussion started in a separate thread
and some etherpads. The more, the merrier.
Some salient facts:
* we're moving to AWS + want to build something that can handle region
failures gracefully
* we store a very small amount of data per user (order of KB)
* we have a very simple schema[1], would be easy to denormalize
* we can live with eventual consistency (it's just staging new users,
logging existing users into sites, adding/removing emails)
* we have 50k logins/day currently, aiming for 2.5 million/day (and
hoping for 20x that ;-)
* not sure on the mix of reads/writes
* as a whole, Persona is CPU-bound, not DB-bound
* diagrams of current (non-AWS, soon to change) network architecture:
[2][3]
[1]
https://github.com/mozilla/browserid/blob/dev/lib/db/mysql.js#L10-L30
[2]
http://lloyd.io/persona-architectural-changes
[3]
https://intranet.mozilla.org/images/2/2c/Browserid_architecture.png
(from
https://intranet.mozilla.org/Services/Ops/BrowserID#Architecture)
Cheers
Jared