In cloud computing terms, an environment is a collection of components that are provisioned, deployed, and orchestrated to perform a task.
In many organizations, those that are created for non-production tasks, such as staging, testing, or development environments, can be complex, costly, and time-consuming bottlenecks for supporting fast-paced development timelines.
Production environments, meanwhile, need to be maintained with the latest software enhancements and architecture to support customer experience.
The Environment as a Service approach represents a new way of tackling the problem.
What is an environment?
An environment is more than just the infrastructure – it also incorporates all the software, infrastructure, and platform services a developer or tester needs to complete a task.
The image below shows sample components of what is included in a software developer’s “environment.”
Every time someone needs an environment for testing, staging, or production, the process involves:
- Provisioning environment components, including cloud infrastructure and other services
- Orchestrating the dependencies between those components
- Deploying and validating that the environment functions as expected
- Decommissioning the environment once it’s no longer needed to manage cloud costs
For both the team that needs it and the team responsible for building it, the process is faster when managing the environment as a service.
What is an ephemeral environment?
An ephemeral environment typically only needs to run for a brief period of time, such as a test environment or a staging environment.
At scale, demand for ephemeral environments (particularly those for non-production software testing and staging) can put a significant amount of strain on the teams responsible for provisioning and delivering them. Provisioning environments to support software testing, for example, creates additional manual work for the DevOps or IT teams responsible for it. And in many cases, a testing environment needs to maintain the same conditions as a production or development environment to ensure that the test replicates the user experience accurately.
Further compounding the issue is when software development, QA, IT, or other teams need a development, testing, or preview environment to be re-configured or otherwise updated. Identifying and reconciling the issue with the environment involves sorting through complex code and configurations defined across a number of infrastructure automation tools.
This level of orchestration can result in long waits for delivery, periods during which resources are unused (but also incurring cloud cost charges), and limited developer productivity.
Key Benefits of an Environment as a Service approach
Most companies today adopt one of two ways for delivering environments to end users.
In centrally managed organizations, ITOps or Cloud Operations teams will receive a request for an environment and they are ultimately responsible for delivering it. Turnaround times can fluctuate based on overall demand and the number of different teams and business units they’re serving at any given time.
As a result, delays in delivery can lead some software development teams to circumnavigate the traditional process and deploy their own environments–a practice commonly referred to as “shadow IT.”
Because they lack centralized governance, shadow IT environments can lead to higher costs, degraded performance, and compromised security and compliance. Additionally, because a non-production environment built “in the shadows” may not have the same quality controls as those built by trained engineers, they can produce inaccurate results due to environmental differences.
When inaccurate results occur due to a lack of quality controls (for example, code working in a non-production environment, but not when transferred to the production environment), the work required to correct the issues incurs additional time and money—exacerbating existing bottlenecks and further delaying time to market and operational improvements.
The other approach is a more decentralized model. In this model, DevOps teams take on responsibility for spinning up environments on their own.
Maintaining these kinds of DevOps teams can be difficult. The skills and expertise to manage the variety of cloud platforms and IaC tools are hard to come by. The DevOps skills gap tends to hold back the effectiveness of this approach by limiting the output of the DevOps team responsible for executing the Environments as a Service approach.
At the end of the day, with either approach, the result is the same: long waits in delivery which can mean slower time to market, delays in operational improvements, governance and security risks, and lost sales opportunities.
Increasing Developer Productivity with an Environment as a Service platform
An Environments as a Service platform solves these pain points by creating reusable templates for any environment. This reduces the need for DevOps teams to provision environments repeatedly, allows them to update and maintain configurations via a single reusable template, and empowers developers to deploy the environments they need, when they need them.
Once the DevOps team approves the template defining an environment, they can publish it to a catalog in Quali Torque.
Developers, testers, and any other staff who need those environments can browse the catalog and deploy each environment via self-service. Integrations also allow developers to access these pre-configured environments directly within the CI/CD, CLI, or IDE tools.
Since the Environment as a Service platform deploys these environments, the DevOps team can automate termination after the environment is no longer needed, monitor for configuration drift to reconcile unexpected changes rapidly, and set rules to prohibit specific cloud services or deployments that violate their standards.
At scale, developers can launch the application environments that they need but only as long as those environments adhere to the DevOps team’s rules.
Quali’s Environments as a Service solutions— Torque for public cloud environments and CloudShell for on-premises and hybrid environments—enable business units to create environments within minutes. Both solutions automate the decommissioning of infrastructure components, ensuring costs are kept under control.
To learn how to accelerate and simplify how you manage application environments, learn more about Quali Torque.