Learn about continuous integration, deployment, and delivery.
- You may have heard the terms continuous integration, delivery, and deployment thrown around already. So first, let's talk about exactly what each term means. - Yeah, let's start with continuous integration. It's the practice of automatically building and unit testing an entire application frequently, ideally on every source code check-in, dozens of times a day if necessary. - And in CI, those check-ins are frequent. You don't use long-running parallel code branches that'll cause a large, messy merge effort the older they get. Or if you do, you at least set up builds for them in the meantime to continually validate that they work.
- Right. Yeah, ideally developers will build and test their application on their local desktop, even before submitting to a shared build system. It's all about shortening the feedback loop for every change. - [Man In Glasses] Continuous delivery is the additional practice of deploying every change to a production-like environment and performing automated integration and acceptance testing after it passes its build and unit tests. - This can involve small-scale deployment on a single server using mock environments created with Docker containers or virtual machines to mimic a production environment so that you can run those integration tests.
Testing should generally end up with a deployment to a production-like environment. - This allows us to validate the deployment process and to see what functionality and performance look like in a real deployment environment. - Right. Continuous deployment extends this concept to where every change goes through full automated testing and is deployed automatically to the production environment. - Sounds scary, right? - I mean, it can feel terrifying. - But large-scale web properties like Facebook, Etsy, and Wealthfront use continuous deployment as a key component behind their success.
Even at my work we use continuous deployment for the microservices that backup our Open Threat Exchange website. - Now, once you're making one change at a time, and you have trustworthy tests that can find issues in your application, then you can remove all the manual gates that get in the way of a continuous flow to production. - Of course, there are build and release processes that aren't anything like this. Giant releases of hundreds of changes piled up for months, products that won't even build without days spent cobbling together merge conflicts and manual work-arounds.
- I've been there. You know, you don't have to go all the way to continuous deployment. It's not right for every product, and none of this is really a mandatory part of a DevOps implementation. The first true DevOps team that Earnest and I worked on, we didn't go all the way to continuous delivery. However, a bunch of teams that we've worked on since have seen huge benefits of using continuous delivery. In most situations, CI and CD is a huge improvement for products and teams of any sort. In our next video, we'll go into the benefits of continuous delivery in-depth.
- Benefits of continuous delivery
- Building your own pipeline
- Version control practices
- Building artifacts
- Testing and continuous delivery
- Application deployment and release
- UI testing in action with Robot
- Security testing in action with gauntlt
- CI/CD best practices