Services send Leviathan reports via the API (https://git-aws.internal.justin.tv/modtools/leviathan/blob/master/docs/api.md). Leviathan then fills out the missing data (services only send user ids) using the users service (to get user id => username, display name and status (user, global_mod, admin or staff)) and the partnerships service (to know if partnered or not). Then leviathan saves the report in its DB (which is a MYSQL RDS instance). Suspensions work the same way just additionally talk to the channels service to get the current set game on suspension. All service (users, partnerships and channels) data is cached in a redis instance for 15 min to lower the response time and also to reduce load on the services.

Chatlogs are saved in a different RDS instance (which is also a MYSQL RDS). 

Files are hosted on S3 and are proxied via NGINX.

All services are hosted on us-west-2

Emails are send and received via SES. The receiving works by using a Lambda which notifies Leviathan about new emails.

Rails logs are kept for 7 days and are auto rotated by logrotate.

The slack reminder runs on leviathan-1 and can be started via the two .sh scripts. One for the background job (which polls the DB for new reminders) and one for the php webserver which hosts the file for the webhooks.

### Other services Leviathan uses:
* https://git-aws.internal.justin.tv/marketing/altlookup for Alt account lookup
* panels service to clear all panels of a user
* tmi to clear chat rules of a user
