Heroku Alternatives for Python-based Applications

Last updated November 8th, 2022

Heroku changed how developers build and deploy software, making building, deploying, and scaling applications easier and faster. They set various standards and methodologies -- namely, the Twelve-Factor App -- for how cloud services should be managed, which are still highly relevant today for microservices-based and cloud-native applications. Unfortunately, starting November 28, 2022, Heroku will discontinue its free tier. This means you'll no longer be able to leverage free dynos, Postgres databases, and Redis instances.

For more on Heroku's discontinuation of its free product tiers, check out Heroku's Next Chapter and Deprecation of Heroku Free Resources.

In this article, you'll learn what the best Heroku alternatives (and their pros and cons) are.

Contents

What is Heroku?

Heroku, which was founded in 2007, is a cloud Platform as a Service (PaaS) that provides hosting for web applications. They offer abstracted environments where you don't have to manage the underlying infrastructure, making it easy to manage, deploy, and scale web applications. With just a few clicks you can have your app up and running, ready to receive traffic.

Before Heroku hit the scene, the process of running a web application was quite challenging, mostly reserved for seasoned SysOps professionals rather than developers. Heroku provides an opinionated layer, abstracting away much of the configuration required for a web server. The majority of web applications could (and still can) leverage such an environment, so smaller companies and teams can focus on application development rather than configuring web servers, installing Linux packages, setting up load balancers, and everything else that goes along with infrastructure management on a traditional server.

Heroku's Pros and Cons

Despite Heroku's popularity, it has received quite a lot of criticism throughout the years.

If you're already familiar with Heroku, feel free to skip this section.

Pros

Ease of Use

Heroku is arguably the most user-friendly PaaS platform. Rather than spending days setting up and configuring web servers and the underlying infrastructure, you simply define the commands required to run your web application and Heroku does the rest for you. You can literally have your app up and running in minutes!

Plus, Heroku leverages git for versioning and deploying apps, which makes it easy to deploy and roll back.

Finally, unlike most PaaS platforms, Heroku provides excellent error logs, making debugging relatively easy.

Popularity

For the first five years of its existence, Heroku had few competitors. Their user/developer experience was just so far ahead of everyone else that it took a while for companies to adapt. This, coupled with their vast free tier, meant that the majority of developer-focused tutorials used Heroku for their deployment platform. Even to this day, the vast majority of web development tutorials, books, and courses still leverage Heroku for deployment.

Heroku also has first-class support for some of the most popular languages and runtimes (via buildpacks) like Python, Ruby, Node.js, PHP, Go, Java, Scala, and Clojure. While those are the officially supported languages, you can still bring your own language or custom runtime to the Heroku platform.

Integrations and Add-ons

Often overlooked, Heroku provides access to hundreds of add-on tools and services -- everything from data storage and caching to monitoring and analytics to data and video processing. With a click of a button, you can extend your app by provisioning a third-party cloud service all without having to manually install or configure it.

Scaling

Heroku allows developers to easily scale their apps both vertically and horizontally. Scaling can be achieved via Heroku's dashboard or CLI. Additionally, if you're running more performant dynos you can leverage the free auto-scaling feature, which increases the number of web dynos depending on the current traffic.

Cons

Cost

Heroku is rather expensive compared to other PaaS on the market. While their starting plan is $7 per dyno per month, as your app scales, you're quickly going to have to upgrade to better dynos, which cost quite a lot of money. Due to the price of more performant dynos, Heroku might not be appropriate for large, high-traffic apps.

Heroku compared to AWS EC2 is about five times more expensive.

Keep in mind, though, that Heroku is a PaaS that does a lot of the heavy lifting for you, while EC2 is just a Linux instance that you have to manage yourself.

Lack of Control and Flexibility

Heroku doesn't offer enough control and lacks transparency. By using their service, you're going to be highly dependent on their tech stack and design decisions. Some of their limitations hinder scalability -- e.g., an application can only listen on a single port, functions have a max source code size of 500 MB, and there's no way to fine-tune your database. Heroku is also highly dependent on AWS, which means that if an AWS region is down, your service (hosted in that region) is also going to be down.

Similarly, Heroku is really designed for your run-of-the-mill RESTful APIs. If your app includes heavy computing or you need to tweak the infrastructure to meet your specific needs, Heroku may not be a good fit.

Lack of Regions

Heroku offers two types of runtimes:

  1. Common Runtime - for non-enterprise users
  2. Private Spaces Runtime - for enterprise users

