Do people still recommend Heroku? I'm looking for a IAAS/PAAS for "simple" web apps and websites. At the moment I'm using Digital Ocean App Platform and am relatively happy so far, but I can see that it's pretty new and not very well documented.
I use AWS extensively for other projects but it's just too complex. I'm looking for somethign that ticks most of the boxes and makes it easy to deploy apps and sites without total server oversight.
I worked for them for a long time. They've been under a feature freeze and slowly but surely losing headcount for years. The engineers still there that I know have really lost any enthusiasm for the platform as a result. The engineers that originally built Cedar are probably the best I've ever worked with which is how it's been remarkably stable for so long to end-users.
According to LinkedIn they have 141 employees, down 30% in 2 years. We had nearly 400 at peak I think. They had a significant layoff in 2020.
I would not recommend using it unless Salesforce turns things around and starts investing back into the platform. If you are currently on it you should be making plans to move off of it. Ask your sales rep about "Project Periwinkle", which is intended to spin down Heroku and just make it all various Salesforce services. "Periwinkle" being a mix of purple and blue.
EDIT: I want to add that the common trope of "Salesforce killed Heroku" is not true—or at least it's not the full picture. Salesforce bought Heroku in 2010, only 3 years after it was founded. Salesforce largely built Heroku and later suffocated it through not giving us any headcount. There was a time when they cared, and if you ever saw our old office you know what I mean. I have no idea why Salesforce gave up, but us ex-Herokai debate about it a lot.
> According to LinkedIn they have 141 employees, down 30% in 2 years. We had nearly 400 at peak I think. They had a significant layoff in 2020.
Not very related, but this is an example of a service (maybe just for me) I've wanted to setup with LinkedIn: Given company X, find all people that work or used to work there, then get rotation statistics. You should be able to see how many people (and %) go in and in what time on average.
I know of a smallish startup (70 people) where execs (VP and C level) rotated pretty often because of the policies of the CEO (was extremely cheap). It would be a great tool to have when exploring new companies.
A caveat that I considered adding to that statistic but left out due to brevity:
30% is likely over-estimating because there is likely some # of people that still work on Heroku but labeled themselves as Salesforce employees. There are also probably a higher number of people that work on Heroku part-time so also label themselves as Salesforce.
A tool like your suggestion could probably help but it would include folks that transitioned to a different part of Salesforce entirely.
That's a bummer. I have built a ton of nights and weekends projects using Heroku. I've even used it in my professional career getting the real estate software we were developing to get up and running with a very small team. We eventually moved to AWS but Heroku made it easy for us to just focus on the product.
Salesforce just released a feature called Functions (not the best name) that relies solely on Heroku based on what i see in my logs. Maybe Salesforce doesn't have big plans for Heroku but they do seem to care at least enough to release a new product on Heroku.
That was built by Heroku engineers. We had hoped to build a general purpose FaaS platform but instead we were forced to build that pile of Apex. Expect to see only these kind of products coming out of Heroku.
When I said "spin down Heroku" I probably should've said, "spin down the Heroku brand". Maybe that doesn't mean much to you, but I know a lot of Heroku customers probably wouldn't want to use a PaaS if it had only Salesforce branding—despite Salesforce running Heroku for the past 12 years.
It probably makes sense at this point for Salesforce to go this direction, but they're not being honest with their general purpose Heroku customers about where the platform is headed. I wish they would be.
Anything directly involving Salesforce like that will definitely be maintained and probably improved, so you're safe. I wouldn't be surprised if the branding changes though.
I'm hearing a lot of love for fly.io. But what about render.com? They are another serious contender, if I believe their own marketing (which I don't really, ever).
I'm hosting a few sites on Render and have been pretty happy with them so far.
Getting a Rails site up and running on them isn't quite as turnkey as what Heroku offers, but it still only took me a few hours to migrate one site composed of a Rails app server, Sidekiq+Redis job processor, and PG database, and that included puzzling through some lesser-explained parts of their documentation.
I really appreciate the fact that their prices scale mostly linearly, as opposed to Heroku's utterly indefensible pricing practices.
Render is still a fairly new company, which explains many of the feature gaps and lightness of their documentation, but I think they're well worth considering as a Heroku replacement. I have no regrets about making the switch.
I use Rollbar for error monitoring and they still have a free tier even when divorced from Heroku. So does Papertrail.
I use Amazon SES for mail-sending because I have issues with all of the Heroku free tier products. I think I might pay a dollar or two for this each month.
Render offers a managed Redis product with a free tier.
I try to keep such coupling to a minimum, though.
Only when the alternative to a `heroku add ..` is really hard, I prefer to have a much more flexible SOME_SAAS_KEY env var and use that in my app/adapters rather than having heroku shoehorn it in. Because the latter only ever ties me further into Heroku.
Which, following YAGNI, may not be an issue today, but does make your agility and ability to react to market changes (such as alternatives being a better option) much less. I try to keep my software platform agnostic because any tight coupling will haunt me in future.
Haha, for what it's worth, I'm the lead for their marketing, and also an eng who took the job because I loved using Render and wanted a change from working in DevOps.
You don't have to believe me...would expect nothing less : D the product and the way we ship what our users want speaks for itself.
I'm about to move our tiny startup off AWS, onto NextPAASPlatform and had both fly and render shortlisted. The latter just bumped a few notches higher.
FWIW: I'm moving off AWS because it is expensive in many ways: it's costing me dear time which I should spend on my product. And it's costing serious baseline costs: Just a CI pipeline, building a static site, a react app, and deploying a Ruby (not rails) backend to Beanstalk Staging and Production costs over $100/month. Before any traffic and scaling. And building and maintaining it costs me upwards of 90 hours now. I consider this wasted investments.
My story’s similar to @dnilasor’s sibling comment except with a little twist. I’m a Dev Advocate at Render now but used to be a Dev Advocate at Heroku.
I’m very excited about the potential future of Render.
I'm currently on Heroku (want to get off it!), and the main thing that's keeping me from trying out Render is the lack of point in time recovery for Postgres. Having had to use it once on Heroku it's an absolute life saver, I would be nervous of not having it. Does Render have any plans to implement a Postgress WAL point in time recovery/restore feature?
Thanks, done and done. As I said over on my comment at the above link it is one of those features that if you have every had to use it you cant live without it. I hope I would never have to use it but need it to be there just in case we screwup!
One of the things I have loved about Heroku is that once you have an account and have the CLI installed, you can create and deploy apps entirely through the CLI. You don't ever have to visit the Heroku dashboard during the initial deployment process.
Is this possible at all on Render? I haven't gone through the process on Render yet, but it looks like it requires a visit to the site at some point for each project that you want to deploy.
In my recent experience, heroku is still much easier to deploy. I've tried render.com a few times with a pretty basic rails 7 internal app and I haven't been able to get a successfully deploy.
If only because they have faster dynos? It's way easier to get started on Heroku than any other cloud service thing. Even AWS Beanstalk is just horrible. You're constantly fucking around with configuration.
Also, get rid of Webpacker. That shit will drive you nuts.
idk, I might consider my self slightly biased because I like the fly.io team, but fly.io has a really simple story for deploying docker images. It'll build them for you, host them, give you secure ssh access, handle connecting to other instances via nice "friendly" names...
I ran several things in Heroku and besides having a point-and-click Postgres product and add-ons Fly can run your app pretty easily. Unless those are the things which you mean that make Heroku super simple.
At the very smallest scale for a solo developer or a team of just a couple of people it can be a good option.
Once the team grows to even 5 or 10 engineers, I'm not a big fan. The model of encouraging anybody to do a git push to send their local copy of a branch to production is a little sketchy on even a small team. IMO you're better off having an automated build pipeline with CD by that point using something like gitlab or github actions, and putting your production environment into a proper VPC, i.e. generally starting to step up your engineering practices. You can still do these things with Heroku, but at that point you need to start kind of knowing what you're doing anyway and so you lose the main benefit of Heroku that it just magically works without needing to know anything about it. In my experience by that point you're fighting against Heroku more often than not and you're better off using something that is designed to be more flexible and give you more control like Kubernetes on GCP or AWS.
What’s annoying about Heroku and AWS is they made it an “either/or” situation that I don’t see a lot of people challenging.
My ideal would be a service like Heroku that makes it easy to evolve. When the team is between 1-5 people iterating rapidly towards PMF, make ‘git push’ deploy.
As the team grows and CI is needed, make it easy to decouple git from the deployment and support multiple envs. This is where Heroku stops.
Finally when the app becomes larger and more complicated, it should be easy to spin up resources in AWS (or whatever cloud) behind a VPC. Migrating the heroku-like PaaS into this VPC should be easy.
We just launched Flightcontrol[1] last month which provides the DX of Heroku (arguably better actually), but deploys all the resources to your own AWS account.
Git push to deploy fargate containers + automatic CDN + easy custom domains + auto https + multiple services per environment.
Coming soon is databases, private workers, static sites, and multi service preview environments.
We set up everything with best practices using VPCs, etc. We link directly to AWS services from our dashboard, but you don't have to know anything about devops.
If any of you try it out, I'd love any feedback you have for us!
"The model of encouraging anybody to do a git push to send their local copy of a branch to production is a little sketchy on even a small team"
Does anybody still do that for major apps these days? We've used a custom chatops bot based on Hubot for all of our deploys on Heroku for the past ~8 years, and they've recently released their own chatops solution that I've used for smaller apps and enjoyed. Using their new chatops bot is extremely turnkey—you can set it up to autodeploy from a Github branch or deploy manually, just by connecting a Github repo
As a solo developer, running a small instance yourself and just SSH’ing in or writing a few simple scripts to deploy is probably more worthwhile. You have to deal with the “headache” of setup but at least you know what’s going on underneath the hood.
Lots of suggestions here, my personal favorite for small apps is Dokku running on a Digital Ocean droplet. I've also heard good things about Caprover and DO apps but not tried them.
If I was a betting man, I think they’ll be there in the next few weeks for Rails + pg. They said full auto-Redis provisioning could come later.
If you build Phoenix apps, fly is going to be your bet. The creator of Phoenix works there and he made deploying Phoenix apps super easy.
Render said “they have some ideas”, but I haven’t heard back from them.
I really hope more companies pay attention to making deployments as easy as Heroku. Most stop short of that and think it’s OK to ship basic building blocks with huge README files for “Setting up your first ____ App”. That’s fine for a first step, but hosting companies should seriously look at their setup docs as manual steps that they should automate.
I still recommend Heroku because it’s just so damn easy. Developers can focus on shipping their apps and worry much less about DevOps. It’s amazing for proof-of-concepts, but they are stupidly expensive when your app starts scaling based on how they price. I’m really hoping Fly, Render, and lots of other hosting companies up their game and compete so we have more choice and ultimately lower prices.
Thanks for pushing us at Render. We want to make sure we build it right (updating the dashboard without too much special casing is a bit more involved than a CLI update) but we're certainly on it, especially now that we have managed Redis.
Yeah! You’re all doing a great job. I know how hard software is and how it’s even more difficult to prioritize something when there’s lots of good ideas on your plate. Keep up the great work.
I use fly.io in production. It’s very good if you’re comfortable with a CLI. However, I wouldn’t say it’s nearly as beginner friendly as Heroku. Heroku is dummy easy to get started. Netlify is about as simple too.
Absolutely not. I was a heroku proponent for many years, but the sheer stagnation and lack of bug fixes (for the price they charge) is entirely unacceptable. Frequent outages. Unpredictable performance. Weird reliability issues, and support only tells you to install New Relic and move along.
Check out Render or fly.io. I use beanstalk on AWS.
I completely agree. i am also on Digital Ocean App Platform. It works fine so far. I was considering trying Cloudflare Workers + Cloudflare KV as an alternative as it seems way cheaper, albeit slightly different. It has some limitations, like only use Typescript and non relational db and a bit of a vendor lock-in but it seems very interesting proposition and offer very generous quotas. AWS/GCP/Azure seem too complex and overpriced for small side projects. The alternative is going down the VPS route but it's more costly to maintain
I have a hard time figuring out the right balance for my side projects, too. I've used Heroku for a long time, and it used to be the best offering period, there wasn't any competition about it, but lately offerings like Render and Vercel have been compelling alternatives.
I tried out DO App Platform and it’s pretty decent. There were a few bugs I encountered. One glaring issue is the lack of static IP’s which was a must for me. They claim they’re working on it, however.
I would try Azure - it has almost all the same service offerings as AWS, but (strictly IMO) the UI is better to work with. They do a good job hiding some of the more complex things that most people don't care about. The defaults can be annoying (e.g. you get defaulted to a $200/mo managed Postgres cluster when there is a $10/mo option available) but I just make sure to double-check pricing before creating anything and have never had an issue.
AWS Copilot is quite good in many respects, a bit like a reboot of AWS Beanstalk built on newer low level services, and has a good CLI/console dev experience if that floats your boat.
^ begrudgingly because they nearly deleted a linearly-growing production database with a week's notice and without any forewarning or revocation of INSERTs (as their docs say should happen):
Aside from that scare, and their support being about a 6/10 (which isn't too bad, all things considered), then I'd say it's pretty damn good, it certainly abstracts away a lot of complexity.
We've been doing this with Heroku anyway. Something about Heroku Postgres seemed a bit temperamental with our app (and was more expensive) so we've been using RDS in the same region without any complaints while enjoying Heroku for deployment.
So far, not really. You need some basic AWS experience for security/scaling/setting up alerts purposes, but beyond that the only "ops" I've done in two years has been manually triggering some upgrades (paranoia on my part) and we ran out of disk space at one point as I forgot to set up an alert but this was very easily fixed.
My biggest beef with them is that they’re so feature frozen that they threw a billion person country off rather than update billing.
India recently passed a credit card tokenisation law that needs changes in an invoicing system, and Heroku sent me an email saying my 10 paid production apps would all just be shutdown because they’d rather just drop support for Indian customers.
I happened to be working at Fly.io at the time, so had a clear alternative, but the way Heroku handled this really sucks.
That India banking regulation really threw a wrench in a lot of businesses. Our company had to do a mad scramble to support it, and what we came up with was a worse customer experience than before. It will take some time for us to make billing as easy to use as it was before the regulation kicked in.
I work at Stripe. We hustled too. But frankly, the scope of PDE that needs to be located in India is pretty small. If I was a company whose whole business was making it easy to deploy and manage software, I would be thoroughly embarrassed that I couldn't spin up a twelve factor app with a year of notice.
Well, if it was going to be a large, time-consuming, costly upgrade that was only for one country - and if they had a real minimum of customers from that country - it's a fairly sensible business calculation.
That's the kind of cost-benefit analysis that's lazy on Heroku's part though, and doesn't properly track brand damage or even attempt to think about second order effects. The country has a huge developer population, massive internet penetration among the entire economic range and fast moving fintech scene. This is the kind of cost benefit that signals an inability to change or adapt rather than a projection of the real benefits.
Stripe handled it transparently, as did many other payment gateways — the changes were somewhat in the vein of European 3DS / SCA changes anyway, and it's quite possible that the EU will adopt similar measures — not to mention that adding flexible invoice payment options allows customers to use many more international payment methods.
The sad thing is instead of seeing the benefits the change would unlock it looks like Heroku focussed on the cost of doing it and gave up.
The problem is, this fits the pattern with what Heroku has been doing for years now. Whatever works and keeps working, they're happy to steer you towards. Whatever isn't working, they're just kind of hands up in the air letting things stagnate.
I used to be on heroku but to be honest it’s extremely expensive for what it provides. Same value for money I moved to digital ocean app platform and I am very happy with the service.
Can you elaborate? Is that on files served from the App Platform CDN itself or files that are hosted on Digital Ocean Spaces? I'm trying out App Platform for a few projects at the moment
I don´t think it applies to content served from the App Platform CDN (Cloudflare), but egress from origin is 10¢/GB after the included bandwidth is exceeded. Excess egress from Spaces or Droplets is much cheaper at 1¢/GB, and they are more generous with the included amount.
It was truly revolutionary when it came out, and I have yet to see anything that makes it so dead simple to spin up a side project or just a 'live mockup'.
It still works great for my team for review apps on every pull request, which is great for live testing and avoiding contention around a staging server.
Their pricing is what turns me off most. Just to run an instance with 1gb of memory is like $50/month. Anything over than that next pricing was like $250/month, no thanks, I’ll manage my own instances.
I deployed a personal app to Heroku when i was quite young and Heroku was barely a company. I lost access to the email that was tied to that heroku account, to their credit, the app is still deployed (and quite embarrassing to look back on). I've tried contacting support to remove the app multiple times but they've refused citing "security" concerns.
Heroku isn’t running single tenant resources and has an abstraction as a PaaS that’s in between the cloud provider entirely. MedStack Control runs independently of the clusters it provisions directly upon Azure, and are all single tenant, so outages to MedStack don’t disrupt cluster availability; only management.
Good thread timing. I was literally just about to deploy a toy proof of concept rails app this afternoon and start having some people on my team play with it.
Good excuse to try something else instead. What's everyone's favorite for semi-idiot-proof one click style rails app deployments these days?
I use Dokku for all my toy or side projects. Super easy to set up on a Digital Ocean droplet, and depending on the size of your droplet and the memory footprint of your app, you can deploy and run many apps on the same server.
Out of curiosity, does Cloudflare offer enough functionality to cover one’s computer, database, and file storage needs? I know they’ve been expanding their offerings, but I don’t know if they offer enough to host a full blown web app.
Heroku is crap. You can’t deploy without dropping requests, it’s tools are lame and any serious monitoring costs you big $. ‘It just works’ is a layman’s response to the fact that it really doesn’t.
I wouldn't call it crap. It certainly has limitations, but for many projects those are an acceptable tradeoff for lower friction. For many projects those limitations cost less than not launching the project at all.
Heroku definitely has a ton more competition these days though. Containerization has really encroached on their main value proposition. Fly.io, AWS ECS and Fargate, Managed Kubernetes, even just Docker on a VPS mostly don't require much more effort than Heroku.
It absolutely has its limitations, but you can certainly enable rollover to prevent dropping requests [1]
Note that the default was chosen in a world where it wasn't natural that 2 versions of an app could be running side-by-side harmoniously, e.g. due to database evolution.
What are some of the limitations of managed k8s? For a lot of scenarios, it really seems like it could be an ideal set of tradeoffs in terms of who manages what and being able to still maintain some shred of platform agnosticism.
The controlplane costs ~$45USD/year to run but so far my experience with it has been super positive. They support new releases quickly and if you're using managed node groups you can do blue/green version upgrades.
The main tradeoff for using EKS is the built-in CNI is limited by the number of virtual IPs you can assign to a given node type's network adapters. If you are running a bunch of small workloads you end up with very under-utilized compute and if you're using autoscaling that results in a lot of churn. We replaced it with weave-cni which has it's own set of headaches in regards to pod access to the control plane but it does allow us to run a basically unlimited number of small workloads on somewhat beefy instances. We set it up using spot pricing and the costs have been very low.
Okay, thanks! My primary interest is for spot instance CI workers, so yeah, the deployment side is a non-issue and having a sane story for auto-scaling many small short-term workloads is exactly my scenario.
I use AWS extensively for other projects but it's just too complex. I'm looking for somethign that ticks most of the boxes and makes it easy to deploy apps and sites without total server oversight.