Redundant and fault tolerant infrastructure for online dating application in Docker for high availability
Dating applications usually have high-spikes in traffic during various times of day and night all over the globe. So, the main goal is development of a reliable and stable back-end for such application that will make the infrastructure automatically scalable and ensure in its high availability.
Implementation of auto-scaling in this task is the easiest part, as AWS gives everything that’s needed to configure the scaling policies and rules. The tricky thing is to protect your solution from various kinds of attacks, hackers and intrusion attempts. That’s done with leaving a single end-point of the whole infrastructure and covering it with firewall, traffic filtering and IP substitution.
We faced one issue which we solved with using AWS Elastic Load Balancer features. Problem: if the single end-point, where the firewall, proxy and traffic filter is installed, goes down or gets stuck – the whole infrastructure becomes unavailable and we lose it’s high availability. Solution: We put this end-point instance under external ELB with the persistent value ‘1’, so when any kind of issue occurs with the working instance – ELB immediately spins up new one and forwards the traffic to it. If you are interested in theme of high volume traffic control and load balancing you can refer to our deep article which describes different kinds of Load Balancers.
There can’t be 100%-confidence that your back-end is protected from all kinds of malware and hacks. We like to say: “The most protected server is the one, that’s turned OFF and lies underground covered with six-foot-four layer of concrete”. So if you want to be ready – you need to have a backup plan, which in the borders of this project was undertaken like it’s described below.
Usage of Docker containers system allows to spin up the needed technology stack on new server simply. All that’s necessary for that – installed Docker service on the server. So in case of original infrastructure failure – we can easily and quickly switch to brand new one! We’ve developed automation scripts that interact with the API of the chosen servers/clouds provider, spin up needed server units and install Docker service on them. After that we upload Docker images to the servers, switch DNS and voilà – we’re live again!