Today we’re excited to announce that Escape, our cross-cloud release engineering toolkit, has been open sourced!
Escape
Escape is a command line tool written in Go to help with the release engineering, life-cycle management and Continuous Delivery of software platforms and its artefacts.
Managing Multiple Environments
Whether it’s source code. cloud infrastructure, data or documentation; most artefacts go through one or several phases before going live. Often this means that there will be at least one environment that is as close to the real thing as possible so that the business can develop and test new features, but on big projects there may be dozens; some only short-lived.
Managing, promoting and changing configuration between these different environments can often be quite difficult. Escape’s goal is to make managing multiple environments easier and automatable.
Different Layers, Different Tools, Same Process
Different artefacts are often built and configured using different tools. For
example: we may be building a Docker image using the docker
command and
deploy the image using the kubectl
command on a Kubernetes cluster that was
built on AWS using the terraform
command.
Having different tools targetting different layers makes it hard to orchestrate the deployment of a complete environment and to verify its consistency. Escape’s goal is to make it easy to compose packages, potentially containing different kind of artefacts, into entire platforms.
Enable Best Practices in Modern Release Engineering
A modern software application stacks consists of many different layers that all need to be versioned, configured, deployed and operated differently. The integration points between these layers are often bespoke, hard to change, and full of technical debt.
"Release engineering is the difference between manufacturing software in small teams or startups and manufacturing software in an industrial way that is repeatable, gives predictable results, and scales well. These industrial style practices not only contribute to the growth of a company but also are key factors in enabling growth." — Boris Debic, Google Inc
Escape’s goal is to bring and somewhat standardise the best practices in release engineering, but without being overly opinionated.
Identifiable Packages, Self-Documenting Environments
It can be hard to find out what version is live, what version has passed integration tests, what change was deployed, who authored it, etc.
With Escape we want to give you the tools to make everything:
- Identifiable
- Reproducible
- Consistent
How we use Escape
The projects we work on often involve the cloud and containers. Our customers are typically working on an application and get us on to help with infrastructure and architecture. More often than not this includes setting up a reliable pipeline for software delivery. No company or process is ever the same, but Escape provides us the flexibility to fit most use cases, whilst allowing us to maintain common components and integrate them into a customer’s pipeline. For example: we maintain packages for a micro-services “quickstart” environment on Kubernetes in Google Cloud, making it very easy to get new projects of the ground.
We also use Escape to release Escape itself, plus it’s used to build and operate our internal services.
Try it out!
See the documentation for Escape