Network Address Translation (NAT) is normally used to put one IP in front of a
LAN and handles mapping responses to outgoing requests back to the original
user application. The NAT device is in essense an IP proxy.
This same idea can be done in reverse so that an IP is a front end for a
farm of servers on a non-public network, say a 192.168.x.x net. This moves
all the work down to the lower level network drivers and routing.
A number of commercial products use this is a basis for load balancing. By
checking for various metrics of suitability, the front end can translate
to the most appropriate back end server. Operating on this layer insulates
the process from the complications of parsing the request path and mapping
the request to the best server determined by any particular functionality.
On the other hand, maybe we want to use some of these higher level
determinations for our mapping on the back end.
Again, having a single machine on the front end constitutes a single point of
failure.