Heroku vs Netlify: What are the differences?
What is Heroku? Build, deliver, monitor and scale web apps and APIs with a trail blazing developer experience. Heroku is a cloud application platform – a new way of building and deploying web apps. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling.
What is Netlify? Build, deploy and host your static site or app with a drag and drop interface and automatic delpoys from GitHub or Bitbucket. Netlify is smart enough to process your site and make sure all assets gets optimized and served with perfect caching-headers from a cookie-less domain. We make sure your HTML is served straight from our CDN edge nodes without any round-trip to our backend servers and are the only ones to give you instant cache invalidation when you push a new deploy. Netlify is also the only static hosting service with integrated continuous deployment.
Heroku can be classified as a tool in the "Platform as a Service" category, while Netlify is grouped under "Static Web Hosting".
Some of the features offered by Heroku are:
- Agile deployment for Ruby, Node.js, Clojure, Java, Python, Go and Scala.
- Run and scale any type of app.
- Total visibility across your entire app.
On the other hand, Netlify provides the following key features:
- Global Network
- Global Network
- Instant Cache Validation
"Easy deployment" is the primary reason why developers consider Heroku over the competitors, whereas "Fastest static hosting and continuous deployments" was stated as the key factor in picking Netlify.
StackShare, Heroku, and Product Hunt are some of the popular companies that use Heroku, whereas Netlify is used by Startae, Ratio, and Flat. Heroku has a broader approval, being mentioned in 1504 company stacks & 964 developers stacks; compared to Netlify, which is listed in 85 company stacks and 104 developer stacks.
What is Heroku?
What is Netlify?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to add, upvote and see more prosMake informed product decisions
Sign up to get full access to all the companiesMake informed product decisions
Sign up to get full access to all the tool integrationsMake informed product decisions
When creating the web infrastructure for our start-up, I wanted to host our app on a PaaS to get started quickly.
A very popular one for Rails is Heroku, which I love for free hobby side projects, but never used professionally. On the other hand, I was very familiar with the AWS ecosystem, and since I was going to use some of its services anyways, I thought: why not go all in on it?
It turns out that Amazon offers a PaaS called AWS Elastic Beanstalk, which is basically like an “AWS Heroku”. It even comes with a similar command-line utility, called "eb”. While edge-case Rails problems are not as well documented as with Heroku, it was very satisfying to manage all our cloud services under the same AWS account. There are auto-scaling options for web and worker instances, which is a nice touch. Overall, it was reliable, and I would recommend it to anyone planning on heavily using AWS.
StackShare Feed is built entirely with React, Glamorous, and Apollo. One of our objectives with the public launch of the Feed was to enable a Server-side rendered (SSR) experience for our organic search traffic. When you visit the StackShare Feed, and you aren't logged in, you are delivered the Trending feed experience. We use an in-house Node.js rendering microservice to generate this HTML. This microservice needs to run and serve requests independent of our Rails web app. Up until recently, we had a mono-repo with our Rails and React code living happily together and all served from the same web process. In order to deploy our SSR app into a Heroku environment, we needed to split out our front-end application into a separate repo in GitHub. The driving factor in this decision was mostly due to limitations imposed by Heroku specifically with how processes can't communicate with each other. A new SSR app was created in Heroku and linked directly to the frontend repo so it stays in-sync with changes.
Related to this, we need a way to "deploy" our frontend changes to various server environments without building & releasing the entire Ruby application. We built a hybrid Amazon S3 Amazon CloudFront solution to host our Webpack bundles. A new CircleCI script builds the bundles and uploads them to S3. The final step in our rollout is to update some keys in Redis so our Rails app knows which bundles to serve. The result of these efforts were significant. Our frontend team now moves independently of our backend team, our build & release process takes only a few minutes, we are now using an edge CDN to serve JS assets, and we have pre-rendered React pages!
#StackDecisionsLaunch #SSR #Microservices #FrontEndRepoSplit
We initially started out with Heroku as our PaaS provider due to a desire to use it by our original developer for our Ruby on Rails application/website at the time. We were finding response times slow, it was painfully slow, sometimes taking 10 seconds to start loading the main page. Moving up to the next "compute" level was going to be very expensive.
We moved our site over to AWS Elastic Beanstalk , not only did response times on the site practically become instant, our cloud bill for the application was cut in half.
In database world we are currently using Amazon RDS for PostgreSQL also, we have both MariaDB and Microsoft SQL Server both hosted on Amazon RDS. The plan is to migrate to AWS Aurora Serverless for all 3 of those database systems.
Additional services we use for our public applications: AWS Lambda, Python, Redis, Memcached, AWS Elastic Load Balancing (ELB), Amazon Elasticsearch Service, Amazon ElastiCache
Heroku vs OpenShift. I've never decided which one is better. Heroku is easier to configure. Openshift provide a better machine for free. Heroku has many addons for free. I've chosen Heroku because of easy initial set-up. I had deployment based on git push. I also tried direct deployment of jar file. Currently Heroku runs my Docker image. Heroku has very good documentation like for beginners. So if you want to start with something, let's follow Heroku. On the other hand OpenShift seems like a PRO tool supported by @RedHat.
When my SSL cert MaxCDN was expiring on my personal site I decided it was a good time to revamp some things. Since GitHub Services is depreciated I can no longer have #CDN cache purges automated among other things. So I decided on the following: GitHub Pages, Netlify, Let's Encrypt and Jekyll. Staying the same was Bootstrap, jQuery, Grunt & #GoogleFonts.
What's awesome about GitHub Pages is that it has a #CDN (Fastly) built-in and anytime you push to master, it purges the cache instantaneously without you have to do anything special. Netlify is magic, I highly recommend it to anyone using #StaticSiteGenerators.
For the most part, everything went smoothly. The only things I had issues with were the following:
- If you want to point
wwwto GitHub Pages you need to rename the repo to
- If you edit something in the
_config.ymlyou need to restart
bundle exec jekyll sor changes won't show
- I had to disable the Grunt
htmlminmodule. I replaced it with Jekyll layout that compresses HTML for #webperf
Last but certainly not least, I made a donation to Let's Encrypt. If you use their service consider doing it too: https://letsencrypt.org/donate/
I found Heroku to be a great option to get ExpressJS up and running with very little hustle. The free tier is great, but I'd recommend to set up a cronjob to visit your site every few minutes so that the server stays awake. Netlify was the option to host the front-end because doing the server side rendering on #Heroku would have taken a little more time than I'd like to. For the moment pre-rendering the app with prerender-spa-plugin is enough to help with #seo. Puppeteer was my choice over other options because it made it easier to scrape websites made on ASP.NET which is what I needed in this case. And Vue.js is my top choice at the moment because it's really beginner friendly and it has a lot of the features I like about Angular 2 and React. vuex is a must in most of the app I build.
I use Gunicorn because does one thing - it’s a WSGI HTTP server - and it does it well. Deploy it quickly and easily, and let the rest of your stack do what the rest of your stack does well, wherever that may be.
uWSGI “aims at developing a full stack for building hosting services” - if that’s a thing you need then ok, but I like the principle of doing one thing well, and I deploy to platforms like Heroku and AWS Elastic Beanstalk where the rest of the “hosting service” is provided and managed for me.
I use Netlify for all of my projects for the ease of setup and the huge Developer Experience they offer. From Netlify CLI, to the newly announced Netlify Analytics, we have no issues with Netlify and scaling is possible to a certain degree. We connect Netlify with our GitHub Repos and let all branches build to get a Preview. Also we connected our Domain with ease to it and were able to have the page be shown on our domain.
In my last side project, I built a web posting application that has similar features as Facebook and hosted on Heroku. The user can register an account, create posts, upload images and share with others. I took an advantage of graphql-subscriptions to handle realtime notifications in the comments section. Currently, I'm at the last stage of styling and building layouts.
For the #Backend I used graphql-yoga, Prisma, GraphQL with PostgreSQL database. For the #FrontEnd: React, styled-components with Apollo. The app is hosted on Heroku.
To start off, check this out: https://perfwars.com/netlify.com/vs/godaddy.com/
If you are new to Netlify, it will take you less than 5 minutes to get your site up and running, 3 minutes if you are fast. To get started simply go here: https://app.netlify.com/
Choose one of the following options to sign up: GitHub, BitBucket, GitLab, or you can use your email address.
If you sign up with your email address, it will ask you to enter a 4 digit verification code that they sent to your email address.
Once signed in, you will be shown a quick intro:
- SIMPLY PUSH TO DEPLOY
- FREE ONE-CLICK HTTPS
- NEVER HAVE TO LEAVE TERMINAL
These are three huge benefits of Netlify over most other hosting platforms.
OK, now that you have signed up and gone through the highlights, you need just select new site. From there you can either link a Git repository or just drag and drop your site folder into the browser window. Your site will be uploaded and available for browsing within a minute or so.
Once your site is on Netlify, you can setup a custom domain by selected the settings tab, if you are not already there, then click edit next to domain. Simply put your domain in, save and then follow instructions on Netlify's documentation page on how to set up your DNS: https://www.netlify.com/docs/custom-domains
So easy! You are done setting up your site! Now for making changes and adding features. You no longer have to do crazy manual set ups to get SSL installed on your site, with Netlify even my grandma could do it! You can still use your own certificate if you prefer, but if you wanted it even easier, all you have to do is select "Lets Encrypt Certificate" from the SSL tab on your site in Netlify.
When you select "Lets Encrypt Certificate", Netlify shows a dialog entitled "Automatic TLS Setup" and asks you to ensure that your DNS is set up properly before you provision the certificate. This is important, and it will be fine so long as you set up your DNS properly according to their custom domains documentation that I shared earlier. All you need to do here is click save. The SSL will start to work shortly and all http URLs will automatically be redirected to https! And the best part is, it is free!
Recap of the setup process: 1. Sign up and verify your account 2. Link repository or drag and drop site folder 3. Change domain and setup DNS 4. True One-click SSL 5. Upgrade your site for more awesome features (Optional)
That's it! You are done! Takes less than 5 minutes!
Before I came across Netlify, I would often use drag and drop web builders because the complication of managing servers and setting up configurations to handle forms and SSL were too complicated. With Netlify however, all you need to do for form handling is to put in a little call out to Netlify to say, hey, this is a form I want you to handle. It is so easy! You already know how easy it is to set up SSL now too. I now have no fears in launching a site, setting up form handling and SSL.
If you are interested in setting up the form handling, you can go here: https://www.netlify.com/docs/form-handling
Netlify also has amazing and simple documentation. I have never had a problem figuring something out. If ever I have had a question, I have found a resolution with in 1-2 minutes in their documentation. They have thought of everything!
My favorite tools in Netlify are the notifications! You can set up your form handling to automatically notify you via email or even Slack. I love Slack too by the way, and being able to get updates about my deployments or form handling via Slack is a huge plus.
The notification integrations are my favorite, however, I still cannot get over how easy it is to set up SSL and form handling. They are by far the most useful features for me. Another very useful feature is being able to see a history of your builds and having the ability to restore to a previous build or download it. I have been unable to find any of these features in their simplicity anywhere else. Netlify is literally the easiest to use, most reliable and overall best hosting platform out there.
One more mention, the founder of Netlify is involved in the JAMStack Revolution. Here is a quick blurb from their site (Looks Awesome!):
I use Heroku, for almost any project of mine. Their free plan is awesome for testing, solo developers or your startup and its almost impossible to not cover you somehow. Adding an add on is a simple command away and I find it easy to use it both on my Windows PC or my Linux laptop. Their documentation, covers almost everything. In particular I have used Heroku for Spring, Django and AngularJS. I even find it easier to run my project on my local dev with foreman start, than ./manage.py runserver (for my django projects). There is no place like Heroku for the developer!
Can't beat the simplicity of deploying and managing apps, the pricing is a bit high, but you are paying for those streamlined tools. However, after several experiences of tracing issues back to Heroku's stack, not having visibility into what they are doing has prompted moving two applications off of it and on to other more transparent cloud solutions. Heroku is amazing for what it is, hosting for early stage products.
I've been using Heroku for 3 years now, they have grown super fast and each time they're improving their services. What I really like the most is how easily you can show to your client the advances on you project, it would take you maximum 15 minutes to configure two environments (Staging/Production). It is simply essential and fantastic!
I liked how easy this was to use and that I could create some proof of concepts without have to pay. The downside for NodeJS is remote debugging. Pretty much have to depend on logging where Azure allows remote debugging with Node Inspector.
Using Heroku takes away all the pains associated with managing compute and backing services. It may require a little extra optimisation and tweaks, but these constraints often make your app better anyway.
Not having to deal with servers is a huge win for us. There are certainly trade-offs (having to wait if the platform is down as opposed to being able to fix the issue), but we’re happy being on Heroku right now. Being able to focus 100% of our technical efforts on application code is immensely helpful.
Two dynos seems to be the sweet spot for our application. We can handle traffic spikes and get pretty consistent performance otherwise.
We have a total of four apps on Heroku: Legacy Leanstack, StackShare Prod, StackShare Staging, StackShare Dev. Protip: if you’re setting up multiple environments based on your prod environment, just run heroku fork app name. Super useful, it copies over your db, add-ons, and settings.
We have a develop branch on GitHub that we push to dev to test out, then if everything is cool we push it to staging and eventually prod. Hotfixes of course go straight to staging and then prod usually.
Heroku runs the web and background worker processes. Auto-deployments are triggered via GitHub commits and wait for the Buildkite test build to pass. Heroku pipelines with beta release phase execution (for automatically running database migrations) allowed for easy manual testing of big new releases. Web and worker logs are sent to Papertrail.
As much as I love AWS EC, I prefer Heroku for apps like this. Heroku has grown up around Rails and Ruby, massive set of add-ons that are usually one-click setup, and I once had to perform an emergency app scale-up a that I completed in seconds from my mobile phone whilst riding the Bangkok subway. Doesn't get much easier than that.
With its complimentary SSL (on *.herokuapp.com) we can test everything. Our dev branch is built and deployed out to Heroku. Testing happens out here. not production cause $20/mo is TOO much to pay for the ability to use my own SSL purchased elsewhere.
Serves the main site through CDN. Provides super easy password protection and third-level domain for staging. Uses web hooks from Contentful and Github to know when to trigger new build and update the site. Perfect.
Netlify makes it super-easy for various team members to deploy whenever there's a push to our Git master branch. Automatic build, deployment, and setup on CDN.
It's free and has so many features - just perfect for open-source projects like GitDocs.