Mirrord

Other Tools

Miscellaneous

mirrord lets developers connect a local process to their cloud environment, and so run local code in cloud conditions.

Mirrord

Miscellaneous

Other Tools

mirrord lets developers connect a local process to their cloud environment, and so run local code in cloud conditions.

What is mirrord?

mirrord lets developers run local processes in the context of their Kubernetes cluster. It’s meant to provide the benefits of running your service on a cloud environment (e.g. staging) without actually going through the hassle of deploying it there, and without disrupting the environment by deploying untested code.

Profile

mirrord is an open source tool that lets engineers working on cloud products connect their local process directly into their Kubernetes cluster. It works by wrapping existing binaries, requires no code changes or installations on the Kubernetes cluster, and so provides a lightweight and non-intrusive means of running new code in cloud conditions. 

It’s open-source, self-serve, and requires no Kubernetes proficiency to use, and so can be adopted on a per-engineer basis. 

Focus

mirrord is meant to enable faster, safer development by cutting the long feedback loop between the local and cloud (i.e. dev, staging, production) environments. Traditionally, dev work in loops where they write and test their code locally, then deploy it to a staging/pre-production environment in the cloud, where they perform additional tests. With mirrord, development and testing can be done against the staging environment from the outset. This shift-left in cloud integration leads to fewer iterations on staging, and to new code being tested more frequently in production-like conditions.

Background

Traditionally, software development happens in loops, where developers write and test their code locally, then deploy it to a staging/pre-production environment in the cloud, where they perform additional tests. These tests often fail, because the code is meeting a near-production environment for the first time, and encounters new conditions. The code must then be fixed/rewritten, tested locally again, deployed to staging again, and so on, until the tests pass.

The deployment to staging stage is expensive for two reasons:

  1. It often goes through a CI process, which is often slow (because of e.g. a long automated test suite having to pass in order to progress) and sometimes broken.
  2. Since staging environments are usually shared, the environment is occasionally broken when an engineer deploys unstable code.

mirrord attempts to remove the costs associated with deployment to staging, by taking deployment out of the process completely. By plugging their local process directly into the staging environment, developers can test their code in cloud conditions without having to go through a long CI process, and without the risk of breaking the environment for other developers.

mirrord main features

Easy to setup

mirrord piggybacks on the Kubernetes API, so installation comes down to running a binary (or installing an IDE extension). Nothing has to be installed on the cluster.

Locally Concurrent

Unlike other solutions in the space, mirrord lets the user connect as many local services as they need to the cluster, each with the context of their respective pod, all without affecting any other process on the user’s machine.

Configurable

mirrord supports a high level of configurability - users can toggle incoming and outgoing traffic per protocol, filter which files and environment variables should be read remotely or locally, filter incoming traffic by HTTP header, and more.