Having isolated environments for feature development is a common desire among developers. The request for separate environments for each pull request is becoming increasingly crucial. Usually, reliance is placed on Kubernetes and complex workflows to manage these needs, but this solution can be costly and complex to maintain. In our talk, we will explore an alternative approach to creating separate development environments for each pull request, without using Kubernetes. We will utilize containers, a virtual machine, Nginx, and an Ansible playbook to achieve this goal. The lifecycle of these environments will be closely tied to the lifecycle of our pull requests, from creation to synchronization, to resource destruction.
We will address a specific case study, analyzing the experience of the SUSE “Trento” team, which has adopted this solution for its remarkable simplicity while simultaneously addressing various trade-offs.
We will have a live demo where we’ll try the same approach for a generic web app built with Golang, going through the entire procedure step by step to ultimately have our ephemeral environment for pull requests up and running!
Everything will be available open-source and will serve as an excellent starting point for any web app.