the recording and slide deck with all registrants shortly -- keep an eye on your inbox! • Please add your questions in the Q&A box, we will answer them after the presentation during the Q&A session at the end • To get in touch, get in touch on Twitter @contentful or write to us at team@contentfulmail.com Before we dive in...
version control system • Use local containers and / or staging environments to test out structural changes before applying them to production data 9 So what to do about it?
sandbox setup with the same content model as the master. /spaces/<space_id>/environment/<environment_id>/ 14 Space Environments local-sandbox-1 local-sandbox-2
of the content model? • You don’t want to experiment with production content • So you spin up a new environment and use it for testing 15 How would you use them?
content model changes in a local setup Even nicer would be: • Set up a staging environment where you apply your content model changes before you apply them to the production space. • Make environments part of a CI/CD pipeline 19 Some use cases
how you would write migrations to the structure of your database • Write your migrations in JavaScript or TypeScript What can you do with it? The migration tool
Write repeatable content model migrations and check them into version control • Easily test out any content model changes programmatically locally by using a personal sandbox environment • Set up a staging / QA environment or a CI/CD pipeline with a dedicated contentful environment
“master” alias. • Instead of having a master environment, you now have a master alias that has a target environment. /spaces/<space_id>/environments/master /spaces/<space_id>/ Environment aliases
has a special status • Create more aliases with custom ids if you want to • We are looking into renaming “master” to “main” A few things to keep in mind.
a stand-alone environment but acts as an alias targeting another environment Production content is served from release-1 environment Execute migration scripts Change master alias to target release-2 environment Production content is now served from release-2 environment Promote Problem discovered! Rollback is required Rollback Rollback master to target release-1 environment release-1 release-2 Use case: Promote an environment to master master
environment but acts as an alias targeting another environment Content is served from prod environment Run migration scripts Restore by changing master alias to target prod-backup environment Backup Problem discovered! Rollback is required Restore prod prod-backup Use case: Backup and restore master Optional: Delete prod environment prod Optional: Recreate prod from prod-backup Change master alias to target prod environment
be integrated into your workflow: Devs can feel safe about constantly shipping changes, because: • Flexible manual and automated testing can be done beforehand and as part of the deployment • Rollbacks are easy
Master, Staging or QA via pull request Continuous Integration Provider Update alias to use newly created environment Deploys the new code PUSHED Hosting provider TRIGGERS A BUILD Stop the build Creates new environment and runs migration scripts on Contentful Run tests and checks DID THE TESTS PASS? YES NO