I'm starting a new SaaS project and everyone tells me I "must" use Kubernetes (K8s) for scalability. But looking at the complexity of YAML files, ingress controllers, and persistent volume claims, it feels like total overkill for a team of two. Should I stick with something simpler like AWS App Runner or Google Cloud Run, or will I regret not having the "K8s power" when we hopefully hit 100k users?
3 answers
Don't fall into the "Over-Engineering" trap. For a two-person startup, your biggest enemy is time-to-market, not the theoretical limit of your infrastructure. Google Cloud Run or AWS Fargate can easily scale to 100k users without you ever touching a master node or a worker pool. You can always migrate to K8s later once you have a dedicated DevOps person. Focus on your product-market fit first. I've seen too many startups fail because they spent three months perfecting their Helm charts instead of talking to their customers.
What kind of stateful requirements does your app have? Are you running your own databases in containers, or are you using managed services?
The "lock-in" is minimal if you keep your app containerized. Moving a Docker image from Cloud Run to a K8s cluster later is actually quite straightforward.
Exactly, Rebecca. As long as you don't use provider-specific proprietary APIs inside your code, you can stay portable while enjoying the serverless ease.
We're using managed RDS for the database, Joshua. The app itself is mostly stateless. Based on what Cynthia said, I think Cloud Run might be the winner for us. It seems much easier to set up a CI/CD pipeline for a container image without having to learn the entire Kubernetes API surface first. Do you think there's any major "vendor lock-in" risk with going serverless early on?