I am reviewing options on how to break down and consolidate WFS requests across multiple backend servers. The client would connect to a single endpoint, but then depending on their Query or POST parameters (mainly Layer/Table name), these would be processed by different endpoints on different backend machines. Sometimes the incoming request would have to be processed in parallel on a couple of backend machines (many layer names in one request). From what I understand I am looking for some sort of a Reverse-Proxy.
Because the WFS Feature (and other Operations) Requests need multiple formats, such as XML/GML or GeoJSON, I need to be able to nicely stitch together responses from underlying services into a single response body. From each such backend response, I need to extract part of the XML or JSON that I am interested in and merge/consolidate into the response body. So I am not interested in plain response concatenation, but also a bit of on-the-fly processing too. This is so that for the end-user all looks like a seamless WFS Endpoint.
I want this so that I can get granular control over resources/servers dedicated for processing of particular Layers/Tables.
What solution would roughly suit the above? Is nginx the right choice for such custom breakdown/consolidation? Or should that be a nodejs app? This component should be very scalable to handle a high throughput of requests. I did wonder if Azure Function could do the work, but I read it might be better for smaller loads.