From 99dd070009e1a37169c3833b3cf65153718030aa Mon Sep 17 00:00:00 2001 From: Natalie Lunbeck Date: Fri, 12 Jan 2024 12:58:18 -0800 Subject: [PATCH] Propose Update to Manifesto - Add test env content (#359) * add EE.io source to homepage * add self to contributors/signatories * write prod-like test env page * Revert "add EE.io source to homepage" This reverts commit 41595928a9b179dd4ae28deb5ab56b1c2c4bf8dd. * iterating on prod-like test env * Update _index.md * add link to prodlike --------- Co-authored-by: Bryan Finster --- content/MinimumCD/ProdLike/_index.md | 17 ++++++++++++++--- content/MinimumCD/_index.md | 2 +- data/names/contributors.yml | 2 ++ data/names/signatures.yml | 2 ++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/content/MinimumCD/ProdLike/_index.md b/content/MinimumCD/ProdLike/_index.md index e9e1eb1..bcec8ea 100644 --- a/content/MinimumCD/ProdLike/_index.md +++ b/content/MinimumCD/ProdLike/_index.md @@ -1,6 +1,17 @@ --- -title: Test == Prod -description: Production-like test environment +title: Prod-Like Test Environment +description: Leveraging production-like test environments in your CI/CD pipeline enables reliable testing. weight: 5 -draft: true --- +## Definition +It is crucial to leverage pre-production environments in your CI/CD to run all of your tests (Unit / Integration / UAT / Manual QA / E2E) early and often. Test environments increase interaction with new features and exposure to bugs -- both of which are important prerequisites for reliable software. + +## Example Implementations +There are different types of pre-production test environments. Most organizations will employ both static and short-lived environments and utilize them for case-specific stages of the SDLC. +- **Staging environment**: Ideally, this is the last environment that teams will run automated tests against prior to deployment, particularly for testing interaction between all new features after a merge. Its infrastructure will reflect production as closely as possible. +- **Ephemeral environments (collected from [EphemeralEnvironments.io](https://ephemeralenvironments.io))**: These are full-stack, on-demand environments that are spun up on every code change. Each ephemeral environment should be leveraged in your pipeline, which will run E2E, unit, and integration tests against them on every code change. These environments are defined in version control and created and destroyed automatically on demand. They are short-lived by definition but should closely resemble production; they are intended to replace long-lived “static” environments and the maintenance required to keep those stable, i.e., “development,” “QA1”, “QA2”, “testing,” etc. + +## What is Improved +- **Infrastructure is kept consistent**: Test environments deliver results that reflect real-world performance. Few unprecedented bugs sneak into production since using prod-like data and dependencies allows you to run your entire test suite earlier against multiple prod-like environments. +- **Test against latest changes**: These environments will rebuild upon code changes with no DevOps team intervention. +- **Test before merge**: Attaching an ephemeral environment to every PR enables E2E testing in your CI before code changes get deployed to staging. New features get tested in parallel, avoiding the dreaded “waiting to run my tests” blocking your entire SDLC. diff --git a/content/MinimumCD/_index.md b/content/MinimumCD/_index.md index 71997c3..01c2b6d 100644 --- a/content/MinimumCD/_index.md +++ b/content/MinimumCD/_index.md @@ -39,7 +39,7 @@ The minimum activities required for CD are: - Artifacts created by the pipeline always meet the organization's [definition of deployable](../faq/#what-do-we-mean-by-definition-of-deployable) - [Immutable artifact](../minimumcd/immutable/) (no human changes after commit) - All feature work stops when the pipeline is red -- Production-like test environment +- [Production-like test environment](../minimumcd/prodlike/) - Rollback on-demand - [Application configuration](../faq/#what-is-application-configuration) deploys with artifact diff --git a/data/names/contributors.yml b/data/names/contributors.yml index d8c892f..68faa2a 100644 --- a/data/names/contributors.yml +++ b/data/names/contributors.yml @@ -105,3 +105,5 @@ list: contact: https://www.linkedin.com/in/ravindranath-wickramanayake-62375916 - name: Jarkko Piiroinen contact: https://www.linkedin.com/in/jarkko-piiroinen/ + - name: Natalie Lunbeck + contact: https://www.linkedin.com/in/natalie-lunbeck-477b45114/ diff --git a/data/names/signatures.yml b/data/names/signatures.yml index 47d545b..202d3ed 100644 --- a/data/names/signatures.yml +++ b/data/names/signatures.yml @@ -371,6 +371,8 @@ list: contact: https://www.linkedin.com/in/jakub-stary - name: Jarkko Piiroinen contact: https://www.linkedin.com/in/jarkko-piiroinen/ + - name: Natalie Lunbeck + contact: https://www.linkedin.com/in/natalie-lunbeck-477b45114/ - name: Eric Minick contact: https://www.linkedin.com/in/ericminick/ - name: Marc Loupias