How Raftt Works?
To help you get to know Raftt, we'll explain what happens under the hood in the system's most important flow - spawning an environment. Later, we will also briefly explain the core concepts of using Raftt's environments.
This is a concise explanation, more info is available under Key Concepts.
Spawning an Environment
When the user spawns a new environment using
raftt up from the context of a git repo, the following actions happen -
- Raftt's CLI finds raftt.yml - Raftt's configuration file.
- Using the address defined in the file, it sends a request to Raftt's backend to prepare an environment.
- Raftt backend creates a new isolated environment and performs the following operations:
- Builds the environment controller responsible for orchestrating the environment's resources - containers, services, etc.
- Builds the dev container - a container that is added to the environment to mimic the role of your machine in the dev process.
- Runs the warmup script (if it exists) to prepare any prerequisites and dependencies required for building and deploying the environments.
- Build and deploy the environment according to the definitions in the env definition file(s).
- Seed the databases (if it exists) with the data required for development and testing.
- Finally, The remote environment is up and running. Now, you can do your tasks, like developing, testing, and more.
Under the Hood of a Running Environment
Even after the environment has spawned, our job is not yet done. We make sure that your work is as easy and seamless as possible. We keep the remote environment synced with whatever you do locally by following your Git workflow and by syncing file changes from the repo folder. The port mapping between your machine's localhost and the containers in the remote environment allows accessing the env using any tool you are used to working with locally. We even enhance the containers to allow easier access and debugging.
Environment Security and Isolation
In our paid offerings, each customer deployment is fully isolated from others at the network, cluster, and instance levels. We have had internal security reviews and an external pentest verify that deployments are entirely separate. Each deployment is entirely customizable, and may have unique instance types, resources, and network setup.
In the open source offering, which is the default unless a different host is configured, only open source repositories may be cloned, and due to extensive caching and performance optimizations certain objects (container images for example) may be shared between users. Each environment is isolated at the network level, and certain resource utilization limits are in place.
If you'd like to further evaluate Raftt for your company's usage and the open source offering does not fit, please contact us.