There are various threads discussing this, but I have no way of knowing how up-to-date the information is—the current mix of v1 and v2 information in the docs and community threads makes this difficult. So I’m asking again to see what the current answer is.
Suppose I have:
A) A caching reverse proxy
B) A web application server
C) A web service that handles long-running tasks
A proxies to B, and B makes calls to C. Only A should be publicly accessible.
As I understand it, I can:
-
Run all three processes on a single VM.
-
Create a “process group” that runs each process on a separate VM within the same app. (It is not clear to me how VMs within a process group communicate with one another. Using fly’s internal DNS?)
-
Create three separate apps within a single organization, and use fly’s internal DNS to communicate.
As of September 2023, which of these three options is the recommended method?
I have experimented with option #3, and found that internal DNS is flaky when machines are suspended and restarted (often DNS lookups of .internal addresses fail).
I don’t understand how option #2 significantly differs from option #3.
Option #1 is least attractive, because I need to construct Frankenstein images with all the packages and libraries needed for all three processes; I can’t easily restart just the proxy, etc.
My main concern is choosing the option that fits with the Fly platform’s expected future evolution, so that I don’t have to revisit all this in 6 months.