News for hackers. Stuff that matters.
Re:The Costs of Microservices by bob1029 on Monday October 30, 2023 @02:08PM (#38073302)
Absolutely. This is how we operated when we were at the peak of our tech showmanship phase. We had ~12 different services, all .NET 4.x the exact same way.

This sounds like it could work, but then you start to wonder about how you'd get common code into those 12 services. Our answer at the time was nugets, but we operate in a sensitive domain with proprietary code, so public nuget services were a no go. So, we stood up our own goddamn nuget server just so we could distribute our own stuff to ourselves in the most complicated way possible.

Even if you are using all the same language and patterns everywhere, it still will not spare you from all of the accidental complexity that otherwise becomes essential if you break the solution into arbitrary piles.

Re:The Costs of Microservices by ValtteriL on Monday October 30, 2023 @04:10PM (#38075036)
Can't you share them via shared libraries in .NET?
Re:The Costs of Microservices by jcmontx on Monday October 30, 2023 @06:21PM (#38076765)
YMMV but I think you can only do that if you have a monorepo with the shared library and all the microservices
Re:The Costs of Microservices by Atotalnoob on Monday October 30, 2023 @06:46PM (#38076995)
You can, but it’s just kind of hinky, you end up relying on a specific path for the shared library
Re:The Costs of Microservices by lmm on Monday October 30, 2023 @08:36PM (#38078165)
Does .net not have a way to run simple private repository like Nexus? Over in JVM-land that's a basic thing that you'd be doing anyway.
Re:The Costs of Microservices by smaudet on Monday October 30, 2023 @09:48PM (#38079082)
It's the difference between drag-dropping a reference between "projects" or whatnot in your monolith project, or coming up with a publish pipeline after which your merged code gets into the repo so that other people can use it, if you have three projects in three checkouts that all have to be coordinated and merged in order so that you don't accidentally break your environment and worry about security and and and....

One is much simpler than the other. Artifact management is surprisingly complex, it only looks like it works great while you aren't managing many versions and acting more like a monolith, just spread across repos/deploy points.

Re:The Costs of Microservices by lmm on Monday October 30, 2023 @10:59PM (#38079712)
> It's the difference between drag-dropping a reference between "projects" or whatnot in your monolith project, or coming up with a publish pipeline after which your merged code gets into the repo so that other people can use it

You already have that pipeline for release/deployment though, don't you? (And it's already hooked up to your SSO or what have you).

> if you have three projects in three checkouts that all have to be coordinated and merged in order so that you don't accidentally break your environment and worry about security and and and....

It's the same as any other library dependency though, which is a completely normal thing to deal with. The cost of separating your pieces enough that you can use different versions of a library in different services is that you can use different versions of a library in different services.

I'm skeptical about microservices as a deployment model, but I'm absolutely convinced that code-level modularisation and independent release cycles for things that deploy independently are worthwhile, at least if your language ecosystem has decent dependency management.

Re:The Costs of Microservices by briHass on Monday October 30, 2023 @11:19PM (#38079864)
The only way package feed complexity works -- and really microservices in general -- is to be absolutely fastidious about backwards compatibility of your packages and as open as possible with transitive dependency versions.

Nuget does provide mechanisms for obsoleting packages, so it's reasonable to enforce that new packages should allow for a few versions worth of backwards compatibility before deprecation and finally pulling the plug.