Hacker News new | ask | show | jobs
by tudorconstantin 1553 days ago
After working for the past ~3 years with a microservice oriented architecture, I can only imagine the horrors of having to work on a project built with lambdas. We're a team of only 2 backend engineers which have to touch up to 4-5 repositories for implementing some features. Orchestrating the deployments of the changes to all those repositories, debugging across all those microservices, having sane rollback strategies for each feature, really brings down the developer experience and speed of development when compared to working with monoliths. I don't want to imagine what happens when one would have to treat every function as a separate entity. Yes, these architectures have their benefits, but for 99% of the projects in the wild the burdens outweigh the benefits drastically: every day, for every feature developed, for every deployment and for every bug being debugged.
3 comments

I’m a strong proponent of microservices but only for one thing - the ability to scale the number of engineers working on a product. If you can abstract out a contract between each service then developers are unburdened to iterate as fast as they can without constant communication overheads.

The idea of a 2 dev org deciding to replace simple maintenance free function calls with authenticated, TLS-secured, retry-able, service-located, rate-limited remote procedure calls (in the general sense of the term) and replacing simple method parameters with serialisation and deserialisation overhead… it’s all just pretty absurd.

The Linux kernel have had 12,000 engineers working on it while still being a monolith.
The consequence of that is that every release is a fairly big deal requiring a lot of coordination overhead among a huge number of people, which bottlenecks how often they can happen. That's fine for a foundational piece of technical infrastructure like an operating system kernel, but Web apps and other forms of continuously delivered software want to release weekly or more frequently, and there's no way that could happen if every release incorporated 12,000 people's work. That is the problem that microservices solve.
Not that I'm super-familliar with Linux kernel development, but that's kind of a special project that has a benevolent dictator and worldwide interest from several industries willing to throw resources at it. I think what you said is sound, but I'm not sure how comparable the Linux kernel is to the way that most for-profit software firms are run. And maybe that says a lot about FOSS.
Lambda =/= microservice. I run my entire company off of a single lambda function and a single Next.js project - best DX I've ever experienced.
You should do a writeup on your blog! I'm curious what your lambda looks like.
Does your project and DX need to scale across multiple developers?
I’ve found AWS’s SAM to be a real pleasure to use (though I’ve only used it a bit), and it would solve the pain points you’re talking about here (basically include all your functions in a single repo with a sam template and accompanying cli that makes deployment and orchestration a breeze). May be worth a gander.