Sometimes you can add complexity to the whole stack by adding a new shiny layer that brings down complexity where you care most about it, in your user-facing UI/UX layer.
Developers can handle complexity via code much more efficiently than users operating a site or app...
Also, some of the nice developments of the recent explosion of serverless/as a service stuff, is that you can mostly try stuff for free, be happy on the free tier if you don't need scale, and use that scale when you need it without much hassle but paying the overprice of their fat margins.
Also you should probably have an ejection plan in case scale + external provider becomes too expensive, you should always have a nice idea on how to run your stack if you need it...
Developers can handle complexity via code much more efficiently than users operating a site or app...
Also, some of the nice developments of the recent explosion of serverless/as a service stuff, is that you can mostly try stuff for free, be happy on the free tier if you don't need scale, and use that scale when you need it without much hassle but paying the overprice of their fat margins.
Also you should probably have an ejection plan in case scale + external provider becomes too expensive, you should always have a nice idea on how to run your stack if you need it...