Security
Isolation
Many people work on the same app in Soffi at once, each in their own Workspace. Isolation is what makes that safe: whatever happens in one Workspace stays there.
One environment per Workspace
Each Workspace runs your app in its own private, isolated environment. If your app uses a database, that database runs inside the environment too, so every Workspace has its own. Nothing about it is shared with other Workspaces: not the running app, not its data, not its address. An experiment that corrupts data or crashes a service affects only that Workspace, and the rest of your team keeps working.
What a Workspace can't reach
A Workspace's app can't reach:
- Other Workspaces, including other Workspaces of the same Project. One person's app can't connect to anyone else's.
- Soffi's internal network. The app runs your code, and that code can't reach the services that run Soffi, apart from the single connection Soffi uses to keep the Workspace's code in sync.
- The machine it runs on, or the private cloud network around it. The environment runs your app on its own and can't open connections to the host underneath it.
The one exception is the Workspace's own Data Twin. Each app can reach its own Data Twin and no other, so two people in the same Project each work against their own Data Twin. If Soffi can't tell with certainty which Data Twin belongs to an app, the connection is refused rather than guessed.
The app can still reach the public internet, so it can call third-party services with the keys you give the Project. See Environment variables and keys.
Enforced by the environment
Soffi puts these boundaries in the environment itself rather than leaving the app to respect them. They're in place before a Workspace's environment accepts any traffic, and if they can't be put in place, the environment doesn't start. While it runs, Soffi rechecks them on a regular schedule and puts back any that have been removed.
What isolation doesn't change
Isolation is about what your app can reach inside Soffi. Who can open a Workspace is a separate question, answered by your Organization's membership and roles. And because previews run against a Data Twin with seed data by default, an isolated environment doesn't hold your production data unless your team gives the Project a key or an address that brings it in. See Data handling.