I built a startup on AWS and have advised dozens of startups doing the same.
This is a practical thread with advice I wish I'd been given early in my startup journey.
"😩 But, MVP and market fit and AWS-is-too-complex-for-early-stage-startups and you-should-Heroku and..."
Yeah, this thread isn't for you. 😅
This thread is aimed at folks who are already convinced that building on AWS is best for their startup.
1. Leverage infrastructure-as-code (IaC)
You should define all of your AWS infrastructure with some form of IaC.
There are myriad benefits covered in countless articles on the web, and I won't rehash those here.
Aside from the primary value prop of IaC, there's a supremely practical benefit:
It's much more productive. And I don't need to tell you that startups need to be productive.
Building out your infra in the AWS console is painful (and slow).
That's not necessarily an indictment on AWS and their console team(s). The console serves a purpose, and serves it (mostly) well.
The main issue with the console is that you're navigating around to pages that are focused on a single service, for the most part.
If you're building anything worth building, you're going to be tying multiple services together.
That's much easier to do with IaC.
There are exceptions to this "single service" paradigm in the console, and I know we'll continue to see progress made to support common use cases and related services.
But, you're still going to be better off building with IaC.
There are so many IaC options today.
1st Party (AWS):
• CloudFormation (JSON, YAML)
• CDK (TypeScript, Python, Java, C#, Go)
• SAM (JSON, YAML)
This is admittedly much easier in the early stages of building, but you'll gain a lot when building with "cloud-native" services.
"how can we use AWS/GCP in ways that we couldn't possibly do better ourselves? This is called 'servicefull' architecture – using your provider's cloud-native services to replace server code." @zachkanter
"If you're using AWS/GCP to run vanilla servers, you're building software to work the same way it did when companies ran servers in their office 15 yrs ago. That should be a wake up call about your technology choices..."
This might require learning new skills and practices—it's an entirely different way of architecting and building your application—but, for those that make the plunge, there are huge advantages.
AWS is a fantastic way to host your web projects, but it can be intimidating if you're accustomed to the simplicity of Netlify and Vercel.
Why bother with AWS?
There are a few reasons:
💰 Cost efficiency
🎯 Greater control
⚡ Higher performance ceiling
A (practical) thread.
While AWS is made up of an overwhelming number of services (200+), you only need to dive into a few of those services to effectively host your web sites and apps.
In this thread, I'll cover three of those services: S3, Route53, and CloudFront.
S3 (Simple Storage Service)
If you're building apps/sites of the JAMstack variety, S3 will be one of the first services you should get familiar with.
It's pretty simple. It stores "objects" in "buckets".