Hacker News new | ask | show | jobs
by craigkerstiens 1513 days ago
As someone that was there at Heroku after the acquisition, I don't think you can state that since the acquisition it's been consistently downhill. There isn't much debate that things have stagnated in the last 5-7 years which is a longer story on why probably.

Some examples of innovation that happened and were launched after the acquisition: buildpacks (at the time of acquisition Heroku was still Ruby only), Heroku Postgres launched forks/followers/dataclips all after the acquisition, review apps came several years after. Salesforce may have had an eventual hand in it, but there was still a lot of innovation happening due to the folks there in the near to mid-term after the acquisition for several years.

All that said, very excited for the new crop of players in the space. There are a number of companies trying to be a cheaper or more stable Heroku. Personally I'm excited about the ones that are taking their own unique approach. https://www.fly.io and https://www.railway.app are two that to me seem to bring their own perspective vs. just trying to recreate Heroku as a carbon copy clone. There are a number more in the jamstack space that have become staples such as Netlify and Vercel which are also doing great things.

7 comments

I think the most interesting part of this is the PaaS disaggregation. Heroku built an exceptionally good Postgres service. They could not have done that with multiple DBs. Even their redis is pretty meh.

People like us (Fly.io) will end up either building very mediocre DB offerings or collaborating with DB companies (like yours: https://www.crunchydata.com/products/crunchy-bridge/) to ship stuff that's substantially better than RDS. I'm looking forward to it. Down with mediocre DB services.

Oh thanks for the props Kurt. The idea of PaaS disaggregation is definitely something I've been pondering for a bit and think I'm on the same page. At Heroku we were very opinionated about only Postgres for the longest time. We were fortunate to build-out the add-on ecosystem to give you more options, and explicitly did not want to run them ourselves for the longest time. I'm not sure how lucky we were vs. good, but surely spreading ourselves out to be platform + Postgres + everything else would not have resulted in the same experience.

It turns out running a PaaS is a lot of work. Running a DBaaS is also a lot of work. If you've ever dealt with database corruption, it's not the thing you can just hand wave and do the same way across all databases, you need deep expertise in it, that or you say it's not my problem and offer a poor customer experience. Personally feels like we can do better in service quality as platform/database providers so doing one thing really well feels like a good direction to head for a bit (at least that's heavily what we're betting on at Crunchy Data by just focusing deeply and purely on Postgres).

genuinely curious - this is the first time im hearing of crunchydata in a "versus RDS" context. is there a pricing and feature comparison for RDS vs Crunchydata ? a honest tradeoff comparison.
We don't have anything published, but some of the basic summary on why us:

- We give you full Postgres super user access, so less restrictions

- Quality of support, whether it's the Postgres basics of indexing or you've found a crazy bug deep in Postgres. Our team contributes a lot to upstream Postgres itself and can go as deep as we need to, but in general quality of support is a big differentiator for us

- We've been able to beat in cases price to performance just on the mix of Postgres experience coupled with our experience running on AWS/other clouds.

- Not locked into a single cloud, can go from AWS to Azure and vice versa with click of a button.

There's more details, and more coming particularly around the developer experience and proactively improving your database for you. But that's the high level pitch.

We'll likely have something in our docs (https://docs.crunchybridge.com) soon to address it more directly.

I'm curious about what "substantially better than RDS" means. RDS has been good enough for me for quite a while. Does it only matter once you get to a certain scale?
Craig here from Crunchy the company he's referring to. Not sure what he has in mind, but having built a lot of Heroku Postgres in the early days I definitely have thoughts on what can make a database great. There is a big gap between most developers and what you need to know to efficiently run Postgres. Without tipping too much of our hand, we're focused deeply on building an amazing developer experience for Postgres. Some things we're thinking about are how we can actively detect N+1 queries (common in almost every ORM, Rails, Django, etc) and notify you about them. We already have some big differences like shipping with connection pooling built-in so you can easily scale to 10,000s of connections, really any production Postgres setup should be running with pgbouncer, where as on a lot of providers it's either not an option or you're left to your own devices.

Good enough may be absolutely fine for a lot of people, but no lock-in to a single cloud, better developer tooling, proactive alerts and recommendations, quality support all feel like an opportunity to be better.

Kurt may have entirely other things in mind, and would be all ears if there is low hanging fruit in terms of feature or experience we can do to make Postgres even better for folks.

disclaimer: former Heroku person here too

Some examples of the things I've missed around developer experience for a database, that Craig and the team made possible at Heroku Postgres, include:

- fork: ever had one of those "why does this bug only exist in production?" problems? It was so trivial to fork the DB and run your tests/hypothesis/whatever without the risk of actually impacting production. Same thing for _really_ testing a migration script or load test.

- follow: a similarly easy approach for getting a read replica which is super useful for generating reporting.

- dataclips: "hey, can you tell me X?" sure, and here's a URL to the results that you can refresh if you need an updated number in the future. So great for adhoc queries.

All of these are obviously doable with RDS and/or other solutions too. But the time taken to do any of the above was often measured in seconds, at most minutes. It's difficult to communicate just how impactful those kind of improvements are to your workflow. It's like it subconsciously gives you permission to tackle whole new problems, build better solutions, get answers to questions you never thought to ask before. Because the barrier to entry is so low you just do these things. You don't sit around wondering if you could.

A great developer experience around a database (one that goes beyond setup and basic ops) is a severely under appreciated thing IMO.

> - fork: ever had one of those "why does this bug only exist in production?" problems? It was so trivial to fork the DB and run your tests/hypothesis/whatever without the risk of actually impacting production. Same thing for _really_ testing a migration script or load test.

This sounds great! How does it work though? Is it using some special postgres feature or btrfs snapshots or something else completely?

Craig (the poster I jumped in to reply to) would know the specifics better than I ever did. My recollection is:

- restore from the latest snapshot (there was one whether you’d configured a custom backup schedule or not)

- replay the write ahead log over the top to catch the restore up to the point in time you asked for/when you ran the command. At least some part of this process leveraged WAL-E, which was a tool largely developed by Heroku employees and open sourced.

This was a decade or more ago though. The state of the art of postgres has moved on and I assume the team would tackle it differently if they were doing it today.

It's leveraging pretty native Postgres tooling that restores the base backup from within Postgres, then replays the WAL to the exact point and time you specify. With snapshots and other mechanisms you may get a database "up" sooner, but we've seen when we follow that approach it's so long for the PG cache to warm up that you effectively still have a useless database even though it's "up". Further Postgres itself depending on how you do it will have to go through crash recovery, which I've seen cases on some providers taking over 10 hours.

Doing the native approach in Postgres isn't perfect, but we've focused on getting the developer experience for it down so you can use your database and it "just work" and if something goes wrong you understand how to rollback seamlessly.

RDS runs pretty well! It's just irritating to use.

The good DBaaS give me a lot more power. This is true for Heroku PG, PlanetScale, Supabase, and Crunchy Data. Some of them let me fork a DB to run a PR against, some give me app level features that save me code, etc.

Most modern hosted DBs also let you run your own replicas.

I'm not really complaining about how well RDS works when your app is connected to it and it doesn't failover/go down for maintenance/etc. It works fine as a DB backend. That's just a baseline I don't think is very valuable anymore.

we’re using aiven.io and quite happy, although hard for me to compare. you can port across clouds, which is reassuring if we need to switch. Otherwise their support was helpful debugging a couple of db issues (in our own code). Wonder how they compare in this matrix if anyone knows?

no affiliation. just a customer.

aiven.io is quite good. They went broad instead of deep, so they're not as good at Postgres as the Postgres specific companies. But they're probably better Postgres than a PaaS can build by themselves.
that’s useful to know that others do postges better. We use their redis as well, so in some ways, breadth is useful for them and for us.

at the time we picked aiven, we couldn’t find any redis-specialized hosting with instances in GCP europe if I recall. so their breadth also plays in terms of locating near the customer servers (important for latency)

What do you mean? RDS lets you run replicas
RDS will manage replicas for you. But you can't run your own non-rds replicas.
correct. RDS does not even let you do a true, vanilla postgres backup to s3. the lock-in is complete
Ah that explains seamless migration from Heroku and support for Heroku postgres on fly.io. I appreciate not building subpar services just to show 'Yeah we have that too'.

My current strategy is to use Heroku to test waters, If the validation is successful then migrate to fly.io.

I am a total newbie here - you speak of DBs because of the backend that needs to be set up to host the users' app?
Yes, exactly.
The first few years after the Salesforce acquisition were incredible - for quite a while I thought of Heroku as one of the best examples of an acquisiton where the product improved after the release.

Sad to see that momentum eventually fade away.

Agreed - not least recruiting Matz which I thought was a huge coup
At the time we would joke a bit that acquisitions would get some new very high priced domain. We even looked at getting the .app TLD for all Heroku apps to get their own .app domain. We ended up with our acquisition "gift" as Matz, which was great to see it support Ruby and the community given how Heroku couldn't have become Heroku without the Ruby and Rails community.
When you hire a celebrity programmer like that, what exactly do they end up doing?

Do they actually have responsibilities in their role or is it more just to slap the branding on to them while they continue to do their own thing, whatever it may be? (in Matz case I would think he has more than enough full time work on Ruby itself)

Heroku/Salesforce essentially just picked up the salaries for Matz and part of his team to work on Ruby, with no other commitments as far as I'm aware.
https://render.com is my favorite in this space
I'm trying to switch from Heroku to Render but it is awfully slow compared to Heroku, my Rails project takes something like 1 minute to start after it has been shut down gratefully. Moreover, it breaks the CSS assets and uses the older assets instead of the latest ones. I do not why, it is a really small project and I have none of these issue on Heroku
Sorry about that. It sounds like you're on the free plan which is somewhat underpowered vs Heroku right now. Still, definitely not the experience we hope to provide and I'd love to learn more. Email in profile.
Dumb question I couldn't quickly glean from the website, does Render integrate well with gitlab-ci?

Also while I have you, do you support deploying to Canadian regions?

Thanks!

Render integrates with Gitlab repos, and you can use deploy hooks from any CI provider (including gitlab-ci): https://render.com/docs/deploy-hooks

We don't have a Canadian region yet, but we'll get there!

Thanks!
I recently moved some apps over to Render and I've been loving it so far. Ease of use with Heroku with some "infrastructure as code" style YAMLs (they're called blueprints). Performance is about the same and cost nearly halved.
Care to explain why you like these choices?
I can only speak about render.com as I use for a mix of 10 static websites / Go webapps + cloudflare for DNS and caching proxy.

