Moreover what if Heroku goes out of business? Then they’re f’d. Hosting on k8s, using Terraform or whatever would give them a lot of automation and provider independence.
I’m guessing I’m being grayed because I’m suggesting Heroku might go out of business? Ok let me explain. That is one scenario, it’s unlikely but there might be other similar scenarios that pose risk being tied in to one providers stack. DDOS, TOS issues, simply out growing them, Heroku themselves having TOS issues with their cloud. There are almost weekly posts on HN of “this major service is down” and “that major service is down”.
I understand a scrappy startup needing to focus on growth and using the most convenient tools, but once you’ve been around a bit it’s time to think of boring stuff like what if stuff goes wrong. It might be technical, security related, business related or political. Eliminating SPOFs is wise.
Happy for you to downvote this but if you do please drop a sentence to say why I’m wrong. I’m happy to be proved wrong it helps me learn.
Your comment is not only bad, but outright dangerous. This is a company that is burning through hundreds of thousands of dollars on hosting and staff with no business model yet. The primary risk to this company is not their host going away; the primary risk to this company is that they won't figure out how to make money. Worry about optimizing your serving infrastructure after you have a business that you know is worth saving.
Cool thanks it’s nice to hear the story behind the downvote. I agree you’d need to be flying their plane so to speak to know the reasoning behind their business decision. I still forget there are businesses that burn through that much cash looking for product market fit etc. it’s not the European way so I often don’t correlate spending 100k/m on hosting with fighting to stay alive. Anyway I was sort of making a general point about lock in. It may not apply to this company.
"I understand a scrappy startup needing to focus on growth and using the most convenient tools"
Well, there's your answer. As a scrappy startup, you can't afford to plan migrations you aren't planning to execute. It's that simple. Heroku is not going away (they're owned by salesforce) and they have a good reputation for uptime.
The "what if" worst case scenarios have to be weighed against other business concerns. And this company appears to have done a good job of navigating such things.
Heroku mandates the use or 12Factor apps, which makes it much easier to migrate. They support docker as well. Pretty much every app I write I usually starts on Heroku and migrate later if the client / traffic needs it, and it’s always been seamless. Most apps have Dev/test on Heroku with a staging and production on AWS, and because of the 12 factor principles, which also work on Beanstalk / ECS / normal servers it’s never a problem.
> How would Terraform help you move between cloud providers when all of the provisioners are specific to the cloud platform
You don't move. You load balance across the clouds prior to the disaster.
You have your stuff work on both. I mentioned K8s because you could set up a managed cluster of that on a few cloud providers, and most of your TF will be the same in terms of setting up k8s, with some differences on how you set up those clouds.
This might be overkill for many people though so see below...
> If you’re a small startup, the least of your business risks are one of the major cloud providers shutting down.
I agree. a major cloud provider wont shut down....
... but they might shut YOU down.
Why? Billing Issues / TOS / 'Suspicious Activity' [0] / etc.
Now do you mitigate for that? Not necessarily but it is worth considering if you need to.
At the preparedness extreme you have a probe that detects the problem and flicks you over to cloud 2. Or a load balancer as I mention above (which would probe). That's probably too much for a scrappy startup.
But a middle ground is you have tech that is easy to move. Doesn't have to be k8s/TF but maybe a bash script you run on a new debian VM or whatever. Then you phone one of you awesome developers at 3am and tell them to migrate to AWS or whatever, and because it's easy they'll figure it out as they go, most stuff running by 3:30am and everything dandy by 5am.
The other extreme is you are tied in heavily to specific stacks by specific providers, and it take X hours/days to get back online again.
I'm not recommending to anyone what to do here - but I am saying consider the black swan events. You might consider them and say no I want my devs adding feature X so we can sell more. Fine, but I think when you can spend $100k a month on cloud you can probably afford to think about it a bit.
[0] Source: one of the major cloud providers cut all our services for 12 hours due to "suspicious activity". Turned out later it was due to a reused IP we were given from a pool that someone else f'd with. They gave us some credits to be nice afterwards.
You don't move. You load balance across the clouds prior to the disaster.
Again, this is a small struggling company, do you really think they should be spending resources having a backup plan just in case AWS has a multi AZ or multi region outage? Is that really their largest business risk?
Also do they really want to go from the simplicity of Heroku all the way to k8s?
The only things that a company at this level needs to be concerned about are reducing burn rate, finding a way to better monetize, and getting another round of funding.
But, I seriously doubt that a company spending 100K a month would be on their free support plan and not have a business or Enterprise support plan where they wouldn’t have someone to call at AWS with a much smaller SLA than 12 hours. We are a small company and I can just open a support ticket and get someone on the phone/chat immediately.
And if you are a small startup, you aren’t just using AWS with a few VMs. You’re probably also using a lot of other managed services that aren’t VM based. If you are hosting everything yourself. You might as well be at a colo. If you are using your cloud provider as an overpriced data center hosting VMs, you’re probably doing it wrong.
I'm pretty sure that worrying about your hosting provider going out of business is one of the least important things to think about when you have a startup that's still trying to build its business model.
And seriously, not everything has to be hosted on k8s, not everyone has to use Terraform, it's ok running your application on Heroku, DO or some other hosting. If Heroku goes out of business, you'll have a few months to preapre a migration plan. It's ok to handle it then, right now there are probably more important things for them to do.