The Common Runtime only supports two regions, US and EU, while the Private Spaces Runtime supports 6 regions.

This means that if you're not an enterprise user you'll only be able to host your app in the US (Virginia) or EU region (Dublin, Ireland).

$ heroku regions

ID         Location                 Runtime
─────────  ───────────────────────  ──────────────
eu         Europe                   Common Runtime
us         United States            Common Runtime
dublin     Dublin, Ireland          Private Spaces
frankfurt  Frankfurt, Germany       Private Spaces
oregon     Oregon, United States    Private Spaces
sydney     Sydney, Australia        Private Spaces
tokyo      Tokyo, Japan             Private Spaces
virginia   Virginia, United States  Private Spaces

Lack of New Features

In today's world, development trends change faster than ever. This forces hosting services to follow the trends to attract teams looking for cutting-edge technology. Many of Heroku's competitors, which we'll address here shortly, are advancing and adding new features like serverless, edge computing, etc. Heroku, on the other hand, has embraced stability over feature development. This doesn't mean they aren't adding new features; they are just adding new features much slower than some of their competitors.

If you want to see what's coming next to Heroku, take a look at their roadmap.

Lock In

Once you're running production code on Heroku it's difficult to migrate to a different hosting provider.

Keep in mind that if you move away from a PaaS, you'll have to handle all the things that Heroku handled yourself, so be prepared to make a SysAdmin or DevOps hire or two.

Heroku's Core Features

In this section, we'll look at Heroku's core features so you can understand what to look for as you look for alternatives.

Again, feel free to skip this section if you're already familiar with Heroku's features.

Feature Description
Heroku Runtime The Heroku Runtime is responsible for provisioning and orchestrating dynos, managing and monitoring the lifecycle of your dynos, providing proper network configuration, HTTP routing, log aggregation, and much more.
CI/CD system Easy-to-use CI/CD, which takes care of building, testing, deploying, incremental app updates, and more.
git-based deployments Manages app deployments with git.
Data persistance Fully-managed data services, like Postgres, Redis, and Apache Kafka.
Scaling features Easy-to-use tools that enable developers to scale horizontally and vertically on demand.
Logging and app metrics Logging, monitoring, and application metrics.
Collaboration features Easy collaboration with others. Collaborators can deploy changes to your apps, scale them, and access their data, among other operations.
Add-ons Hundreds of add-on tools and services – everything from data storage and caching to monitoring and analytics to data and video processing.

When looking for alternatives, you should prioritize the features. You're simply not going to find a 1:1 replacement for Heroku, so be sure to determine which features are "must-haves" vs "nice-to-haves".

For example:

Must-haves

  1. Solid UI
  2. Buildpacks
  3. git-based Deployments
  4. Battle-tested
  5. Simple scaling

Nice-to-haves

  1. Application and Infrastructure Monitoring
  2. Uses AWS
  3. Free tier
  4. Add-ons
  5. CI/CD System

Heroku Alternatives

Finally, in this section, we'll look at the best Heroku alternatives and what their pros and cons are.

DigitalOcean App Platform

App Platform is DigitalOcean's fully managed solution for deploying apps to the cloud. It has integrated CI/CD, which works well with both GitHub and GitLab. It natively supports popular languages and frameworks like Python, Node.js, Django, Go, and PHP. Alternatively, it allows you to deploy apps via Docker.

Other important features:

  • Horizontal and vertical scaling
  • Built-in alerts, monitoring, and insights
  • Zero downtime deployments and rollbacks

The platform's UI/UX is simple and straightforward, providing a similar feel to Heroku.

DigitalOcean App Platform starts at $5/month for 1 CPU and 512 MB of RAM. To learn more about their pricing take a look at the official pricing page.

Pros

  • Easy to use
  • One of the cheapest PaaS
  • Free plan that allows you to host up to 3 static sites
  • Decent regional support (8 regions)
  • SSL protection on hosted apps
  • DDoS mitigation

Cons

  • Relatively new PaaS (established in 2020)
  • Builds can often take up to 15 minutes
  • No support for recurring jobs (like cron)
  • Lack of documentation

Want to learn how to deploy a Django application to DigitalOcean's App Platform? Check out Running Django on DigitalOcean's App Platform.

Render

Render, which launched in 2019, is a great alternative to Heroku. It allows you to host static sites, web services, PostgreSQL databases, and Redis instances for absolutely free. Its extremely simple UI/UX and great git integration allow you to get an app running in minutes. It has native support for Python, Node.js, Ruby, Elixir, Go, and Rust. If none of these work for you, Render can also deploy via a Dockerfile.

