Hacker News new | ask | show | jobs
by benmmurphy 3572 days ago
This is kind of offtopic but what is the attraction of using Heroku over using EC2 directly now. I remember back in the day when EC2 didn't have RDS and Elasticbeanstalk Heroku was an attractive option because you could deploy and scale without needing to do any kind of system administration.

But now EC2 is offering managed databases through RDS and elastic bean stalk gives you git style deployment similar to Heroku I don't see what Heroku is offering other than another point of failure and another set of security problems. It looks like Heroku uses linux containers for isolation. So not only do you have to worry about someone attacking the underlying EC2 VMs Heroku uses but you have to worry about the tenants collocated on your Heroku VM attacking you through the linux kernel as well.

10 comments

There is much more to Heroku than managed database and git-based deployments. For instance, recently they have seriously improved the CD experience with Pipelines, Review apps and GitHub sync. They also have pretty seamless integrations with hundreds of providers (email, logging, search, monitoring, ...) in the form of add-ons. You get some basic metrics on your application.

And if security is a concern, or/and you want your dynos to talk to each other, they now have Private Spaces (https://www.heroku.com/private-spaces).

Simply said they are taking the "managed services" experience to a whole new level imo.

Plus, you may not care about that, but they actually have a UI/UX team that can design beautiful AND usable dashboards.

(Note: I don't work at Heroku, just a happy user)

True, and that's why I stuck to heroku for a long time.

But, in the end I realised I can replicate most - if not all - of it with docker cloud and github. Most CI services support github anyways, so that's also covered.

And it's significantly cheaper, for my case we have 90% price reduction - paying only for instances + docker cloud.

Not connected with any service.

This exactly. It essentially takes care of all the setup for me, plus the CD and provider add-ons are incredibly easy to install and setup.

I basically outsourced my cloud platform developers.

How does Heroku's CD experience compare with AWS CodePipeline?
I'm using Heroku right now and have thought about switching to EC2 as it would save me a bit of money. But the reason I haven't is simply time. Heroku's Pipelines feature, integrated with GitHub, means I get review apps and automatic deploys on merge, just by clicking a few buttons. Now I know this is completely doable with AWS but the time to set it up and switch would be more than it's worth right now.

I don't see Heroku as a very long term solution for us but for the time being, while still a one-man tech team, it just means one less thing I need to deal with. Until I do ...

It's still significantly easier to get up and running and keep a system up and running on Heroku than the AWS equivalents.
Elasticbeanstalk is a huge mess when you look at its guts. Deployments aren't any better than Heroku either.
I wrestled with Elastic Beanstalk 10 months ago for 2 days and had to give up in the end. Every deploy was dog-slow. And I was trying all kinds of things, imagine the frustration. Only certain versions of software are supported, though I downgraded just to test EB. But I still couldn't get it running in the end.

I can't recall a single time I had a problem deploying to Heroku, including the first deploys. Heroku is lightyears ahead of EB. Speaking of deployment, I might try Convox sometime in the future.

OTOH you can use RDS with Heroku, just be careful to have them in the same region.

EB supports docker deploys now, which helps with the version stuff, though can create it's own difficulties. True that EB deployment is very one-function though. Tacking anything on is hacky and gets thrown behind the scenes, so is hard to track and audit
I wrote up a pretty long blog post for Codeship that generally explains it: https://blog.codeship.com/exploring-microservices-architectu...
Speaking from the perspective of someone getting small projects off the ground, the value of Heroku (and similar) is that they help you stay focused on dev rather than ops.

In your example of security, you take an increased risk due to attacks on shared services, but I'd suggest that only a small fraction of "production" apps can field as qualified security teams as Heroku can provide... so if Heroku's customers all moved to EC2 there'd be an increase in badly managed and unpatched instances.

For sites already using Salesforce, Heroku Connect is quite a time saver. It handles the two-way sync between Salesforce objects and Heroku Postgres for you.
It's not a time saver, unless you are small and one developer works on both sides of integration. Integration through database is an antipattern, because it makes apps strongly coupled and fragile and building an app on top of Heroku Connect database adds extra management and maintenance costs, required to keep both sides in sync.
It's definitely an antipattern, but if you're unfortunate enough to be on Salesforce it certainly beats writing in Apex (which also exposes you to the underlying object schema anyway).
Simple. For me, I have a dozen apps running on heroku, and they are all on the free tier. The amazon free instances require credit card and only last for a period of time. I've had mt heroku apps running for years.

It makes spinning up and trying an idea very fast.

For the projects that end up having lots of users, I move to GCE or AWS

I use it when I don't want to spend time with servers or if the thing I'm deploying I don't trust - can be easily exploited. Like recently deployed a phantomjs service and well I'd rather not be concerned about the security implications of running a web browser on a server