High-availability self-healing infrastructure


"High availability is a characteristic of a system, which aims to ensure an agreed level of operational performance, usually uptime, for a higher than normal period."

Wikipedia

The Old Way

When a server goes down, your application goes down.

The application and its database run on a single snowflake server. That server was deployed and configured by hand. If something happens to that server - and in the real world, servers do go down - the application goes dark. Then it's all hands on deck while your team scrambles to manually restore service. Users can't access your application, while countless hours of your team's time are wasted just to get back to normal.

The Modern Way

When a server goes down, your application stays up.

Your application runs on multiple webservers in parallel. The webservers sit behind an infrastructure-quality load balancer. If a server goes down, the load balancer seamlessly redirects your users to another server. The customer never loses access to your site. Soon the system detects the failed server and spins up a new server to replace it - no human intervention required.

Likewise the database has automatic failover. If the DB server has a problem, it automatically switches to the failover server. Your users don't even know there was a problem.

For most applications we use Convox, a private PaaS based on Docker and Amazon EC2 Container Service. Convox provides production-ready high availability infrastructure out of the box. HA features include: