

Ask HN: How should I pick a cloud provider (AWS, Google, Azure)? - tburger

When a startup is choosing which cloud platform to build on, what are the most important things to consider? Cost? Features? Support? What are the strengths of each cloud provider?
======
phantom_oracle
If your startup doesn't have an assumed hit-rate in the hundreds-of-thousands
(or you are not in some computationally-intensive industry), ask yourself why
you need to build on the so-called "cloud"? (which is meant for "scaling").

If you don't need the scale, don't build for it. It is like part of the last
10% of the 20% incremental changes you need. Focus on the 80% for now.

Buy yourself like 5 DO (or some VPS) servers, spin up your Docker (other easy-
devops tool) containers and push your code.

Then focus on the really hard part, marketing/sales.

Note. I've also heard that AWS is quite expensive (comparatively speaking).

------
100m-question
Rackspace is cheaper and offers great customer support. The only pros is
there's a lot less software tools compared to AWS but the basic things like
orchestration and autoscale is almost comparable.

~~~
taf2
Is it really cheaper if you consider reserved instances on aws?

------
nmjohn
Are you funded? Are you part of an accelerator that gives you access to
extremely large chunks of free cloud credits? How compute heavy is your
workload?

At this time, you will always be paying up for cloud services. That being
said, you are paying for something, not just fluff, that many people - myself
included - find quite valuable.

Dedicated hardware is great, I can get a xeon 12 core E5v2 with 32 gb of ram
and a guaranteed 300 mbps bandwidth for ~$100 / month - which the bandwidth
alone would cost many multiples of that on AWS. However, what if a hard drive
goes bad? Or a PSU blows? Or something else which knocks that server offline?
How quickly can you get another one up and running?

With AWS/azure/google infrastructure, you'll have built your application to be
fault tolerant of the underlying hardware and a new instance can be
automatically spun up. You also can scale instantly - with dedicated hardware
it'll be a minimum of hours (if your lucky) to days to get more servers
online. If you get an expected wave of traffic - from a favorable blog post
for example - on any of the mentioned cloud providers your app can
automatically scale and provision servers without you clicking a button.

The other important cost to consider is time - what is your developers time
worth? Instead of fiddling with the database server, you can pay amazon a
premium and just use RDS. Instead of setting up a distributed queue so
different components of your app can communicate, you can just use SQS.

However at the end of the day the answers to all these questions are going to
be unique for everyone and different situations call for different solutions.
If you needs lots of compute power and need it to be as cheap as possible -
using dedicated hardware will be your best bet, unless you can architect a
solution with spot instances.

As far as AWS vs. azure vs. google is concerned, I've used all three and AWS
provides the best service at the most competitive price. Azure is probably
better if you're using windows servers. Google's cloud offering offering is
underwhelming - and is quite expensive for what you get.

If you are still very small - digital ocean is a fantastic option and can save
you a lot of money until you need the reliability from a higher quality
provider.

~~~
taf2
The other big issue people usually don't mention or consider when discussing
dedicated hardware is that not only will it take longer to add capacity, but
it is also a risk every time you add servers you risk the entire network that
server is being added too. Unlike a cloud environment, adding servers to a
dedicated environment is not necessarily going to be as well practiced - so
errors are more likely... These types of errors are pretty bad too e.g. All
servers offline kind of bad. We had this happen two very bad days followed and
now I can only recommend aws with reserved instances and multiple regions.

------
NhanH
I just want to note that of the three providers you mention, they're really
not providing equivalent services (GCE is definitely much different than EC2,
so does Azure and AWS ecosystem). So depending on your stacks, it _should_ be
an obvious choices (I can't say, because I don't know what you are doing).

Now, between Digital Ocean, Linode, Softlayer etc. (which are doing more of
the same things), things got a bit muddier.

------
eddie_31003
I think the biggest thing is just to avoid Paralysis Analysis.

If you're already committed to a specific technology, it may be best to
continue down that path. As an example, if you're building .Net Applications
it may be advantageous to move to Azure.

However, it you're looking to move fast and pivot when necessary you may want
to look at AWS or Rackspace. I think those providers are pretty reliable and
offer a lot of options.

------
davismwfl
As for choosing a provider, remember the cloud is more about horizontal and
dynamic scaling. If your application has a predictable or consistent load the
cloud is likely not be the best nor the cheapest solution. We had a client
move off the cloud because they were mature and their growth was mostly
predictable and usually followed a 3-6 month sales cycle that would mean there
was plenty of time to allocate hardware to scale when needed.

I have used AWS and Azure professionally, only played with Google. Right now
AWS is the most mature, stable and well documented. We have only had 2 clients
come off AWS out of about 25ish we put there. We have had 4 out of the 5 leave
Azure. That speaks volumes to me, one is maybe we suck at Azure, but I really
feel it is more that Azure just hasn't matured far enough along.

I am sure plenty of people have had good experiences in Azure and Google, but
to me it requires more time and resources to manage and resolve issues because
both are less mature. AWS takes a little time to understand but it just works,
and if you follow their recommendations you will rarely have any major issues.
It isn't that things don't fail in AWS, because they do, but if you follow the
basic design principles you won't have major issues from them. While in theory
this is true with Google and Azure I just haven't seen them be as stable or
mature, but I am sure that will change. Personally if I was re-evaluating
today, I would look harder at Google since I haven't used it in production
yet, but Azure wouldn't even be in the conversation right now.

As for what to consider, AWS can get expensive so you have to manage it
properly and closely. Setup weekly cost reporting so you can see how you are
trending and properly use a CDN where possible to reduce bandwidth charges
etc. Also, properly select your storage in EC2 to make sure you aren't paying
for unused space needlessly, same with CPU. AWS has some tools to help show
you where you might be wasting dollars which helps too. All this really
applies to all cloud environments too, not just AWS.

Features AWS wins hands down, but remember if you build your product depending
on their services you have created a solution that is not extremely mobile
without some code changes. Specifically this mostly happens with services like
DynamoDB, SQS, not necessarily EC2 or RDS.

Support, AWS has rocked every time I have had to use them. Azure was also
responsive but honestly seemed just as lost as we were sometimes, which didn't
inspire confidence for me.

------
jordsmi
From my experience AWS can be more expensive, but it is a joy to use. Once you
get it down everything just syncs together perfectly and it is extremely easy
to scale when the time comes.

~~~
UnoriginalGuy
With reserved instances I'm not even sure it is more money. It is more money
if you just spin up on-demands all of the time.

------
atian
AWS seems to have their security down. I haven't heard of a single major
incident from them.

Meanwhile Linode, RamNode, etc.

