The as-a-service model evolved when SalesForce's "not a software" model (SaaS) met Amazon-Web-Service's Cloud Storage and Compute (IaaS & PaaS). When I wrote about the evolution of as-a-service in Techcrunch over five years back, I did not realize that I would be promoting the next level of abstraction in the same series five years down the line, i.e., Environments-as-a-Service or EaaS. I would instead call it a gap fill that emerged with everything around pre-production environments being standardized, but these environments are still being created in wild-west, bespoke fashion.
What is an environment anyway?
Before defining an environment, let us start with defining what an environment is not. Let us use the metaphor of a house to make it even easier.
An environment is not:
Infrastructure as Code (not wood, concrete, & steel reinforcement)
Infrastructure as code or IaC has become mainstream in the last few years. In the public cloud world approach of "your wish is my command," all you need is a good wish list (configuration as code), and the cloud creates infrastructure. Creating good infrastructure in an agile way is essential and is akin to putting foundation, walls, roofs, doors, etc., in the house. It provides a solid foundation and protects the home from elements. It does not offer a "warm and cozy environment" for residents to live in.
Leading examples of IaC platforms: Hashicorp Terraform and CloudFormation
Code and Services (not residents)
In the cloud-native world, code converts into images that get life in containers. These containers and images need to be created in the right way and protected correctly. For example, an image not being created using a multi-stage build is a recipe for disaster. In the same way, a container running as root is also a recipe for disaster.
Leading houses for code to reside-in are: GitHub, GitLab & BitBucket
Containers reside in: DockerHub, Elastic Container Registry, JFrog Artifactory, etc.
An environment as a service (is the air-conditioning & furnishings)
An environment is a gap that needs to be filled for a resident to have a comfortable and pleasant experience in the house.
In technical terms:
An environment as a service is a space where teams can experience & interact using an isolated environment with shareable & testable applications crafted using configuration, infrastructure & dependent services.
EaaS(Environment as a Service) is a way of delivering development infrastructure and services to run an application in an on-demand ephemeral environment. It removes the burden of creating custom scripts and managing complex software in order for developers to create a pre-production environment.
The Roost Platform
Roost is an “Environments as a Service” platform that on-demand creates an ephemeral pre-production environment and automatically maps and discovers environment configuration required to instantly test and validate code changes.
The Roost platform continuously scans source-code repositories (e.g. GitHub, GitLab, BitBucket) and discovers environment configuration (e.g. Helm charts, Docker files, Docker compose, Kubernetes YAMLl files, Terraform files) and automatically tests code changes using the latest services and versioning. This PROPRIETARY SCANNING PROCESS is Roost's "secret sauce" to avoid integration issues later in production.
Sign up for a live demo to see how Roost lets you move fast and deliver better products, with the autonomy to instantly create ephemeral and production-like environments on-demand without the need for a staging environment or multiple environments.
How can Roost.ai help DevOps teams in the managing environments process?
Roost environment can set the entire tech stack without disrupting any of your existing process, practice around code/build/deploy pipelines. EaaS enables incremental testing and identifying breaking changes almost immediately along with the change that needs a relook. This saves precious time when promoting the changes for upcoming release.
Are ephemeral environments the same as isolated environments?
Ephemeral environments can provide isolation from other shared environments but isolated environments are not always ephemeral. Roost.ai provides ephemeral environments that are on-demand and isolated
What are some best practices for managing and deploying ephemeral development environments?
Some of the best practices to consider in implementing ephemeral environments starts with containerizing your application. Using a container orchestrator like Kubernetes and introducing ephemeral environment creation as part of a pull request process streamlines the development process and accelerate the release cycles. Also, destroying the environment once the PR is tested and merged optimizes the infrastructure uptime
What are the benefits of an EaaS (Environment as a service)?
Instantly get a full-stack testing environment, custom-built for a specific code change and designed to replace static staging environments. Roost's proprietary AI technology dynamically maps and discovers environment configurations for auto service discovery and mapping. Ephemeral environments helps in accelerating release cycles