Render's free auto-scaling feature will make sure that your app will always have the necessary resources at the right cost. Additionally, everything that's hosted on Render can also get a free TLS certificate.

Refer to their official documentation for more information about their free plans.

Pros

  • Great for beginners
  • Effortless to set up and deploy apps
  • Free tier
  • Budget-friendly compared to Heroku (~50% cheaper)
  • Automatic scaling based on real-time CPU and memory usage
  • Excellent customer support

Cons

  • Relatively new PaaS (established in 2019)
  • Limited regional support (only Oregon, Frankfurt, Ohio, and Singapore)
  • Free tier apps take pretty long to get up and running
  • No buildpacks (take a look at this question)
  • Lacks an add-ons ecosystem

Want to learn how to deploy an application to Render? Check out our tutorials:

  1. Deploying a Django App to Render
  2. Deploying a Flask App to Render

Fly.io

Fly.io is a popular, flexible PaaS. Rather than reselling AWS or GCP services, they host your applications on top of physical dedicated servers that run all over the world. Because of that, they're able to offer cheaper hosting than other PaaS, like Heroku. Their main focus is to deploy apps as close to their customers as possible (you can pick between 22 regions). Fly.io supports three kinds of builders: Dockerfile, buildpacks, or pre-built Docker images.

They also offer scaling and auto-scaling features.

Fly.io takes a different approach to managing your resources compared to other PaaS. It doesn't come with a fancy management dashboard; instead, all the work is done via their CLI named flyctl.

Their free plan includes:

  • Up to 3 shared-cpu-1x 256 MB VMs
  • 3GB persistent volume storage (total)
  • 160GB outbound data transfer

That should be more than enough to run a few small apps to test their platform.

Pros

  • Free plan for small projects
  • Great regional support (22 regions at the time of writing)
  • Great documentation and fully documented API
  • Easy horizontal and vertical scaling

Cons

  • Can only be managed through a CLI (might not be appropriate for beginners)
  • No out-of-the-box GitHub or GitLab integration
  • Different pricing per region

Want to learn how to deploy a Django application on Fly.io? Check out Deploying a Django App to Fly.io.

Google App Engine

Google App Engine (GAE) is a fully managed, serverless platform for developing and hosting web applications at scale. It has a powerful built-in auto-scaling feature, which automatically allocates more/fewer resources based on demand. GAE natively supports applications written in Python, Node.js, Java, Ruby, C#, Go, and PHP. Alternatively, it provides support for other languages via custom runtimes or Dockerfiles.

It has powerful application diagnostics, which you can combine with Cloud Monitoring and Logging to monitor the health and the performance of your app.

Google offers $300 free credits for new customers, which can serve small apps for several years.

Pros

  • $300 free credit
  • Stable and tested, established in 2008
  • Powerful app diagnostics (can be combined with other GCP/Google services)
  • It can scale to zero, which means that you don't pay anything if no one uses your service
  • Great customer support

Cons

  • Pretty expensive
  • Steep learning curve if you're not familiar with GCP
  • Vendor lock-in due to Google's proprietary software
  • Their pricing could be more straight-forward

Want to learn how to deploy a Django application on Google App Engine? Check out Deploying a Django App to Google App Engine.

Platform.sh

Platform.sh is a platform-as-a-service built especially for continuous deployment. It allows you to host web applications on the cloud while making your development and testing workflows more productive. It has direct integration with GitHub, which allows developers to instantly deploy from GitHub repositories. It supports modern development languages, like Python, Java, PHP, and Go, as well as a number of different frameworks.

