Ephemeral Environments - a Powerful Tool for Efficient R&D
December 12, 2022
Several weeks ago we came back from KubeCon NA 2022 in Detroit. Lots of takeaways from our first conference, but more on that in a [separate blog post](https://www.raftt.io/post/kubecon-na-2022). One of the oft-discussed topics amongst both sponsors and attendees at KubeCon was Ephemeral Environments - self-contained deployments for a specific use, that can be trivially torn down and replaced.
The reason this is such an interesting subject for so many people is because ephemeral environments are extremely valuable - they can accelerate R&D, improve cross-team and department collaboration, and increase quality. However, they are very hard to get right, with many organizations achieving only some of the possible benefits, and at a high internal development and maintenance cost.
I am drawn to this area over and over again because of my experience at Meta (then Facebook), where I saw firsthand how much time was wasted by people struggling to maintain their long lived environments, and how beneficial ephemeral environments were to everyone involved in product development.
## Clear Benefits to Ephemeral Environments
There is a wide range of possible benefits implementing ephemeral environments can have on your organization. Depending on how they are created, different subsets of these are possible.
- Being able to see a full picture of the effect of changes made, before reaching production - Eliminating maintenance due to long-lived dev, test, or staging environments - Freeing engineers to make changes (and mistakes!), in environments that can be torn down and rebuilt easily - Enabling developers to use an environment very similar to actual production for their day-to-day development - Allowing everyone invested in the product (R&D, product, QA, …) to share and collaborate - Significantly reducing the difference between production and dev environments, and everything in between
Each of these abilities improves the organizations’ ability to build quality products, and unlock hidden superpowers -
- If mistakes aren’t scary then developers are free to explore and experiment - If collaboration is easy then less time is wasted building the wrong thing, and problems can be identified at an earlier stage of the development cycle - If no one is locked on a single environment context switching becomes faster - And many more…
## Difficult to implement
At Raftt we’ve had the privilege to meet many companies that are in various stages of their ephemeral environment journey. A few don’t have anything of this sort and are not interested. Most have something, but are missing some building blocks to reach a complete solution. Often:
- There is a limited number of environments, and it requires configuration changes to bring up more of them - Environment management does not bring them down when they aren’t being used, costing the organization in compute - It takes a long time for new environments to come up, so they cannot be used for development or live collaboration - Environments are fully static - changes can’t be made on top of the life environment, limiting their applicability for development - They are defined differently from production, leading to double maintenance
The reason these are missing is because building out a full ephemeral environment infrastructure is difficult. Environment creating, lifecycle management, resource utilization, maintenance and stability, collaboration features, developer experience - each is a significant amount of work.
The pains we see most often in organizations that do have some form of ephemeral environments is that they are not suitable for development, limiting the benefits they provide. This is especially unfortunate because companies often invest in ephemeral environments *because* of the pains felt by developers, who are often the largest and most expensive group building the product.
## Raftt can help
Our goal at Raftt has always been to make developing in complex containerized environments a pleasant and seamless experience. We can provide a fully-SaaS ephemeral environment solution, or can integrate into your existing stack to enable advanced development and collaboration features.
No matter where you are now, Raftt can help your company achieve fully ephemeral environments that give developers the tools they need to be effective and happy.