My team ditched serverless functions. We're better off without them.
I've had to answer many questions about delays in serverless functions that didn't come up with Docker. Serverless doesn't have the introspection necessary to answer performance questions.
What if Docker supported functions? I'd ask what we gain trading a main loop for only bindings. Similar bindings are made either way.
I honestly wish cloud providers would make their core SDKs as easily composable as their serverless offerings.
I do agree with Paul about containers having a greater update surface area, but we think this is also solvable and doesn't need to be a responsibility of the developer either.
There's probably enough there to bootstrap a container version.
AWS drains connections and workloads on container deployments. I set the same rules to scale either.
Containers offer flexibility that serverless doesn't for implementing hot/cold, blue/green, n running with n+1, etc.
So, additional flexibility with the same considerstions.
aws lambda update-alias --function-name myfunction --name myalias --routing-config '{"AdditionalVersionWeights" : {"2" : 0.05} }'What's the difference? Scaling isn't one.
Can I call my Postgres deployment on Azure via AWS lambda?
If you write your Lambda function to put the interaction between the AWS Lambda service at the surface level of your application (i.e. the entry/exit point), and then write your business logic inbetween, you can create a function that is quite easily tranferrable between cloud providers.
The vendor lock in creeps in more around the surrounding services that the cloud provider offers. You can protect yourself from this though by writing good quality hooks that have pluggable backends, e.g. writing/reading to an object store should be abstracted