Current Testing and Staging Processes are Slow & Cumbersome
Current DevOps pipelines have multiple test environments between development and production, which are not only static and stale, but are also shared amongst developers and quality assurance for testing. The list is long but complex ecosystems may include environments like: development, testing, stress testing, performance testing, staging, user acceptance testing (UAT), etc.
Issues with Static Staging Environments
Because these environments are static a dedicated DevOps team is required to create and manage these environments. Most of the time is spent keeping a multitude of environments in sync with production – and the only effective way they have to achieve this is by writing custom scripting. This in turn requires staff to create and manage all the scripts.
Issues with Shared Testing Environments
Shared environments are very complicated. They have multiple applications from multiple teams and have releases from various branches. This requires DevOps teams to spend a lot of time resolving conflicts or bringing the environment back to stability to mirror production. Furthermore, testing processes work sequentially; forcing developers to wait for an environment to become available in order to validate a change.
Shared environments for testing are always a challenge because multiple developers use it for various changes and the versioning may not align. Plus the sheer volume of requests mandates that the validation of pull requests (PRs) becomes sequential, this process causes bottlenecks and delays PRs. And, if the PR fails in testing, the whole cycle starts again — consuming resources and time while increasing change failure rates and cost.
The Need for Dynamic and Ephemeral Environments
To solve all the challenges with static and shared environments, developers need to have the ability to create an environment on-the-fly that automatically provisions it with the latest micro services and artifacts required for just that change. This on-demand process could be part of GitHub action or pull request creation.
With dynamic and ephemeral environments there is no longer a need for dedicated time/personnel to manage all the static and shared environments. And, with fewer environments clogging up the pipeline, the whole testing process and release cycle is accelerated.
The Roost environments are dynamic and are always in sync with your code repository and production. Roost achieves this continuously scanning and inspecting source-code repositories (e.g. GitHub, GitLab, and BitBucket) and auto-discovering and mapping environment configuration.
Since environments are created for a specific need, each is unique and differs in infrastructure and configuration. Because of this, each environment will have different testing needs. For example, when testing for performance/load, users can have the flexibility to launch a larger AWS instance type to meet that demand.
Because the environments are created for a specific change or purpose, there are no version/release conflicts.
Each Roost environment is unique and serves just one purpose. And once that single purpose (e.g. code change) is obtained the platform automatically disposes of the environment and the cycle is complete.
Figure 1. The Roost platform makes managing complex applications easy
From the Roost control plane, multiple applications, numerous code repositories, thousands of pull requests, and a multitude of environments can all be managed from one central location.
With the Roost platform, static and shared environments will never be needed. Engineering overhead and the costs associated with upkeep and maintenance of these sites are completely eliminated.
To learn more about how the Roost platform can help manage and consolidate your complex environment ecosystem sign up for a demo.