Skip to content

Instantly share code, notes, and snippets.

@davinchia
Created April 12, 2019 20:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davinchia/2401057d783211a7364ad44211abc061 to your computer and use it in GitHub Desktop.
Save davinchia/2401057d783211a7364ad44211abc061 to your computer and use it in GitHub Desktop.
# Staging
These are recommendations. The team is free to do what they deem best.
Overarching principle:
* *Staging is where you validate the known-unknowns of your systems*
* Known-unknowns:
* interactions between various systems and edge cases
* possible to write unit tests, but difficult, especially when UIs are involved
* Unknown-unknowns:
* e.g. traffic patterns, traffic loads etc.
However:
* expensive - manpower and money
* will require investment to keep up to date
* still need to generate data to test with
Terraform + Kube means we can treat staging like cattle - easily destroy and remake.
General Dev flow:
Code -> Unit Test for basic cases and edge cases within an app -> test interactions between apps in Staging -> Prod
Sometimes we use Staging for scale testing. If possible we try to do this in Prod, since completely replicating Staging to Prod is tricky.
e.g. Prod testing in Pixel Serving was possible since losing a portion of traffic was deemed an acceptable trade off for speed.
Don’t expect China services to have scale problems.
Focus on:
* Correctness
* Reproducibility
* Ease of adoption (POs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment