Created
April 12, 2019 20:02
-
-
Save davinchia/2401057d783211a7364ad44211abc061 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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