Building and deploying Docker – the hottest topic of every devops forum and IT blogs. We kinda had the impression before, that we won’t miss our chances with it either.
Why Docker?
If you are in the web hosting business, containers and Docker technology cannot be such big news for you. Docker triumphed over virtualization.
No wonder, as it has some great tricks up on its sleeves:
- It resolves the conflict between development and operations. As the dev team has the full control over the execution environment, infrastructures can be changed easily.
- Even the maintenance of environments is much easier this way. Spared time, less errors, stress-proof testing, reduced risk, increased reliability.
- And basically, it provides instant application portability.
Introducing Docker to our environment helped us a lot in the last few months.
The BitNinja clan grew bigger and bigger, and we got into a place, where our former solutions weren’t enough to serve the needs. We realized we can’t get through this with tiny steps, we need to jump a giant one.
Introducing Docker to BitNinja
When we launched BitNinja, we couldn’t even imagine that it would be such a successful project.
Some basic settings were more than enough back then, when we started with only 10 servers. The mysql server was the first bump in the road of scaling.
We reached the 500.000 IPs so fast that the mysql server couldn’t handle the obstacles very well after all. That’s why we started using MongoDB last January. We were thinking about the future even that point, as the demand for BitNinja showed a rapid increase that time.
The next milestone was at 500 active BitNinja protected servers, when the instant infrastructure seemed to collapse. We started to extend our infrastructure vertically, the 2GB apache server grew to a 21GB, 16 CPU core giant.
That was about 2 months ago, and we already saw that hitting the 850 servers, growth would be way too intensive and vertical scaling won’t work in the long run. It helped a lot with memory consumption but didn’t solve the CPU problems.
By releasing a new BitNinja client, we separated our Dashboard and the API server and started to prepare the system for horizontal scaling.
By that time we had a fully prepared plan for that, we experienced the ins and outs of Docker in the development environment.
We had been already using Docker technology for 6 months by that time. Which came very handy, as it made a scaleable, microservice-based architectural change happen, with minor configuration.
Unfortunately, the changing process wasn’t smooth at all, as we’ve been just getting familiar with Rancher and Docker in production environment back then, but we became fans of it on the march.
The best part of the journey
The moment, when we deployed the new version of our API server with one click and we knew that we could revoke anytime if anything goes wrong. (And once we really need to live with that option.)
Now our system is super-scaleable and we are ready to welcome even 10.000 servers among the ninjas. We created a separate testing, scaling and production environment and the continuous deployment has almost been finished.
What does this mean for you?
- Less bugs
- Don’t need to worry about deploying large number of Bitninja servers
- Faster release cycle, which means even quicker bugfix versions
Do you have Docker too? Share your experience on Facebook!