Lambda is just nodejs but different. It's an ec2 server running nodejs at a discount if you preform a special AWS dance.
What use is that to me over just writing nodejs? Nodejs as it is can run unmodified on Azure, AWS, digitalocean and a ton of other providers.
lambda invites a work moat to migration. Maybe you use it in a way that doesn't entangle you. Guaranteeing that takes more discipline than I can ascribe to your average team that's willing to use AWS Lambda.
If AWS tripled its prices tomorrow, how long would it take you to migrate? Is it instantaneous? Does lambda linearly correlate with increased migration times? What if aws-sdk dropped support for all non lambda applications. Are you screwed?
Even if you don't subscribe to it, the aversion should be obvious.
You just said it- the advantage is the discount. I don't have to pay for EC2 instances to sit idle and lambda is more finely grained than EC2 based auto scaling.
It really doesn't take any more discipline to separate out your Lambda interface from your code logic than it dors not to have business logic in your controller. I treat the lambda interface method like I would treat a controller. My business modules don't know anything about lambda - just like they don't know anything about http for REST services.
For us, to move from lambda, it would be a matter of putting all of our lambda functions in one big solution and creating the appropriate REST endpoints.
Our consuming code wouldn't change at all for lambdas triggered by http. We use Consul + Fabio for service discovery and URL lookups. We would just change the service registrations.
We have a few message based triggers, but all of our messaging is abstracted into a library. We have a hybrid lambda, raw executable system. When an "event" is triggered it either triggers a real SQS message or the method submits a job to run on one of our app servers using Hashicorp's Nomad (what to do for an event is configured in Consul). I chose Nomad because it gave us the flexibility of not having to use Docker containers but we can when we need to.
I would love to move to AWS Fargate so we could have serverless longer running processes with Docker containers.
I'm the dev lead so I see most code that gets put into production. I try to both tie us to AWS services as tightly as possible and put facades over the services to allow portability.
Lambda is just nodejs but different. It's an ec2 server running nodejs at a discount if you preform a special AWS dance.
What use is that to me over just writing nodejs? Nodejs as it is can run unmodified on Azure, AWS, digitalocean and a ton of other providers.
lambda invites a work moat to migration. Maybe you use it in a way that doesn't entangle you. Guaranteeing that takes more discipline than I can ascribe to your average team that's willing to use AWS Lambda.
If AWS tripled its prices tomorrow, how long would it take you to migrate? Is it instantaneous? Does lambda linearly correlate with increased migration times? What if aws-sdk dropped support for all non lambda applications. Are you screwed?
Even if you don't subscribe to it, the aversion should be obvious.