Ahh, the classic question our fore fathers have been asking for millenia. Should we go the developer and pocket book friendly route with Digital Ocean or take the leap and make friends with Goliath aka AWS?
This was a silly question for me when I first started developing. Digital Ocean was cheaper, looked simpler overall, and provided the same general meat and potatoes AWS did at a cheaper price. I couldn’t understand why anybody would spend the extra dollar on their WordPress blog outside of being too large to fit inside Digital Ocean’s infrastructure.
That was up until I started monitoring the health of my droplets. My own personal infrastructure has started to grow with an Apache Airflow instance I use to queue up some Python automations. I also have an instance of Jenkins to automate deployment and make it more replicable across machines. Finally, there’s this blog!
Once I started to monitor the health of these droplets with Digital Ocean’s amazing slack integrations I started to notice that I was running out of memory during peaks in my use of Apache Airflow and peaks in traffic to this blog. That lead me to start researching solutions to avoid affecting the blogs readership because of performance.
Vertical and Horizontal Scaling
I spiraled down a rabit hole of vertically and horizontally scaling my servers. I was looking for something that could be cheap when my traffic was low and automatically increase when traffic spiked. To my surprise, this doesn’t seem to be offered by Digital Ocean.
Digital Ocean lets you easily vertically and horizontally scale manually. You can go into your droplet and increase memory with just a few clicks. You can also throw an application load balancer in front of your application and distribute your server’s load across multiple droplets. The issue arrises when you want this done automatically and don’t want to consistently pay for 5 separate droplets.
AWS Takes the Lead
Here’s where AWS seems to gain the lead. From my brief research AWS seems to abstract scaling so developers can develop. They take care of all the knitty gritty so that we can do what we’re best at and develop applications.
For me to achieve the same thing with Digital Ocean’s infrastructure I’d need to familiarize myself with their api and run scripts that update my infrastructure programatically. While the amount of documentation out there seems pretty thorough and programmatically horizontally scaling your infra seems fairly common I just don’t want to deal with the hassle.
So do I regret hosting most of my services with Digital Ocean? Absolutely not! They’re a great company to develop your proof of concepts with. They’re cheap and simple which makes spinning up a new droplet a breeze. AWS is super complex, fugly, but it scales. So if you have a project that’s gaining traction and don’t want to waste time with infra I’d go with AWS.
I’ll be looking to move this blog, a database, and a node server over to Goliath fairly soon. I’ll be back with updates. Happy coding everybody!