Answers to our most frequently asked questions

How can my team benefit from Preview Environments?

With on-demand Preview Environments your team can test new features in isolation in a clean, production-like environment. This significantly improves the efficiency with which your team can test new features by reducing the number of variables present. When you test your branch in a "dirty" or inherently unstable environment the numerous branches of untested code that have been deployed there can negatively impact the feature you are wanting to test. This makes it more difficult to determine the cause of your problem. Uffizzi Preview Envrionments help you overcome this challenge.

My team tests locally. Why do we need Preview Environments?

1. Preview Environments more closely resemble production. Uffizzi deploys images built from your CI pipeline—similar to the ones deployed to a production environment. Uffizzi Preview Environments also include a full network stack, including a domain and TLS certificate.
2. Preview Environments provide a quality gate to help keep dirty code out of your main branch. Teams can test new features or bug fixes in clean, isolated environments.
3. Public preview URLs allow every stakeholder on a team to review features and bug fixes. This helps shorten the feedback loop between developer and reviewer/tester, resulting in faster releases.

How is Uffizzi different from Gitpod, Codespaces, etc.?

Gitpod, Codespaces, and similar tools provide development environments hosted in the cloud. They let you open code editors like VS Code in your browser and make it easy to standardize development environments for your whole team. They can also provide developers access to more powerful machines than typically available on a laptop or desktop.

Uffizzi, by contrast, is downstream of these tools—i.e., Uffizzi Preview Environments are intended to be used once your code is ready for review. When added to your CI pipeline, Uffizzi will create a Preview Environment after a pull request is opened. Uffizzi works with whatever development method you choose—whether local or with cloud-based development environments like Gitpod or Codespaces.

Uffizzi is most useful for peer review, team leaders, QA, or anyone testing branches before they're merged with a shared branch such as main or master.

How is Uffizzi different from GitHub Actions (or other CI provider)?

Uffizzi does not replace GitHub Actions or any other CI provider. Uffizzi previews are meant to be added as a step in your existing CI pipeline after your container images are built and pushed to a container registry.

Can Uffizzi integrate with my existing CI/CD?

Yes. You can use Uffizzi CI or your existing CI solution. Uffizzi can either build from source and deploy your images or pull your build artifacts directly from your container registry. See our documentation for details.

What about my database?

All services defined by your Docker Compose file are deployed to Preview Environments as containers—this includes databases, caches, and other stateful services. This means that even if you use a managed database service like Amazon RDS for production, you should use a database image in your Compose (See this example that uses a postgres image from Docker Hub).

If your application requires test data, you will need to seed your database when your Preview Environment is created. Here are two methods for seeding databases:

1. (Recommended) Have your application perform a data migration on start-up. You can add a conditional to do this only if the database is uninitialized.
2. Bundle test data into the database image itself. This method is only recommended for small datasets (< 50MB), as it will increase the size of your image and deployment times.

What do you mean by "environment"?

Uffizzi Preview Environments are deployed on Kubernetes. Uffizzi performs a translation from Compose to Kubernetes, where your application is deployed as a Pod to an isolated Namespace within a cluster. This abstraction helps improves deployment speed by reducing  the infrastructure footprint. Uffizzi also creates a unique hostname for each Preview Environment and provisions a TLS certificate. Each Preview Environment exposes one socket that can receive HTTP traffic. Every container defined by your Compose can communicate with each other on an internal network via localhost. Application instances that belong to different Preview Environments may only communicate via the public Internet. See the self-hosted installation guide for more architecture details.

How can my services communicate?

Just like when you run `docker-compose up` locally, all the `services` defined in your Compose share a local network and can communicate via `localhost`. Application instances that belong to different Preview Environments may only communicate via the public Internet.

My project is not a web application. Will it still work on Uffizzi?

Probably. In addition to full-stack web applications, Uffizzi also supports microservices, command-line tools, binaries, and stateful services like databases. In general, if your application can be containerized, Uffizzi can probably support it. See our documentation for details.

Does Uffizzi support monorepos/polyrepos?

Yes. Your CI pipeline will typically include a series of build/push steps for each of the components of your application. Uffizzi just needs to know the fully qualified container registry URL for where to find these built images.

Can I use Uffizzi with Netlify/Vercel?

Yes. While Uffizzi supports full-stack previews, some users who already leverage frontend platforms like Netlify or Vercel want to add Uffizzi previews for their APIs/backend. For help configuring this scenario see:
- Netlify + Uffizzi
Vercel + Uffizzi

Is Uffizzi open source?

Yes! Check out the repository on GitHub. Give us a star ⭐️ while you're there. 😀