It sounds prosaic but "it just works".

Specifically compared to Digital Ocean Apps (which I used before render):

* the dashboard UI is better designed and faster

* the builds and deployments happen faster

* similar price (to Digital Ocean, much cheaper than Heroku)

* similar capabilities (attached disks, hosted Postgres, hosted redis) but the velocity seems better i.e. render.com seems to implement features faster than DO

You would think that "well designed dashboard that displays instantly" would be a table stakes in an offering like that, but sadly it isn't.

This article compares the two: https://render.com/render-vs-heroku-comparison
How does render compare to Netlify? They seem fairly similar.
More backend focus - databases, cron, backend apps - while keeping the netlify-experience frontend goal
I wouldn't straight out recommend fly.io. See, part of Heroku's value proposition was their excellent support. I had asked fly.io to delete my account since there wasn't a provision to delete it from their interface and they never bothered to reply and put me in some kind of shadow ban from re-registering with my email.

I mean if this is how you're going to treat your customers, then good luck! I'm yet to try out railway.app and..looks interesting to say the least.

> at the time of acquisition Heroku was still Ruby only

Uhhh... I don't think that's true. There were 3rd party buildpacks available.

(Another ex Heroku person here)

At the time of acquisiton (Dec 2010) the Bamboo stack was the only GA stack, Cedar was in beta which used buildpacks internally but custom buildpacks didn't come to 2012 https://blog.heroku.com/buildpacks

We're big users of Heroku Connect, which has been an incredible product for our use.
As the co-creator of Heroku Connect (originally Cloudconnect), thanks! Its been amazing to watch that space mature in the 11 years since we started that effort, especially with the new crop of reverse ETL vendors.
not really, it's available only in france and it's crazy expensive, we are talking about 115€/month for a container with 4gb of ram, so large that the offer is named 2XL. Wow now 2cpu/4GB of ram is considered 2XL
I like caprover more.