Platform.sh does not offer a free plan. Their developer plan (which isn't suitable for production) starts at $10/month. Their production-ready plans start at $50 monthly.

Pros

  • Great CI/CD and integration with GitHub
  • Your GitHub branches (dev/stage/production) are reflected on Platform.sh
  • Easily scale with auto-scaling
  • Good documentation
  • Excellent customer support

Cons

  • No free tier
  • Gets more and more expensive as your site grows
  • Might not be appropriate for small businesses

AWS Elastic Beanstalk

AWS Elastic Beanstalk (EB) is an easy-to-use service for deploying and scaling web applications. It connects multiple AWS services, like compute instances (EC2), databases (RDS), load balancers (Application Load Balancer), and file storage systems (S3), to name a few. EB allows you to quickly deploy apps written in Python, Go, Java, .Net, Node.js, PHP, and Ruby. It also supports Docker.

Elastic Beanstalk makes app deployment easier by abstracting away the underlying architecture, while still allowing low-level configuration of instances and databases. It integrates well with git and allows you to make incremental deployments. It also supports load balancing and auto-scaling.

The great thing about Elastic Beanstalk is that there's no additional charge for it. You only pay for the resources that your application consumes (EC2 instances, RDS, etc.).

Pros

  • Budget-friendly
  • Great if you're already familiar with AWS
  • Highly customizable, provides a high level of control
  • Automatic scaling and multiple availability zones to maximize your app’s reliability
  • Excellent support

Cons

  • Not appropriate for small projects
  • Relatively difficult to set up and operate compared to other PaaS providers
  • No deployment failure notifications
  • Complicated documentation

Want to learn how to deploy an application to Elastic Beanstalk? Check out our tutorials:

Microsoft Azure App Service

Azure App Service allows you to quickly and easily create enterprise-ready web and mobile apps for any platform or device and deploy them on scalable and reliable cloud infrastructure. It natively supports Python, .NET, .NET Core, Node.js, Java, PHP, and containers. They have built-in CI/CD and zero downtime deployments.

Other important features:

  • Log collection and failed request tracing for tracking and troubleshooting
  • Authentication using Azure Active Directory
  • Monitoring and alerts

If you're a new customer you can get $200 free credit to test Azure.

Pros

  • Integrates well with Visual Studio
  • Azure Autoscale can help you optimize cost
  • Built-in SSL/TLS certificate
  • Easy debugging and analyzing via Azure Monitor
  • Stable, 99.95% uptime

Cons

  • Expensive
  • Not the most intuitive PaaS
  • Steep learning curve if you're not familiar with Azure
  • Complicated documentation

Want to learn how to deploy a Django application on Azure App Service? Check out Deploying a Django App to Azure App Service.

Dokku on a DigitalOcean Droplet

Dokku claims to be the smallest PaaS implementation you've ever seen. It allows you to build and manage the lifecycle of applications from building to scaling. It's basically a mini-Heroku you can self-host on your Linux machine. Dokku is powered by Docker and integrates well with git.

Dokku offers a premium plan called Dokku PRO, which comes with a user-friendly interface and other features. You can learn more about it on their official website.

Dokku's minimal system requirement is 1 GB of memory. This means that you can host it on a DigitalOcean Droplet for $6 per month.

Pros

  • Completely free and open-source
  • Easy to deploy applications
  • Rich command-line interface
  • Variety of plugins

Cons

  • Has to be self-hosted
  • Requires initial configuration
  • Documentation could be improved
  • Scaling is not easy

Want to learn how to deploy a Django application on Dokku? Check out Deploying a Django App to Dokku on a DigitalOcean Droplet.

PythonAnywhere

PythonAnywhere is an online integrated development environment (IDE) and a web hosting service (PaaS) based on the Python programming language. It has out-of-the-box deployment options for Django, web2py, Flask, and Bottle. Compared to other PaaS on the list, PythonAnywhere behaves more like a traditional web server. You have access to its file system and can SSH into the console to view logs and what not.

It offers a free plan, which is great for beginners or people who'd just like to test different Python frameworks. The free plan allows you to host one web app at your_username.pythonanywhere.com. You can also use the free plan to spin up a MySQL instance.

Other relatively cheap paid plans that can be seen on their pricing page.

Pros

  • Free hosting for one small project
  • Easy to use, basically no learning curve
  • Pre-configured for Django, web2py, Flask, and Bottle
  • One-click free SSL
  • Great customer support

Cons

  • No CI/CD support
  • Only supports Python apps
  • No ASGI support
  • No auto-scaling

Engine Yard

Engine Yard is a PaaS solution allowing developers to plan, build, deploy, and manage applications in the cloud. Engine Yard also provides services for deployment, managing AWS, supporting databases, and microservices container development. Its main focus is Ruby on Rails, but it also supports other languages like Python, PHP, and Node.js.

Engine Yard simplifies app management on the cloud by automating stack updates and security patches to the hosted environment. It’s also possible to scale resources for your apps via application metrics.

Pros

  • Can deploy to any AWS zone
  • Quick and easy deployment
  • Automates database administration
  • Designed to scale
  • Good customer support

Cons

  • Expensive
  • Free trial only for 14 days
  • Python is not the main focus since they focus on Ruby on Rails apps

Vercel

Vercel is a cloud platform for static sites and serverless functions. It's mostly used for front-end projects, but it also supports Python, Node.js, Ruby, Go, and Docker. Vercel enables developers to host websites and web services that deploy instantly, scale automatically, and require little supervision -- all with no configuration. It also has a beautiful and intuitive UI.

Vercel offers a free plan, which includes:

  • 100 GB bandwidth
  • Built-in CI/CD
  • Automatic HTTPS/SSL
  • Previews for every git push

Pros

Cons

  • Doesn't support many frameworks
  • Python, Go, and Ruby can only be used as serverless functions
  • Does not offer much control

Netlify

Netlify is a cloud-based development platform for web developers and businesses. It allows developers to host static sites and serverless functions. It supports Python, Node.js, Go, PHP, Ruby, Rust, and Swift. It's undoubtedly one of the most used hosting platforms for front-end projects.

Netlify has an intuitive UI and is extremely easy to use because it doesn't require any configuration.

Its free plan includes:

  • 100 GB bandwidth
  • 300 build minutes per month
  • Live site previews
  • Instant rollbacks to any version
  • Deployment of static assets and dynamic serverless functions

Pros

Cons

  • Does not support many frameworks
  • Most of its natively supported languages can only be used as serverless functions
  • Limited control

Railway.app

Railway.app is a lesser-known infrastructure platform that allows you to provision infrastructure, develop with that infrastructure locally, and then deploy it to the cloud. It's made for every language no matter the project size.

Its features include:

  • Auto-scaling
  • Usage metrics
  • Automatic builds
  • Collaboration features

Pros

  • Good for developing and prototyping
  • Good integration with GitHub
  • Templates for pretty much every framework

Cons

  • A relatively new platform
  • Not as popular as the other PaaS solutions in this article
  • It's difficult to find anything Railway.app related due to the company name

Red Hat OpenShift

OpenShift is Red Hat's cloud computing PaaS offering. It's an application platform built on top of Kubernetes in the cloud where application developers and teams can build, test, deploy, and run their applications.

OpenShift has a seamless DevOps workflow, can scale both horizontally and vertically, and can auto-scale.

Pros

  • Stable, released in 2011
  • Strong integration with GitHub and Docker
  • Intuitive UI

Cons

  • Can be pretty expensive
  • Monitoring and troubleshooting could be improved
  • Slow customer support

Appliku

Appliku is a PaaS platform that uses your cloud servers to deploy your apps. You can link your DigitalOcean or AWS account and provision servers through Appliku's dashboard. While their primary focus is on Python-based apps, you can deploy apps built in any language by leveraging Docker. Appliku's pricing is based on the number of managed servers, so you can deploy as many apps as you need. They do offer a free tier.

Pros

  • Built specifically for Python/Django
  • Cost-efficient to run multiple apps
  • Use any cloud provider
  • CI/CD, GitHub and GitLab integration
  • Let's Encrypt integration
  • Easy access to server logs

Cons

  • Newer platform (2019)
  • Not as popular as some of the other platforms

Conclusion

Heroku is a mature, battle-tested, and stable platform. It does a lot of heavy lifting for you and will save you a lot of time and money, especially for small teams. Heroku allows you to focus on your product instead of fiddling with your server's configuration options and hiring a DevOps engineer or SysAdmin.

It may not be the cheapest option, but it's still one of the best PaaS on the market. Because of that, if you're already using Heroku, you should have a strong reason to move away from it.

While there are a number of alternatives on the market, none of them match Heroku's developer experience. At the moment the most promising alternatives to Heroku are DigitalOcean App Platform and Render. The problem with these two platforms is that they are relatively new and not (yet) battle-tested. If you're just looking for a place to host your apps for free, go with Render.

Nik Tomazic

Nik Tomazic

Nik is a software developer from Slovenia. He's interested in object-oriented programming and web development. He likes learning new things and accepting new challenges. When he's not coding, Nik's either swimming or watching movies.

Share this tutorial

Featured Course

Test-Driven Development with Django, Django REST Framework, and Docker

In this course, you'll learn how to set up a development environment with Docker in order to build and deploy a RESTful API powered by Python, Django, and Django REST Framework.

Featured Course

Test-Driven Development with Django, Django REST Framework, and Docker

In this course, you'll learn how to set up a development environment with Docker in order to build and deploy a RESTful API powered by Python, Django, and Django REST Framework.