OpenSourceHelpCommunity / OpenSourceHelpCommunity.github.io

Open source help community website
http://opensourcehelpcommunity.herokuapp.com/
MIT License
46 stars 57 forks source link

Is it better to migrate OpenSourceHelpCommunity from `Heroku` to `DigitalOcean`? #117

Open vaibhavsingh97 opened 7 years ago

vaibhavsingh97 commented 7 years ago

Brief report for AWS, Heroku and DigitalOcean (aka DO)

AWS

Amazon AWS provides a group of cloud computing services, all provided over the internet and run together within the Amazon cloud. Most commonly used Amazon AWS offerings are for hosting an app are EC2, S3, and SES.

Service type: Amazon's EC2 instances are themselves more or less purely IaaS, but the full AWS suite offers a wide range of services to optimize and automate some tasks. They also offer PaaS through their Elastic Beanstalk product.

Benefits: Scalable, starts off free, easy to provision new servers.

Tradeoffs: Need to know basic Unix administration to be able to work with the platform successfully.

Ease of use: AWS has a steeper learning curve than something like Digital Ocean. In addition to an understanding of Linux and nginx at the VM level, you must also wade through a significant amount of AWS specific lingo and concepts. we can say medium to advance.

Performance and Value: AWS is the king here, especially if we're willing to prepay. Also, as IaaS you get the same benefit as DO in being able to host multiple services on one instance. That said, there are some costs that aren't factored into the comparison below, such as load balancing and storage.

Scalabilility: The options here are overwhelming (both a plus and minus). AWS offers a massive suite of options for pretty much any scaling scenario you could imagine, both in terms of resources and tools. We can do everything from a roll your own solution, to different levels of "Application management services" including OpsWorks and CloudFormation.

Pricing: Hard to argue with the free tier, but it does ramp up as resource requirements grow. Each service has its own pricing structure, so sometimes it can be hard to figure out how much Amazon EC2 and a bunch of other services will really cost each month until the invoices start to arrive.

Why People use AWS?

Heroku

Heroku is a “full service” Platform-as-a-Service offering that automates all of the requirements and infrastructure required to run and host a web application. In many ways, this platform is built for teams who do not wish or need to manage their own infrastructure. Heroku stands out because of how easy it is to get our application up and running. The platform provides an intuitive and easy to use web interface, but it also provides a developer friendly command line interface. There are no bandwidth limitations with Heroku, so even if our application gets mentioned on Hacker News or another major news source, we can quickly scale and know that the platform will not shut you down or charge overage fees. Heroku, simply stated, takes the hassle out of development.

Service type: Pure PaaS.

Benefits: A new server instance can be created in as little as 10 seconds using the Heroku command line interface. Deploys are automated using Git Push. Add-ons make it easy to provision additional resources and infrastructure, such as Redis, Solr, or log analysis. Free when using a single web thread. No bandwidth limits!

Tradeoffs: Must deploy with Git. Scaling is not automated.

Ease of use: Dead simple. We can be up and running with an app continuously deployed from Github, for free, within minutes. Beautiful interface pared down to the bare essentials.

Performance and Value: Pretty good compared to the other PaaS solutions, but still far off from IaaS.

Scalabilility: It really does not get easier than this. Adjust a slider (or have it scaled automatically) and Heroku will spin-up/down VMs behind the scene scene and handle all of the load balancing for you.

Pricing: Starts off free, but can grow quickly with the number of threads and Add-ons required to run the application.

Why People use Heroku?

DigitalOcean

Digital Ocean is a provider of Virtual Private Servers (VPS) that all run over the internet. Their claim to fame is the speed of their images (they were one of the first, if not the first, providers to offer SSD images) and their assertion that it only takes 55 seconds to setup an SSD cloud server. Digital Ocean is a great choice if we need to retain a high level of control over your Virtual Servers. Digital Ocean offers very affordable prices, but it does not have a free starter account. In order to use Digital Ocean, our team should have a DevOps engineer who understands Environment Management, Unix Systems, and is very comfortable on the command line. The platform does impose monthly bandwidth limits however, so its possible you will have to upgrade your system to a high tier just to deal with sporadic traffic spikes.

Service type: Pure IaaS. They give you a bare Linux installation on some virtual hardware. You are otherwise totally on your own.

Benefits: Easy to deploy a prebuilt image for various development stacks. Offers a lot more flexibility and freedom to tweak the environment to your needs. Great for migrating on-premise systems into the cloud. All SSDs means the images run very quickly.

As mentioned though, beyond this point you are totally on your own. If we are setting up a single instance on a single VM this really isn't so bad. We'll need to get comfortable with the command line, and do some googling to figure out nginx configs. Luckily, DO makes it easy to completely reset your instance if you screw things up.

Tradeoffs: Requires sysadmin and DevOps experience. Bandwidth limits.

Ease of use: The actual process of creating an account and booting up a "Droplet", as their instances are called, is the simplest of any of the options compared here.

Performance and Value: This is where DO and its ilk really shine. The only option I found to get more performance for your dollar is a 3 year prepay for AWS Micro instances. Additionally, if your app is small enough you can host your database, or even other apps from the same instance.

Scalabilility: They do offer an API for managing and scaling their VMs, but this is really only on the table if you are (or have access to) an experienced sysadmin.

Pricing: Very affordable, but no free tier. Starts at $5/month and goes up from there.

Why People use DigitalOcean?

Cc: @tapasweni-pathak @anubhakushwaha @nikhita

nikhita commented 7 years ago

Was there a discussion on Slack about this? There were a lot of messages when I opened it and I'm guessing I probably missed something...

vaibhavsingh97 commented 7 years ago

@nikhita As Digitalocean offered us to sponsor as an hosting service but @tapasweni-pathak want's to stick with heroku. This issue is created so that we can discuss what would benefit us for a long term. I created a brief report between Heroku, DigitalOcean and AWS discussing about benefits and type of service they all offer so that we can make decision better. Hope you understood! 😃