Here's what I'd speculate:
- Redis: message lists for active users
- Postgres: account details
- Cassandra: all messages
Thanks.
All the irc messages end up in cassandra, via rabbitmq. We use local redis as a cache for the most recent messages. Our cassandra cluster is on EC2 (~11ms away from our other hardware, which is in LA).
I really want an IRC kernel with an API, so I can have all sorts of clients on different machines/platforms, but it seems to be impossible at the moment, without using the horrible bouncers.
For me, it's only really useful with a backlog of perhaps 7 days, the rest I would like to have permanently deleted, it would make me feel more comfortable using the service.
I'm not judging, i simply ask because a lot of people are connecting to Freenode/Freenode-like locations where he majority of the channels are already logged 24/7 by you, countless others, and bots publishing the content to the web.
Some info:
* Erlang, haproxy, rabbitmq, redis, postgres, cassandra, chef
* 10+ billion irc lines stored at the last count
* Thousands of IPv6 IRC connections - we give each user their own IPv6 address. Main site also works over ipv6.
* Thousands of IPv4 connections too
* Open source android and ios apps: https://blog.irccloud.com/mobile-apps-open-sourced/
* API: https://github.com/irccloud/irccloud-tools/wiki/API-Overview
* Details on our security, password storage, etc: https://www.irccloud.com/privacy
I've mentioned this on HN before, but we moved our hosting off Hetzner and on to Black Lotus for the ddos-protection.
We see fairly frequent ddos attacks, from a few hundred mbit to 10+ gbit. They aren't impacting service since we moved to black lotus.