PaaS vs IaaS
PaaS hands you a deploy button and manages the machine; IaaS hands you the raw machine and the pager. You trade control for chores.
See it
What it is
IaaS rents you raw pieces: a virtual machine, a disk, a network. AWS EC2, Google Compute Engine, DigitalOcean droplets, Hetzner. You get root and you also get the chores: OS patches, the web server, TLS renewal, log rotation, deploy scripts, the pager at 3am. PaaS takes your code or container and runs it: Vercel, Render, Railway, Fly.io, Heroku, Google Cloud Run. Build, routing, HTTPS, scaling, rollbacks, and logs come in the box, and you never see the machine.
Pick PaaS while the product is unproven, because your time is the scarcest resource you have and a deploy button is worth more than a cheaper invoice. Move toward IaaS when you hit something the platform will not do: long-running or stateful processes, GPUs, unusual networking, strict data residency, or a bill that has quietly grown past what a part-time ops habit would cost.
The trap is treating the switch as a pure cost saving. A 20 dollar VPS replacing a 200 dollar PaaS bill still costs you the evenings you spend on certificate renewals and kernel updates. The other trap is lock-in shape: your container moves anywhere, but the platform-specific extras (edge middleware, image transforms, cron, KV, preview URLs) are the part you will have to rebuild by hand.
Ask AI for it
Compare exactly two named options for this app, one PaaS and one VPS/IaaS (for example Render or Fly.io against a Hetzner VPS), using my numbers: '<REQUESTS>' per month, '<BANDWIDTH>' of egress, '<MEMORY>' per instance, '<REGION>', and '<OPS_HOURS>' I am willing to spend per month. If any of those are missing, ask me for them instead of guessing. Give a short table across setup time, monthly cost at those numbers and at 10x traffic, ops work per month, scaling behavior, and exit cost. Then pick one, say why in two sentences, and generate only the winner's deployment configuration: for PaaS the service definition and env var list, for IaaS the provisioning script, a systemd or Docker Compose unit, a reverse proxy with automatic TLS, and a deploy command. Do not produce both. Finally, flag anything in my current code that assumes local disk or in-memory state.