rembrembdocs

We recommend that you create one app, with one or more machines, for each customer you have. You’ll gain a lot from this:

A pattern where a single application has machines for all customers is technically possible, but you’d lose the benefits of load balancing, and it would be challenging to make it resilient. Plus, our tooling is not really designed to list thousands of machines per app, so you’d get weird API behavior in some places.

Isolated networks

Each Fly.io organization gets an isolated network that connects all machines in the organization using Wireguard. This is described in more detail in our private networking docs. This generally means that one can deploy, for example, one app for each service, and they will be able to connect to each other using the appropriate hostnames (.internal or .flycast) as explained in the document.

However, at application creation time, a --network parameter can be passed, to create a custom private network for that application. This subnet will not be connected to the organization’s, meaning this application will be isolated from others (although it can still provide a public internet-facing service as configured in fly.toml).

The custom private networks document details a few ways an isolated app can talk to other applications in a controlled manner, including: