My advise would be exactly opposite. Dont EVER use serverless container use kubernetes instead if you need scale or not.
1. Use GKS/EKS/LKE/DKS. dont try to setup kubernetes cluster in your server by yourself.
2. It's very simple to setup deployment, database etc. it will take a week of a decent engineer to setup your application in kubernetes cluster - end to end.
3. LKE/DKS is super cheap compared to Heroku.
4. Use github actions (free) and docher hub ($5 month to build your container images) and its very easy, all you need is a weekend.
5. IMPORTANT: It's foolish to architecture your application to fit into serverless container.
I run a quite successful SRE consultancy based on exactly this advice. You don't need all of the features of K8s. You do want enough of them that it's worth going straight to it.
Why the paid [docker] hub recommendation if already using GitHub Actions? Its container registry has a free tier too (I assume there's a limit but so is there for Actions).
Docker Hub is all-you-can-eat with regard to image storage; GitHub's container registry is metered based on storage, and last time I tried it (over a year ago) it was also really hard to clean up old images.
Yeah, my immediate reaction was "and that's why Docker Hub will either start charging more or go out of business, both of which will be rather disruptive to your business".
Does it not have paid tiers too though? Like Actions (which you suggested as free) also increases as you need more minutes.
(On the other side, Docker Hub is I think a lot more if not completely free if the underlying repo is public? I know I have a few low use ones and don't pay a penny, anyway.)
I suppose my point really is just why suggest paying for image storage intially/before CI, they can both be free.
We did hit some magical limit on storage and transfer. And we where a paying customer. $250 or something. No warning, no emails, they turned off our our accounts. Hence no deployments. Support was silent.
Now we use quay.io and a self hosted harbor docker registry.
Not OP but web apps are probably an exception to the comment. While running a web app is within Kubernetes capabilities, there are better solutions for that specific use case.
Obviously, the details will vary somewhat based on the web app. A simple static site with occasional HTTP POST/PUT to server will have somewhat different requirements than a streaming media site (like say, Twitch).
In the case of the former, if building in AWS, I’d choose:
* Route53
* CloudFront + S3
* API Gateway + Lambda
* DynamoDB (or RDS, if necessary)
* Terraform + [Terraform Cloud | GitLab | GitHub Actions]
* Cognito (if necessary)
A website probably wants the CDN distribution, routing, and caching that Kubernetes doesn’t provide. I mean I think there are some Kubernetes @ Edge services, maybe?, but in general, Kubernetes for a website is somewhat overkill/like bringing a bazooka to a knife fight.
> In the case of the former, if building in AWS, I’d choose: * Route53 * CloudFront + S3 * API Gateway + Lambda * DynamoDB (or RDS, if necessary) * Terraform + [Terraform Cloud | GitLab | GitHub Actions] * Cognito (if necessary)
Sounds like an overkill for “a simple static site with occasional HTTP POST/PUT to server”. I’d say, get a VPS for $5/month, run your python server there with local SQLite DB. Maybe put it behind free Cloudflare if you expect HN-frontpage-level traffic.
1. Use GKS/EKS/LKE/DKS. dont try to setup kubernetes cluster in your server by yourself.
2. It's very simple to setup deployment, database etc. it will take a week of a decent engineer to setup your application in kubernetes cluster - end to end.
3. LKE/DKS is super cheap compared to Heroku.
4. Use github actions (free) and docher hub ($5 month to build your container images) and its very easy, all you need is a weekend.
5. IMPORTANT: It's foolish to architecture your application to fit into serverless container.