Heroku, alternatives, and how to migrate
By Will Stewart
Published 12th May 2022
Heroku is a cloud service platform that makes it simple to deploy your code using buildpacks and hosting databases using addons like Postgres and Redis. For years it has been popular because it reimagined how fullstack applications could be deployed into production without hiring infrastructure engineers. But recent developments have caused users to start leaving the platform and looking for alternatives.
Heroku raised $13m in funding and was acquired for $212m in cash by Salesforce in 2010. As time has moved on, they have not been able to keep up, the changelog paints a picture of a company unable to ship any product, with the last two years of updates being little more than version bumps and feature deprecations. Recent security incidents and outages have left Heroku users asking what next? There is frequent mention of project Periwinkle where Heroku could be discontinued in favour of a Salesforce cloud offering. Today Heroku handles over 60bn requests a day, 600k requests a second with $500m ARR, broken down by $200m in self-service and $300m in enterprise revenue. Heroku now has ~123 employees according to LinkedIn, down 30% in 2 years, and much below the peak in 2018/2019 at over 400 people working on the platform.
Other relevant Heroku content on Northflank
Documentation on how to migrate from Heroku.Heroku pricing comparison and reduction.
What does Heroku do well?
Dyno - Heroku's version of containers allow for a serverless like experience in deploying your software. Scale up and down, horizontally or vertically as required.
Buildpacks - Heroku uses buildpacks to compile application code and create a “slug”, a pre-packaged copy of the application that is optimised for distribution into a dyno. Heroku supports the most common programming languages (Java, Node.js, Scala, Clojure, Python, PHP, Ruby, and Go) but for deployments in any other programming language, custom buildpacks can be used. Buildpacks allow you to get started quickly without wrangling with dependencies or configuration.
Environments variables - either through their CLI or UI, users can change the configuration variables.
Rollbacks - offer an overview of release history, allowing users to roll back to a prior state with ease.
Databases and addons - Heroku offers Postgres, Redis and Kafka as 1st party databases. Any other databases or addons required are available through their large library of addons developed by third-parties for data stores, database UIs, detailed logs and monitoring, notifications, caching, CMS, testing queuing, networking services (DNS; proxies management), security…
Database restores and backups - using Logical Backups users can create a single snapshot file from Heroku Postgres databases. Via the CLI users can manually capture or schedule logical backups, which will run a series of SQL COPY statements in a single transaction to produce a consistent snapshot across the database.
What does Heroku do badly?
Heroku publicly shares their outages, which occur on average every week. The latest and most concerning is the catastrophic hack suffered on and before the 15th April 2022, in which multiple Heroku GitHub OAuth applications were targeted, potentially exposing code source repositories, log sinks and service environment variables. Users have been unable to deploy new code to their Heroku services using GitHub for weeks. It is unclear if Heroku understands exactly what attackers were able to gain access to. These two articles by The Register and the GitHub Blog dive deeper into the details of the attack. Following are some Tweets sharing the sentiment of some Heroku users:
"We're noticing issues with dyno restarts, dyno scaling, release phase, builds, app setups and Heroku CI"
— Jon Yongfook (@yongfook) April 26, 2022
so, all the things, then. https://t.co/NPqOszQM1u
I'm pretty salty Heroku hasn't communicated when they're planning on fixing or making their GitHub integration work again.
— Andrea Fomera (@afomera) April 26, 2022
I totally understand the desire to not give a firm date, but come on, it's been like 11 days and we're still unable to use review apps among other features.
Another recent disappointment from a large percentage of Heroku customers is their refusal to accept payments from non-enterprise Indian customers with Indian credit cards. On 15th December 2021, Heroku announced that they were unable to verify and process India-issued credit cards for Heroku Online customers. This came after the new Reserve Bank of India (RBI) regulations stated that they can no longer process automatic recurring payments.
If you're an Indian company, don't bother trying to pay for your Heroku account right now. Because Heroku is just flat out refusing to accept any India-issued cards. We even asked them for one-time payment links, but no luck. Thank you RBI for protecting us 🙏🏾 pic.twitter.com/ffQxscVcWA
— Rohin Dharmakumar (@r0h1n) April 14, 2022
Owning a credit card in India is almost pointless for subscriptions/online services!@heroku is there anyway I can pay for your service?https://t.co/ljvf1sC7jP
— Mustafa (@mufasaYC) March 13, 2022
This is not an acceptable. I’m an Indian and I stay in India, from where can I get a non Indian card?⁰When I started using @heroku you used to accept Indian cards, now you can’t accept, that’s your problem, why’re you suspending my account? Why should I suffer?@SalesforceOrg pic.twitter.com/UwCzxr2nGo
— Rivu Chakraborty (@rivuchakraborty) February 24, 2022
Since the acquisition by Salesforce in 2010, Heroku has renounced their leadership in product delivery, engineering, security and reliability. Once a pioneer they are now stuck in maintenance mode bordering on sunsetting the entire project. Heroku’s revenue of $500m would be a very large independent cloud technology company but only makes up 2% of Salesforce’s global revenue in 2021.
I'm sad to say but I think we're witnessing the demise of Heroku:
— Greg Navis (@gregnavis) April 27, 2022
· Stagnated product offering
· Customer-hostile practices (e.g. no easy way to access Performance dynos)
· Recent security incident with GitHub tokens (including poor/lack of communication)
· Reliability issues
Depending on who you ask, Heroku has been in steady decline - or at the very least, has stagnated at the technological level - since its acquisition by Salesforce in 2010.
— Hacker News (@Hacker__News) April 27, 2022
I feel like they exploded on the scene, got acquired by Salesforce, and then stagnated as the Enterprise sales team moved in. Heroku ops are still first-class (until last week at least 😅), but there’s been no product or pricing innovation in years. Only two regions, in 2022??
— Dave (@davemetrics) April 27, 2022
What are the alternatives to Heroku?
Several production ready, credible alternatives to Heroku include Northflank, Cloud.run, Render, Platform.sh, and Fly.io.
Developers want a platform to deploy their code which is flexible, reliable and secure. With rapidly evolving technologies and industries, a PaaS has to be constantly evolving and adding support for new databases and other developer needs. Ensuring reliability and security will make a PaaS trustworthy for production environments.
Northflank is a developer platform to build and scale microservices, jobs and managed databases with the ease of use of Heroku and pricing and comprehensiveness of AWS in a delightful UI, API and CLI.
In minutes, developers can integrate with GitLab, GitHub & Bitbucket, provision highly available databases, schedule cron jobs, configure networking, deploy services and collaborate with their team of other developers. Northflank will build and deploy any workload: ephemeral, stateful, horizontal or vertically scalable. Northflank can be accessed through a flexible and comprehensive API while offering a severless like experience, without any of the drawbacks of existing serverless providers. Builds, containers, jobs and database ‘as a service’ in a unified experience.
How do you migrate away from Heroku?
Northflank faithfully enables developers to deploy their 12factor applications, written by Heroku's co-founder Adam Wiggins here.
The first step to migrate from Heroku, is to create a Northflank account and connect your version control, either GitHub, Bitbucket or Gitlab. Our docs on how to migrate from Heroku to Northflank will provide more detail.
All your code will have been built using buildpacks on Heroku, which are also supported by Northflank. Whether you use Heroku buildpacks or custom ones for unsupported languages or frameworks, you will be able to use the same buildpacks to build your services on Northflank.
Once that is set up, you can import your existing databases from external archives or existing live databases. Our detailed docs on how to import an existing database will be useful in this process.
Heroku concepts
Heroku | Northflank |
---|---|
App | Service |
Dynos | Instance |
Standard Heroku git push & build & deploy | Combined service |
Worker dynos | Service with no public networking |
Scheduler | Cron Jobs |
Postgres | Addons Postgres |
Papertrail addon | Logs (search, tail, 90+ day retention) - log sink coming soon |
A streamlined feature to import your Heroku project to Northflank in seconds is arriving soon. You will be able to login with your Heroku account, select the projects and services you wish to import. Setting up databases, Git repositories and your environment variables is all handled seamlessly and will be running in production in your Northflank account.