Again, just opinions …
“I skate to where the puck is going to be, not to where it has been.” — Wayne Gretzky
And while there is only one Stanley Cup, there are countless “rewards” in the software industry involving an un-trackable number of “pucks”. So as an individual one has to eventually chose which “puck” is the most relevant. And ultimately even educated guesses at future outcomes will often still be incorrect.
I’m in a situation where I’ll need to keep some code in “black boxes”… meaning on servers we control.
And right there you are already giving up on the greatest benefit of serverless, being able to delegate the overhead and cost of infrastructure provisioning and administration to the vendor. If your are already paying for building and running your own infrastructure then you could easily be in a position where benefits of serverless are outweighed by the disadvantages.
In a monolith all the complexity is hidden on the inside (and if you don’t mind your bounded contexts, you’re going to be in trouble), micro-services manifest your (chosen) bounded contexts (hopefully you chose wisely) but relocate some of the complexity to service interconnections (monitoring, etc.). Serverless creates (exposes) even more “interconnection complexity” between the user functions and vendor services - and it is possible to create a Serverless Monolith because here again, bounded contexts are logical boundaries, not “real” ones.
NDC Olso 2017: Serverless - reality or BS - notes from the trenches (1:00:05)
Lynn Langit is a (vendor-sourced) serverless advocate. She mentions that serveless release and version control tooling still have a long way to go.
Complexity is just being shifted around. While complexity of infrastructure management is now the vendor’s problem there still is the configuration complexity of managing the interconnections between the functions and the foundational vendor services (storage, authentication, etc.) which themselves may have customer specific service configurations. So while serverless may reduce the set of operational concerns for the customer, the remaining concerns will now likely fall onto the customer’s development team.
The other issue is understanding your vendor’s offerings in order to get the best value. Worst, you have to know the competitors offerings as well because they may have a better deal for one part of your architecture. For example aCloud uses Firebase on Google, API Gateway, S3, DynamoDB and Lambda on AWS and Auth0 as well.
Finally serverless has a tendency to make the frontend more complex because of being “server-less” there is some pressure to move some of the orchestration/coordination effort (traditionally handled by backend servers) to the frontend. In some ways the rise of serverless is reminding me of the rise of 4GL tooling and thick clients in the 1980-90s.
I can see this paradigm replacing current server models.
Outright replacement would surprise me - eating into the market, sure. It’s yet another approach that makes different tradeoffs. One target market is the fast growing startup, with a relatively simple system (where the release and versioning complexities are less of an issue), not wanting to pay for idle time, not wanting to be distracted by infrastructure concerns but still wanting to deal with uneven demand on their service (monitoring the costs is still essential). Example: movivo
GOTO 2017 • When should you use a Serverless Approach? • Paul Johnston (40:53)
The other target market is the large corporation wanting to try out something quickly without interfering with (or waiting on) day-to-day operations (a “startup project” of some description).
GOTO 2017 • Serverless + Modern Agile: A Match made in Silicon Heaven • Mike Roberts (46:53)
But is it possible to integrate serverless architecture with Elixir/Phoenix currently?
I see the BEAM of having an entirely different value proposition. Its was designed as a foundation for building fault-tolerant, scalable, soft real-time systems with requirements for high availability. As such it seems more suited for a “do more with less approach” to get the most out of your infrastructure and devops cost. Serverless seems to be more about “change your functionality at will at any time” (whatever the consequences) while you (mostly) only pay for the resources that are in active use.
So by all accounts serverless will be “big business” for some and there will be successful ventures that use serverless. But in the end it’s just yet another different way of doing things. Getting in on serverless could be lucrative but ultimately one is at the mercy of the major vendors (and some businesses have no problem with that) who have been fuelling the hype behind it.
Personally I’m not sure at what scale in-house serverless with products like OpenWhisk makes sense (unless you are intending to sell your unused capacity to others) because it seems to me that complexity is piling up in the wrong place (which could create a wonderful opportunity for tool vendors just like back in the SOA days
).