Payload is a simple tool for working with production data in your local environment.

Payload

Payload is a simple tool for working with production data in your local environment.

What problem does it solve?

You're working with Cloud SQL in production, but you want to avoid connecting directly (or through cloud_sql_proxy) to your production database lest you accidentally run some destructive commands, or expose customer data. Both of which are considerd bad practice.

payload allows you to export the production database, trim customer data — such as by truncating users or running other SQL cleanup commands — before downloading the data to your machine and loading it into your local database for testing/local development.

Or you need to inspect real customer data, in which case you can use IAM to grant permission for a given engineer to a specific customer scope, which will not be cleaned up in the export.

This has some neat usecases:

  • Test upcoming database migrations against real data
  • Help debug customer issues without connecting to production
  • Run analytics against production without interfering with real data or running replicas
  • Create personal staging environments with real data so that you don't need to manage large collections of seed data that invariably becomes unmaintained

Security

payload is built around IAM in Google Cloud. At the very least you will need to create a service account for it to run as which can export databases, write to Cloud Storage, and fetch objects.

To enable data scrubbing, permission to launch a spot instance is required, which will load your data into a temporary database, scrub certain data, then export the remaining data.

Usage

NAME:
   payload - Do it in production, but locally.

USAGE:
   main [global options] command [command options] [arguments...]

VERSION:
   0.0.1

DESCRIPTION:
   Payload is a simple tool for working with production data in your local environment.

COMMANDS:
   create   Dumps the database and stores it on Cloud Storage
   pull     Pulls the latest database dump, creating it if not already stored
   sync     Loads the latest database dump into your local database, pulling it if not already loaded
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)
Owner
Ivan Vanderbyl
Co-founder and CPO at @airheartdev
Ivan Vanderbyl
Similar Resources

A simple API for computing diffs of your documents over the time built on a scalable technology stack.

Diffme API WIP - this is an API to compute diffs between documents. It serves as a way to easily create audit logs for documents in your system, think

Sep 8, 2021

A simple tool to auto remove unused imports in rust

rust_strip A simple tool to remove unused imports in RUST. Call Cargo build/test Process the warning logs of unused imports Then replace the involved

Oct 15, 2022

A simple business indicator tool that uses a sliding window to detect whether the indicator exceeds the threshold

melon A simple business indicator tool that uses a sliding window to detect whether the indicator exceeds the threshold Usage //create the metric //th

Jul 11, 2021

Serial-locate - A simple tool for searching the COM port

serial-locate A simple tool for searching the COM port Usage Direct query serial

Jan 18, 2022

Simple arc-dps utililty tool

arc-dps-launcher The base idea of this project is to provide a simple method of updating the GuildWars2 tool arcdps, a gw2 dps meter (and general comb

Feb 21, 2022

Go-generics-simple-doubly-linked-list - A simple doubly linked list implemented using generics (Golang)

Welcome to Go-Generics-Simple-Doubly-Linked-List! Hi, This repository contains a

Jun 30, 2022

A set of instrumentation features for collecting relevant tracing data as well as secure an application

Go Agent goagent provides a set of instrumentation features for collecting relevant tracing data as well as secure an application by blocking requests

Dec 21, 2021

Quickly query a Terraform provider's data type.

Terraform Query Quickly query a Terraform provider's data type. Such as a GitHub repository: ➜ ~ tfq github_repository full_name hashicorp/terraform |

Oct 12, 2021

A parser for Ontario's baby name data

A parser for Ontario's baby name data

obnp What? A parser for Ontario's baby name data Why? I wanted to see if a specific name existed in both the male and female datasets. This tool is mo

Mar 15, 2022
Related tags
This project provides some working examples using Go and Hotwire Turbo.

hotwire-golang-website This project provides some working examples using Go the hotwire/turbo library published by basecamp.

Dec 29, 2022
CUE utilities and helpers for working with tree based objects in any combination of CUE, Yaml, and JSON.

Cuetils CUE utilities and helpers for working with tree based objects in any combination of CUE, Yaml, and JSON. Using As a command line binary The cu

Dec 24, 2022
Quicat -- a socat-like utility for working with QUIC

Quicat -- a socat-like utility for working with QUIC This is a utility that I occasionally use for building secure-enough tunnels on flaky connections

Feb 6, 2022
tenv detects environment variable not using t.Setenv
tenv detects environment  variable not using t.Setenv

tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17

Nov 8, 2022
A local snippet manager in Go

Snip A local snippet manager :D Snip provides simple CLI for saving and copying links for emojis, gifs or whatever you want. Requirements Install go i

May 24, 2021
Govalid is a data validation library that can validate most data types supported by golang

Govalid is a data validation library that can validate most data types supported by golang. Custom validators can be used where the supplied ones are not enough.

Apr 22, 2022
Visualize your Go data structures using graphviz

memviz How would you rather debug a data structure? "Pretty" printed Visual graph (*test.fib)(0xc04204a5a0)({ index: (int) 5, prev: (*test.fib)(0xc0

Dec 22, 2022
✔️ Get random data for your app from a third-party source.

Random Data Securely produced random data for application testing. FAQ What would i use this data for? You can use this information to test your apps

Jul 5, 2022
Hotswap provides a solution for reloading your go code without restarting your server, interrupting or blocking any ongoing procedure.
Hotswap provides a solution for reloading your go code without restarting your server, interrupting or blocking any ongoing procedure.

Hotswap provides a solution for reloading your go code without restarting your server, interrupting or blocking any ongoing procedure. Hotswap is built upon the plugin mechanism.

Jan 5, 2023
encLib is a simple golang package for quickly encoding and decoding string data in hex

encLib is a simple golang package for quickly encoding and decoding string data in hex

Nov 1, 2021