3 ms·
The section about the extra 'wiring' complexity is spot on. I find that it usually takes longer to make a system which uses serverless technology than to make
by jondubois 9y ago
The section about the extra 'wiring' complexity is spot on.
I find that it usually takes longer to make a system which uses serverless technology than to make it from scratch using open source technologies.
It makes development difficult because you can't easily test locally; there are tools that let you run lambda functions locally but it's not exactly the same; not having a consistent
development vs production environment makes things difficult. Testing directly in the cloud is difficult when working in a team because you can't just share a single staging environment because it would always be in a broken state; so you have to split it up into a different test environment for each developer and you may also need to split up service dependencies in the same way when testing/debugging.
It kind of forces you to put everything in a separate service - You basically need a separate deployment pipeline for each developer which is impossible to manage.
Splitting everything up into services which you can't all run locally adds delays to development because, typically, in a real-world system, a single user action will propagate through multiple services; this makes debugging difficult because usually you don't know which service is responsible for a bug before you actually step through the entire code path.
Not being able to traverse through the entire code path in a single debug session is a massive problem; especially in situations in which there are multipe bugs in multiple different services.
To make matters worse, the logging for some services is quite opaque; often you need to raise a support ticket with the service provider and it takes days before someone can tell you what the problem is. The lack of control over the logging can be a huge problem.
The benefits don't outweigh the costs in my opinion.