Bart Spaans, November 27, 2017

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 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