It seems like a lot of this 'serverless' stuff is an excuse for a cloud hosting provider to lock you into their service. There are a lot of proprietary implementations.
There is also a trend of breaking up web application elements into tons of tiny units, which means more maintenance work and thinking about how all the components interoperate.
Admittedly i don't understand the appeal or advantages of this stuff, other than some potential cost savings, but that comes at the expense of a more complicated architecture to manage, and locking yourself further into a provider.
I think it would much be better to write code in a performance oriented language instead, if saving resources is the goal.
I don't think it's just about saving resources and squeezing more performance out of your services. It's about focus on solving business problems over solving technical problems. All of those things you mentioned sound like something that ideally, I wouldn't have to do. I like to create value quickly and spending time dealing with performance issues and and maintenance seems like a waste of valuable time.
Unless you're hosting your own servers, you're already partly locked in, no? If you store your data on a cloud provider then why not also use the higher level abstractions they provide. If you do find issues with them, at the end of the day you still have your low level services and are free to build whatever you want on top of that (for most of the cloud providers anyway).
I hate to say it, but i really don't understand the business case for serverless architecture at all. There are so many good tools for orchestrating servers and dynamically scaling them. I don't understand why they need to be taken out of the picture, unless there is some cost saving involved.
Having a server, even on AWS, doesn't lock you in very much. I can grab my configs and plop them on another server, change the DNS, and get back to rolling in less than a few hours. The only 'gotchas' i can think of is that AWS instances handle certificate generation and have a nice firewall configuration system, but this can all be handled at the command line on any linux box.
If you're dependent on the high level stuff and the provider you're moving to doesn't provide feature X or have any import facility, you're stuck. Which is exactly what your hosting provider would prefer.
Amazon keeps adding more and more of these proprietary things. It reminds me of how Microsoft managed to lock people into their technologies for a long time.
I think it's too early to say much about this.
Maybe the serverless people are right, and serverless tech helps people to build better systems without the need for extra DevOps folk and these small companies will overtake the bigger ones who have pay for and manage their giant IT teams.
Maybe containers and VMs will win because serverless was a false promise and you have to have these giant expensive teams to manage those systems.
I have the feeling the stuff you are talking about, orchestration and scaling, will move into the cloud and people who do their own stuff in-house will burn money and time and lose in the long run to the people who have more money and time left because they didn't do it.
But that's just my opinion and it can be wrong.
You know, i run a pair of servers for one company i also do web development for. We got away from managed servers because it was just too expensive.
I might spend an hour a month on average tinkering on these servers. And both of these servers have to be PCI compliant, so there is a decent amount of work to do, and i have to keep up with security.
This has been my responsibility for over 7 years.
I imagine that when you write an app to work "serverless", you have to write it around the idea of a serverless architecture. It may be worse than that, and that you have to target amazon or microsoft's architecture.
In either case, you are potentially backing yourself into a corner when you develop a new app.
Yes, someone has to be the test hamster for these new technologies.. i just can't see a good reason to tell any of my clients that we should go this way.
I don't think the serverless fad will last long as currently incarnated on AWS. It is too freaking slow for many tasks to have a lambda function that potentially needs an environment spun up (cold start). If the function has enough concurrency it is guaranteed there will be cold starts. If it has too much concurrency then it may just fail because you went over some provider determined quota.
In comparison I can and have created servers that could stand up to 1000 hits/sec per process. And every single one of them responding quicker than with lambda functions, even ones in warm start.
On top of this there is quite a bit of new tooling and deployment dictating best coding practices and modularization within the software development environment. That is usually considered a bad idea. Many of the frameworks are geared really to one language and don't do too well with others. For instance serverless framework is written in node and doesn't do a great job for python based lambda functions that have dependencies on other projects that may be local to an organization. It has no concept of or support for a python virtualenv.
And how the heck do a reason about a pure serverless backend whose each component can take anywhere from 50 ms in overhead latency to many seconds on any random invocation that hits it? I don't know how to do this.
Seems like you're talking about FaaS and not serverless in general.
I know Lambda is seen as the very incarnation of serverless, but actually it's just a tiny part of it and many services have serverless properties (S3, API-Gateway, DynamoDB, AppSync, Cognito, etc.) and those usually don't have the latency problems you mention.
What I am talking about is the serverless hype that everything should be serverless in the app stack. That is clearly highly problematic. For a fuller read on this I recommend theregister.co.uk/2018/12/19/serve...
which points to a good study from UCB at www2.eecs.berkeley.edu/Pubs/TechRp....
I am not at all against these various services. What I am against is yet another set of baseless solve everything silver bullet claims. I have seen organizations go so overboard on "no servers of our own" that they produce much more complicated and inflexible stacks requiring understanding of a dozen different technologies or so just for the plumbing bits and not having to do much in house. This on a project that would have been fairly trivial to do most of in a more conventional manner at lower money, time, aggravation, lost opportunity cost. They are not alone.
It's just a quesion of risk distribution.
If you think it's harder to learn these technologies and easier and more cost efficient to manage your own infra, could be that you're right. I know many people who think that way.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.