# Best Practices

Environments

* Development
  * Open to all contributors without restriction
* Test (Quality Control)
  * Mimics production, used for manual quality control before release
  * Restricted to UI access for most users
* Production
  * Tightly restricted access
  * Runs in a separate Digital Ocean account

Workflows

Services

* Automatic Test, Release, Deploy to Dev k8s
  * On push/merge to master
* Automatic Test
  * On PR created/updated
* Manual Deploy to Test k8s
* Manual Deploy to Production k8s
* Manual Deploy to Dev k8s

Web Applications

* Automatic Test, Release, Deploy to Dev CDN
* Automatic Test
  * On PR created/updated
* Manual Deploy to Test CDN
* Manual Deploy to Production CDN
* Manual Deploy to Dev CDN

IaC

* Separation of environments?
* Seams between tfstate files?
* Protection of resources?
* Access?

Personal Development Environments
