After applying DevOps principles, your app can now be updated, tested, and released as quickly as you can think of it. This video describes how to achieve this.
- [Narrator] After losing another 7% of their traffic to Explore Texas during the last high season, the CTO of Explore California and her team decided that something had to change. Through survey and focus group data from marketing and product development, she learned that customers were having trouble navigating and ordering through their site compared to Explore Texas' offering. And they would be more likely to continue shopping on the site if navigation were made easier. Through this data, she created a challenge for engineering, product, and operations. Quickly deploy a new feature into the production website in two days. Though extremely challenging, Explore California engineering rose to the challenge, and after six months of failures, they were eventually able to successfully and safely release every two days. There's also much less paperwork involved in deploying features to production now, since much of the content within that paperwork has been replaced by GitHub pull requests. And speaking of pull requests, all deployments into production are at 100% automated by continuous integration, CI, and continuous deployment, CD pipelines. Code review and UAT are the only two steps that require a human sign-off. The CI pipeline into production builds a website on the fly and runs unit tests before every pull request enters review. The CD pipeline deploys the website artifacts into AWS resources using Terraform. A separate pipeline runs daily to merge the master branches from each development team into an integration environment that runs integration tests and reports failures to respective teams. Development teams found that testing their app was easier if they had something approximating a full instance of the website on their machines. They initially starting doing this with VM's and HashiCorp's Vagrant tool, but found that maintaining virtual machines on their local machines was much more effort than using Docker and Docker Compose. With Docker, developers can now use the same libraries and tool chains locally, as what's available in production. This gave them more confidence to run and write more of their test before pushing. From this, this eventually rendered development environments and the queues that formed to use them, obsolete. After moving to an every other day release schedule, traffic to Explore California's website increased steadily, with the feedback from users more positive than ever before. Now, life is a lot more fun at Explore California engineering.
- Writing your first Dockerfile
- Using Docker Compose
- Testing your app with RSpec, Capybara, and Selenium
- Writing Terraform code
- Deploying a website into AWS S3
- Writing and running integration tests
- Writing a CI/CD pipeline with Jenkins