Fargate (with Firecracker/Docker) is hellishly complex and forces you into all sorts of AWS BS, first of which is it can't run without some sort of orchestration layer like EKS or ECS.

To deploy on ECS, the simplest option, means that you have to create a private Docker registry, sync base images from docker.io you use, set up IaC, set up a deployer and user identity, create a multiple subnets to allow redundancy, set up health checks, and I didn't even write down the half of it.

If you want a simple enterprise CRUD interal tool, its crazy. And the WORST thing, is that it doesn't have persistent disk, so you either are forced to use slow and expensive EFS or buy into AWS's expensive managed database systems.

And every update to your app goes through a k8s style 'sync image-drain old servers-create new ones-switch over once healthy cycle'. Which has a tendency to fail for mysterious reasons, oh and its undebuggable, and should you notice that an env var is set up incorrectly, you can't just fix it, it means a whole deploy cycle.

I wouldn't wish that stuff on my worst enemy.

In contrast, if you want okay DX, you either go with Lambda, and manage your own EC2s.

Half of AWS's offerings exist to work around the arbitrary limitations they put on their services, as even this thing (as others have correctly noted), comes with this weird 8 hour limit, but even that's far easier to work around (for stuff like running a simple server), than having to deal with the other stuff.

ECS/Fargate is annoyingly complex but you can have Claude or whatever you prefer crap out some terraform to set most of it up in a few minutes. We did that for a recent project and it worked well enough that nobody complained... much. Still, the redeploy / app update scenario required some fiddling.

Still, it does feel overly complicated. Google's "Cloud Run" is way simpler.

(Lambda also has its own DX issues.)