This is what I came to conslusion that a system without any dependencies can scale easiser.<p>For my email forwarding app (<a href="https://hanami.run" rel="nofollow">https://hanami.run</a>), our web tier can down, and even the database can down but the mail servers to handle incoming emails and forward out can tolerate database outage.<p>For my particular use case, the mail servers boot then load entire state that they need into its cache, then write this to a local LevelDB. Incoming email is persisted into this LevelDB too. Then another thread will flush mail to Postgres if needed.<p>By this simple design, we can even survive data center outage because the mail servers has all the state it need. Granted that during the outage, no one can signed up(web tier and control panel are down), but at least existing user won't be affected