How projects work
What a project contains, the machines it runs on, and how its services share them.
A project is one app and everything it needs. It runs on machines of its own, in the locations you choose, and nothing from other projects or other customers runs on them.
What a project contains
A project can hold any number of web services, workers, cron jobs, Postgres databases, key value stores, storage services, volumes and load balancers. It can also have one firewall.
The project's Services page lists them in sections by kind, each with an Add button. Every row shows a coloured status dot and word, when that status last changed (for example Live · 37m ago), and the service's size and machine on the right.
Machines
A new project has no machine and costs nothing. You choose its first machine on the project's Resources page and can add more there later. See Machines.
- Every web service, worker, cron job, database and key value store runs on one of the project's machines. You choose which one when you create it.
- The services on a machine share its memory, CPU and disk. Each is guaranteed the memory you set on its slider, and gets the same share of the machine's CPU and disk. See Memory and sizing.
- Web services, workers and cron jobs can also use memory the machine's other services aren't using. See Use idle memory.
- You can add a service only if the machine has room to guarantee its memory.
- Builds run on the web service's machine and borrow memory it has idle. See Memory and sizing.
- Storage services don't use a machine. Their buckets live outside the machines and take none of their capacity.
One private network
The services in a project reach each other over the project's private network. Your web services connect to the project's databases and key value stores on internal addresses that aren't reachable from the internet. To reach a database from outside, turn on its public access or connect your own devices with private access.
This works the same when the project has machines in several zones: the connection details don't change. See Machines in several zones.
Projects are isolated from each other. Nothing in one project can reach another project's services.
Geos
Each machine has its own geo, chosen when you add it. A machine stays in its geo. You can change it to another size in the same geo, and to run services somewhere else you add a machine there.
The project diagram
Under the service sections, the Services page draws a diagram of the project:
- Internet (your visitors) at the top.
- The project's load balancers under it, and the firewall when it protects a load balancer.
- The machines side by side. Each shows its name, status, CPU and memory, and the services on it: the firewall's copy, then web services, then workers and cron jobs, then databases and key value stores. A database's or store's standby appears on the machine it runs on.
- Storage beside the machine its services run on, to its right, level with the services.
- Volumes under the machines, each under its database.
Lines show what reaches what. Visitors reach a load balancer, the firewall or a web service. Each web service links to the databases, stores and storage it's connected to. A line is green when both ends are working, red when one is down, and grey while one end is starting or stopped. A dashed line runs through the project's encrypted tunnel between zones.
Dotted lines join services that share something:
- A worker or cron job hangs off its web service by a dotted line. It runs that web service's code with its connections, so the lines to the database, store and storage are drawn once, from the web service.
- A dotted line joins a database or store to its standby.
Each card has an i button that opens its details: status, size, the machine it runs on, and what it connects to and is reached from. A machine's details show its location, size, specification, price, how much of its memory is allocated and everything that runs on it.
The diagram refreshes every 30 seconds.
What a project costs
A project costs the monthly prices of its machines plus a monthly fee for each service in it. A machine is billed from when it's ready until you remove it or delete the project, including while it's stopped. See How billing works.
The project sidebar
| Page | What it's for |
|---|---|
| Services | Every service in the project, an Add button for each kind, and the project diagram. |
| Athena | Build and change the app with Athena. |
| Environment | Variables for the project's services. See Environment variables. |
| Networking | The project's private network: addresses, private access, connected networks, the fixed outbound address and traffic rules. See How networking works. |
| Resources | The machines. Add, change, stop, start and remove them, and see how each one's memory, CPU and disk are shared. |
| Settings | The project name, and deleting the project. |
The maintenance page is a project setting, but you turn it on or off from any web service's Settings.