I'm just a one man developer looking to make my way through this developer world. I'm limited on both time and money. So, when I go "hey, there are all kinds of cool and interesting things you can do with 'web' technologies, I think I'll check it out." This presents some problems as, ideally, you need a somewhat decent server. Now, I have the resources and know how to build my own dedicated server. But, after a couple months of hard grueling work, it will all fallpart the minute it becomes publicly accessible and become a blackhole that sucks all my time up as I try to maintain it. Why? Because building and maintaining all the infrastructure need for a server is both hard and time consuming. I'm looking to develop, not become a 24/7 server admin.
Of course I can pay for a server hosting provider and that will take care of alot of the burden. The draw back with this solution it is a colossal waste of money. Again, I'm a one man developer whose just looking to make cool and fun 'web' things. I would be paying to host a full time server that will get at most 10% usage per month. Aw, but theres AWS with there whole thing of paying for only what you use. Surely this must be a much better solution.
As I'm learning, no it's not. Why is that I can't say "hey aws, when there is an incoming connection start the ec2 instance or the db instance and if no more requests of come in over X time, shutdown the instance." I'm not an enterprise customer. I'm ok if when I go to make a request to my db it takes 5 or 10s to come back because it has to start up. Again, we are back to paying for a resource that will get maybe 10% usage and the same goes for ec2.
Now, yes, enterpise customers have multi million/billion dollar contracts that make Amazon filthy rich and customers like me are so incredulity microscopic next to that. But, isn't money, money. I mean how hard can it really be to implement something like this for Amazon and if it means more paying people using aws, why not go for it?
As aws lambda functions will inviability be brought up in the comments, I would like to get head and address it. Yes, lambda functions is the best solution and should be used. But, in reality, sometimes it's not feasible use as I'm limited by the tools I have access to. Because as I single developer, I didn't have resources to just make what ever tool I need or to convert existing ones to work with lambda functions.