4 ms·
> I don't know what that library is right now Are you serious? In which language do you program that you don't have to use multiple libraries daily? You just t
by ratww 5y ago
> I don't know what that library is right now
Are you serious? In which language do you program that you don't have to use multiple libraries daily? You just talked about NPM.
In your example, the C# could output DLLs that have functions that can be called by the Java code. This can give the same encapsulation you get with your multiple services example, including separate deployments, different repo, different language, etc.
You could also use different processes. Please tell me you know what an executable is...
> Meanwhile I could set up the separate repos/microservices by the end of the day
That's because someone set it up for you, not because it's faster.
In your hypothetical scenario of "I needed to let a remote team add some functionality to my, say, Spring backend but they really prefer to write C# and have their own CI/CD system" you didn't mention that "…but we already have a fast way of setting up micro services".
> It is unfortunate that the "micro" in "microservice" is often misunderstood*
It's not, you're using the term loosely. "Two services" do not make a micro service architecture.
Sorry to be blunt, but I'm getting the feeling you're not talking out of experience, but rather repeating popular talking points.
- foobarian 5y ago> Are you serious? In which language do you program that you don't have to use multiple libraries daily? I said I don't know which library would let me make C# method calls from a Java Spring runtime, presumably in the same process. Do you? Feel free to share a link. > That's because someone set it up for you, not because it's faster. Yes, the whole point was to come up with a concrete example for the sake of argument, and see how we can accomplish it in practice. We're not writing academic papers here, the fact that this functionality is widely available is a good thing. > It's not, you're using the term loosely Yes, me and 95% of the industry. Again, it's unfortunate but here we are.
- ratww 5y ago> I said I don't know which library would let me make C# method calls from a Java Spring runtime, presumably in the same process. Do you? Feel free to share a link. You don't need a library for that, it's is part of the language. Java can call code from native libraries, C# can export native functions. It can also be another process. [1] > Yes, the whole point was to come up with a concrete example for the sake of argument, and see how we can accomplish it in practice. We're not writing academic papers here, the fact that this functionality is widely available is a good thing. The problem is that you moved the goalposts. "I need to interoperate with C# code" is very different from "I need to interoperate with C# code and my company uses microservices and that's the only thing I know". You can't claim something is automatically worse just because you're ignorant about it. > Yes, me and 95% of the industry. Again, it's unfortunate but here we are. Nope. There are exactly zero companies claiming to use microservices when they have exact two services. And it's not about size, by the way, it's about different architectural patterns. [1] https://www.baeldung.com/jni https://www.baeldung.com/jni
- foobarian 5y ago> You don't need a library for that, it's is part of the language. Java can call code from native libraries, C# can export native functions. It can also be another process. Having never done this, I believe you. I am still skeptical of how quickly/effectively you could set up a CI/CD system and the module repos to deploy to a monolith. I wonder how the type interop works there (equivalent of OpenAPI-based code generation). > The problem is that you moved the goalposts. "I need to interoperate with C# code" is very different from "I need to interoperate with C# code and my company uses microservices and that's the only thing I know". That's maybe a bit unfair. There are a lot of microservice shops, but I haven't heard many who do this Franken-monolith thing. Remember that infamous microservice dependency graph from Uber? I guess Facebook was famous for doing a monolith but I don't know if it was purely PHP or not. > You can't claim something is automatically worse just because you're ignorant about it. I can if the metric is availability/familiarity in the industry, but OK. > Nope. There are exactly zero companies claiming to use microservices when they have exact two services. And it's not about size, by the way, it's about different architectural patterns. I don't know, my experience is people like to say they use microservices but they just have a service-oriented architecture. Meanwhile I never ran across an organization that does something like npm modules and goes way crazy with granular services. I don't know, maybe they are out there.
- ratww 5y ago> That's maybe a bit unfair. There are a lot of microservice shops, but I haven't heard many who do this Franken-monolith thing. Remember that infamous microservice dependency graph from Uber? I guess Facebook was famous for doing a monolith but I don't know if it was purely PHP or not. Your original example was that you "needed to let a remote team add some functionality to my, say, Spring backend but they really prefer to write C# and have their own CI/CD system". I am telling you the classical way of solving this problem. You don't get to change the constraints ("I already know how to setup X") after an answer just to say the answer is wrong/worse and expect not to be called out on it... Also: It's not a Franken-monolith, dude... it's just a library. Have you ever used ImageMagick to resize images from your microservices? Maybe made a request using libcurl? Maybe had to use a SQL driver that was native, maybe Redis? A NPM package with native code? That's exactly the same thing... I literally don't know of a single language that doesn't use those things... Plus, there is a HUGE difference between what you asked and a Uber/Facebook scenario. You seem to be under the impression that what I'm suggesting is a replacement for real microservices. No, it is simply a solution for the problem you described. You described a problem and said you don't know how to solve other than with X. I'm giving you Y. I don't understand what's the issue here. > I can if the metric is availability/familiarity in the industry, but OK. Sure, but you can't use yourself as a benchmark for the industry if you're that unfamiliar with something that basic. > I don't know, my experience is people like to say they use microservices but they just have a service-oriented architecture. Meanwhile I never ran across an organization that does something like npm modules and goes way crazy with granular services. I don't know, maybe they are out there. Again, there is a humongous difference between "we're doing microservices" or even "we have a service oriented architecture" and your "I need two things to interoperate".