Using hosted solutions (can we please stop saying cloud?) can save a lot of initial costs.
The important thing is you need to devops from the start. You need to design your base so it can be easily ported to another provider or your own. Resist the urge to use AWS or Google specific offerings.
Every large shop I've worked at has been in the process of moving off hosted solutions to save money. But they typically got to where they were thanks to being able to quickly stand up servers.
There are tools like Terraform that are suppose to make this easier, but often I ended up fighting it so much I started writing my own:
http://penguindreams.org/blog/bee2-wrestling-with-the-vultr-...
Hiring one dev ops person who can build infrastructure with code can get you really far when trying to save hosting costs early in a startup, plus it will cut down on technical debt later.
Before I moved into security, doing devops as a day gig and consulting, I heard this repeatedly from clients who would bring me in after they already had 8, 10, 12 developers; "we wish we had hired for devops sooner".
You wouldn't not provide your devs with a solid workstation, development tooling, etc. Why would you not provide them with an efficient CICD pipeline to enable them to have the highest development velocity possible?
Back up your stuff. Probably good to have two servers and have backup versions of your service ready to go on there in event of a disaster + a place to restore your S3 backups in to.
I'd say it makes no sense to buy your 32gb, 16-core single point of fail, waste $40/mo and half a day setting it up and then have to keep it running yourself when you can easily spin up an API in API Gateway/Lambda that dumps data into dynamo/simpledb and front it with a static site in S3. That setup scales well enough to be mentioned on HN without getting hugged to death and is kept running by someone else. And if it is, literally, free for the first year, how is that not a no brainer?
You make a valid point about credits, but after one year you are hit with a huge bill. Hiding the costs of your infrastructure isn't always a good idea.
Why not buy 3 servers in different data centers for $120 a month. Is that enough redundancy for your infant startup? Why do you need to pay $100 month for a single 4gb, 4 core VPS from Amazon when you can get 38 cores, 120gb and 16tb disk dedicated servers for the same price?
That's the thing, it's really not much of a bill if you do it right. Aside from possibly the S3 bandwidth bill, which could easily be avoided by using something like Netlify, nothing in that setup I described will get prohibitively expensive until you reach significant scale. Yes, EC2 is expensive compared to other providers. So don't use EC2. You can build a startup on Amazon's managed services for a lot less and you can build in a way that's pretty easy to get off when the time comes. Just make sure to build in the proper adapters around your business logic. It's not hard to write code that works equally well under Lambda and Express and I assume you can do likewise for Java, C# and Python if you'd prefer to use those runtimes.
There are certain classes of startup that don't make sense in the cloud...as others have mentioned, if you've got heavy storage or egress requirements, cloud quickly gets very expensive. But for the majority of startups, particularly B2B, that's not the case and there's ways to build in the cloud that are damn close to free, both in dollars and ops resources. There's a group of technically-minded people who I believe are addicted to managing their own boxes. They got comfortable with doing it back when it was required and now don't want to learn a new way of doing things. But that new way really is faster and cheaper for most small businesses. And if people take some time to experiment with Serverless, Apex or some of the other tools that have sprung up around Lambda/Cloud Functions/Azure Functions, I believe most will see the virtue in moving on from self-managed servers for most workloads.
4 cores 8GB RAM 160TB disk
for ~$36/mo.
Here are the places I'm talking about: INIZ (iniz.com) (I currently use them, but they don't have the bes tprice)
https://cc.delimiter.com/cart/dedicatedcore-vps/
The last two I am thinking of switching to soon.
OVH's SoYouStart has 4c/8t (Xeon E5-1620v2) + 16GB DDR3 ECC + 2x2TB HDD and unmetered 250Mbps bandwidth for $34.99/mo: https://www.soyoustart.com/us/essential-servers/ (and there are a bunch of other options if you're wiling to go to $42).
Online.net has a Xeon D-1531 (6c/12t) + 32GB DDR4 ECC + 2x250GB SSD and unmetered 300Mbps bandwidth for 29.99 EUR/mo: https://www.online.net/en/dedicated-server/dedibox-classic (and again, more options slightly higher)
Hetzner's serverbidding has a Xeon E3-1245v2 + 16GB DDR3 ECC + 2x3TB HDD and unmetered gigabit for 33.61 EUR/mo: https://robot.your-server.de/order/market
There are other options around too, these are just the big, well known ones.
I had no idea renting entire dedicated servers was so cheap (and came with all those other things as well) -- makes me wonder why VPS is even a thing since if you go the KVM route you have to set up everything yourself anyway... What am I missing?
That's an odd kind of colocation. Typically you'd buy a machine outright, colocate it and maybe sell it when you're done.
> makes me wonder why VPS is even a thing since if you go the KVM route you have to set up everything yourself anyway... What am I missing?
VPS are much smaller and are typically used by people buying on the very low end of the market, people who won't pay $40/mo for a server. They're also much easier to find in places like the US. There aren't many budget dedicated server providers in the US like there are in Europe.
Typically cost efficiency looks something like this: owning DC < colocation < dedicated server < VPS < Cloud
But also, the speed and ease with which you can change your infrastructure looks something like this: Cloud > VPS > dedicated server > colocation > owning DC. There's a tradeoff to be made.
Intel Core i7-2600 2x3TB HD 16GB DDR3
Right now for $40/mo you could get: Intel Core i7-4770 2x240GB SSD 32GB DDR3
[0] https://robot.your-server.de/order/market
Edit: Just a note with my server and I expect most if they have 2 hard drives you have the option of running in RAID1 or Raw (Maybe RAID0 was an option but I can't remember)
Once you get to the point where your cat photo sharing startup cannot be offline for more than 1 minute and so needs geographic failover with scaling load balancing your making enough money to pay for it.
Makes no sense to pay thousands of dollars to handle one request a minute and save you running "apt-get install mysql nginx" + spending half a day configuring it