New Heroku Dynos Get 2.5GB RAM
devcenter.heroku.com
devcenter.heroku.com
Had pricing ever been an issue for any of you?
In addition to uncompetitive pricing, the "add-on" architecture is itself expensive and inflexible. Redis feels artificially limited, and the scheduler's timing options are, i kid you not: Daily, Hourly, Every 10 minutes.
To people who know linux hosting: avoid heroku. To people who don't know linux hosting: spend some time gaining a serviceable linux hosting skillset.
the company i work for runs a rails app and we've ported almost everything over to running with the clock gem instead of with heroku's scheduler.
1. You still have to worry about your systems, as Heroku has its own outages, not to mention the other pieces of your infrastructure like DBs, queues, etc.
2. Architecture flexibility goes way down, as vertical scaling isn't a real option on Heroku (and a surprising number of problems can be easily solved in the short term by just throwing big iron at them).
3. The premium you pay on the hardware you're using starts to add up, especially when you're in the realm of "let's solve this problem in the short term by throwing machines at it."
Of course, that's not to say you can't use a hybrid approach of, say AWS + Heroku to solve some of these, but it's a bigger hurdle to clear if you've outsourced all your systems work to Heroku from the beginning. You suddenly find yourself having to figure this stuff out at some level of scale, vs growing it organically and learning as you go.
Pricing can be great if you're using a high-throughput language - I had a sustained 8 - 12k requests per second across 8 dynos years ago with nodejs.
It was mainly for throwaway projects. But you never know your throwaway project may start getting traction. And before you realize you may end up owing hundreds of dollars to Heroku.
In other words, you may be paying for "dyno hours" (wall-clock time) when you don't need to.
Especially for smaller projects deploying them on heroku instead of worrying (and spending time on) about setup, deployment, patches, ... is an attractive option.
I don't know if this is an "aha" moment for you -- it might depend on how much you enjoy provisioning servers yourself -- but when it works it's pretty cool.
I suspect there are people who are running apps "themselves" on heroku that would otherwise require them to pay a server administrator.
In my (limited) experience: not by a long shot. Heroku setups may seem locked in, but GAE is obscene. No outgoing HTTP requests, no normal DB, basically everything is GAE specific. Heroku is not the most generic thing out there, but, by God, it's still miles better than GAE.
The tradeoff is super interesting: using their framework allows them to hella optimize the instance for you, but you're pretty darn stuck with it :/
Also, GAE can now run docker and also connect to MySQL running on Google Cloud infrastructure, which is a separate offering.
So in GAE too, you just do it.
Most of that would just be setting up the new one and migrating the data across.
You don't have to significantly alter apps (in that stack) to be heroku-compatible.
I can burn through 1GB of Redis cache really easily; on Heroku, that's $200 a month. On AWS a cache.t2.small instance is $16 a month. The same for SQL space, disk storage, etc., once you're past a certain point Heroku becomes just unbelievably expensive.
That gets you git push deployment, and runs just fine on DO. You're still responsible for hardening your VPSs, but DO has some fairly good guides for that too.
Most large tech companies with an infrastructure/DevOps team are trying to create an "internal Heroku" - and, at best, coming pretty close.
Digital Ocean will sell you a VPS (essentially a machine) and grant you root-level access to it. You can run whatever you want, and deploy and manage it however you want.
Heroku will sell you a dyno (essentially a worker process) and grant you access to a set of deployment and management tools. You push your application code up to Heroku, and it automatically sets up the front-facing web server, the database, the cache service, etc., according to the add-ons you've selected. If you need to scale up, just purchase more dynos.
For complex apps, Heroku might not meet your needs and you might want some VPSs instead. In terms of price, though, you'd need to include system administration man-hours when comparing.
It's all kind of opaque.
On the flip side, if you have the money but lack time, knowledge, or desire to manage all that complexity just pay Heroku to do it for you... or any other PaaS for that matter.
I've never used Heroku, but long ago I reached a point where dealing with hardware, services, networking, server racks, etc. got really boring. Today, I expect computing resources to be little more than appliances where I can effectively say "Here's the code I want you to run. Make it happen." and not have to even think about firewalls, scalability, failover, backups, software conflicts/compatibility, security updates, and a hundred other things. If you're managing all that yourself, you're basically doing a job that a computer ought to be doing on your behalf based on a specification you've provided.
Not having to care about deployment that much.
As engineering talent becomes more scarce and expensive, the appeal of such a solution ironically increases.
It's 5x the cost of Elastic Beanstalk... 250 / (0.067 * 24 * 365 / 12) = 5.11 -- though this is misleading because the closest instance was an m3.medium, which has 3 vcpus and 3.75gb of ram. You can also get a major discount if you go reserved.
It's 0.68x the cost of App Engine F4 instances (the biggest available).. 250 / (0.20 * 2.5 * 24 * 365 / 12), though those only have 1G of ram, so that's assuming you somehow buy 2.5 of them :p
It's 2.2x the cost of AWS Lambda... 250 / ((0.000001667 + 0.000002501) * 10 * 60 * 60 * 24 * 365 / 12) = 2.28, though this is misleading because it'm adding up a 1.5gb instance and a 1gb instance. Also it's likely much cheaper as Lambda only charges you for used time, and almost all traffic loads are TOD / DOW dependent.
https://blog.heroku.com/archives/2013/1/9/password_hijacking...
Also, you could get pretty solid protection and faster response time with something like unattended-upgrades
https://help.ubuntu.com/community/AutomaticSecurityUpdates
I think the value proposition mostly lies in the autoscaling, but seems like a waste in aggregate since most apps never hit any sort of scale.
Also: as long as traffic spikes remain a thing, autoscaling isn't wasteful... The alternatives are your site going down or buying bigger servers than you need in the first place...
(That's not to say I approve of heroku though, the foundation it supplies is horrible, and missing basic things like [gzip'd asset transfers](https://stackoverflow.com/questions/12326191/any-way-to-serv...)...)
Everyone here is right about the costs. It's very expensive. Especially compared to AWS and DO. But how much is your time worth to you? If I have to spend an extra $300 a month on hosting, that's fine--as long as I'm saving more than, say, 3 hours of time not doing sys admin. The dynos are expensive, but you don't have to provision machines and setup autoscaling groups. The database is expensive, but backups and upgrades take only minutes. The addons are all expensive, but... you get the idea.
I've run into limitations of Heroku and we now use AWS as well. I really like AWS, but it's a lot more work. The documentation takes more effort to read, initial setup is more complicated (AMI, IAM roles, Elastic IP, key pairs, etc). AWS is cheaper and the product is great and it does things Heroku can't, but I spend much more time on it.
The first paragraph in Wikipedia is a concise explanation. https://en.wikipedia.org/wiki/Heroku
But hey, 512k is good enough for anyone, Bill Gates once said.
edit: If I was doing something memory-intensive or performance-intensive, I wouldn't be on Heroku anyway.