Live data from Hacker News

Microsoft YARP

github.com

121–130 of 153 posts

Re: Microsoft YARP

#121
post #48
post #40

Earlier quoted context omitted.

I see. So it can operate in-process? Could in theory be much faster than nginx out-of-process model.

Why would someone need an in-process reverse proxy? I don't see what an in-process proxy would add that a request routing engine couldn't do. Or is the point that you can now add your reverse proxy configuration as just another project within the same solution?

We use it to proxy request from "modern" part of application moved to .net core to legacy parts of application, that are yet to be converted.

Re: Microsoft YARP

#122
post #75

Earlier quoted context omitted.

The main use case that comes to my mind is when you want to deploy a proxy in an environment where the developer needs full oversight of the proxy internals and doesn’t want to learn the particulars of configuring any given proxy software suite. Additionally, YARP is cross-platform capable, so you can run the same proxy on Linux, macOS, and Windows. NGINX doesn’t even provide that, for example. In terms of customizat…

> Additionally, YARP is cross-platform capable, so you can run the same proxy on Linux, macOS, and Windows. NGINX doesn’t even provide that, for example nginx runs on all three of those platforms. If you mean the binary, this is surely misleading as you just move the burden from getting your platform specific binary to your platform specific .net runtime.

> Only the select() and poll() (1.15.9) connection processing methods are currently used, so high performance and scalability should not be expected.

https://nginx.org/en/docs/windows.html

Re: Microsoft YARP

#123
post #75

Earlier quoted context omitted.

> Additionally, YARP is cross-platform capable, so you can run the same proxy on Linux, macOS, and Windows. NGINX doesn’t even provide that, for example nginx runs on all three of those platforms. If you mean the binary, this is surely misleading as you just move the burden from getting your platform specific binary to your platform specific .net runtime.

NGINX is also more portable. It runs on more architectures and operating systems than .NET/C#. I can literally throw a stick and hit several devices in my office that NGINX runs on but C# does not.

Does nginx have Tizen support?

Re: Microsoft YARP

#124

Earlier quoted context omitted.

The main use case that comes to my mind is when you want to deploy a proxy in an environment where the developer needs full oversight of the proxy internals and doesn’t want to learn the particulars of configuring any given proxy software suite. Additionally, YARP is cross-platform capable, so you can run the same proxy on Linux, macOS, and Windows. NGINX doesn’t even provide that, for example. In terms of customizat…

> The main use case that comes to my mind is when you want to deploy a proxy in an environment where the developer needs full oversight of the proxy internals and doesn’t want to learn the particulars of configuring any given proxy software suite. Yes, when does this happen? That's what I'm trying to understand. You've provided some possible feature benefits to a DIY solution but you're really just trading NGINX inte…

> Yes, when does this happen?

In highly regulated or extremely sensitive industries.

Re: Microsoft YARP

#125

>> We found a bunch of internal teams at Microsoft who were either building a reverse proxy for their service or had been asking about APIs and tech for building one I'm really curious, does Microsoft have a crew of anthropologists walking around to figure out which team is reinventing wheels?

> I'm really curious, does Microsoft have a crew of anthropologists

Quite literally, yes. Microsoft research has (or at least had) anthropologists on crew.

Re: Microsoft YARP

#126
post #90

Earlier quoted context omitted.

> The main use case that comes to my mind is when you want to deploy a proxy in an environment where the developer needs full oversight of the proxy internals and doesn’t want to learn the particulars of configuring any given proxy software suite. Yes, when does this happen? That's what I'm trying to understand. You've provided some possible feature benefits to a DIY solution but you're really just trading NGINX inte…

YARP was not a self motivated product. Engineering groups within Microsoft asked the .NET group to help them with their custom (.NET) reverse proxies. And the .NET group added it to their portfolio. So you are right, it is a very specialized situation, but the key stakeholders who asked, contributed and collaborated with the .NET group are exactly these engineers who previously did a DIY solution.

> YARP was not a self motivated product. Engineering groups within Microsoft asked the .NET group to help them with their custom (.NET) reverse proxies. And the .NET group added it to their portfolio.

This is an interesting take that I think is perhaps naive. Microsoft has a vested interest in pushing .NET as a development platform and can push teams to use the company's flagship programming stack in everything it does. From the perspective of given individual teams within the company this may not appear to be self-motivated but how could it not be, given the driving requirements to use MS-approved technology stacks?

What your comment misses the mark on is what the driving force behind those engineering decisions is. If the decision is driven by corporate guidance to use .NET or else (this is a hypothetical), it's not exactly because the engineers themselves wanted to write something from scratch in .NET to solve a particular well-solved problem.

Re: Microsoft YARP

#127

YARP is yet a another example of how C# is becoming a dominant systems language. The ease with which you can build a tailor-made reverse proxy is pretty amazing.

I guess I have to ask: What exactly is the use case for a tailor made reverse proxy? What customizations do people typically want to offload to the reverse proxy?

A common one are multi-tenant applications where you want to dynamically (depending on data in a database for example) route requests to different places (like docker containers).

The first specific example I can think of is JupyterHub - it handles user management and starting/stopping Jupyter Notebook servers, then provides a reverse proxy for users to access their notebook servers directly.

Re: Microsoft YARP

#128
post #119

Earlier quoted context omitted.

Yeah - whatever language they chose it would be "only available for [that] ecosystem." At some point you've got to pick your home, not like you can write a 100% cross-language framework for anything.

Hopefully one day most devs will share one home called wasm runtime. Although not sure if it applies to this scenario (lower-level code).

WASI? there are already prototypes of running .net in WASI that might make it for .net 7

And WASM is already supported, app size about 1MB including runtime and GC

Re: Microsoft YARP

#129
post #119

Earlier quoted context omitted.

Yeah - whatever language they chose it would be "only available for [that] ecosystem." At some point you've got to pick your home, not like you can write a 100% cross-language framework for anything.

Hopefully one day most devs will share one home called wasm runtime. Although not sure if it applies to this scenario (lower-level code).

[deleted]

Re: Microsoft YARP

#130
post #92

Only available in .NET ecosystem, got excited after I read the title, but forgot Microsoft is Microsoft. "YARP is a reverse proxy toolkit for building fast proxy servers in .NET using the infrastructure from ASP.NET and .NET."

It’s written in C#, probably because they use a bunch of C# internally for this sort of project (who’da thunk it?). That naturally restricts the project to .NET environments. That line could easily have read “for building fast proxy servers in the JVM” or “for building fast proxy servers in node.js” or whatever else, and it would’ve still been just as restrictive.

Still more flexible than the "app" style proxies. And there is ongoing work to allow c export and not just imports in C#. Which means you could make it a library for any language, but of course with your own custom interface since you can't call the C# apis unless you export a function to C.
Post reply on HN