Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

How Docker simplifies CI/CD


Published on

The introduction of Docker about 3 years ago has significantly changed the way we think about continuous integration and continuous deployment. Docker has made software containers accessible to everyone. Today it is very easy to package an application or service into a container including all its dependencies and configurations. Since a container is immutable and (nearly) completely opaque to the outside world it can be deployed to any target host, be it the laptop of a developer, the build server, an integration server, staging or production. Gone are the days where we used to hear “runs on my machine”. DevOps has become much simpler because of containers, because of Docker.It’s a paradigm change and can be rightfully compared to the revolution shipping containers caused in logistics.
In this lecture you will learn what a CI/CD pipeline used to look like and how Docker changed this picture. The presenter will also demonstrate how an ASP.NET core application can be packaged into a Docker container locally on the developer laptop and then once the code is pushed to GitHub, pulled, built, tested and pushed to to Docker hub by a CI server from where it can be deployed to any target environment.

Published in: Software
  • Be the first to comment

  • Be the first to like this

How Docker simplifies CI/CD

  1. 1. How Docker simplifies CI/CD
  2. 2. Gabriel N. Schenker Distinguished Software Architect PhD in Astrophysics @gnschenker
  3. 3. Professional Scrum Foundations Training, Monday May 16 – Tuesday May 17 Held at Clear Measure Office More Info/Register:
  4. 4. •CI/CD – What and Why •Classical CI/CD pipeline •Containers – Quick Intro •CI using Docker •Defining a Service Stack •Blue-Green Deployment By Dreamstime
  5. 5. CI/CD – What and Why • CI = Continuous Integration • Why do we need CI? • CD = Continuous Delivery or Continuous Deployment • Why do we need CD?
  6. 6. Classical CI/CD pipeline You need: • Source repository • CI Server • Multiple Environments (INT, UAT, Staging, PROD, etc.) • Infrastructure as Code • Service Discovery • Health Monitoring, Auto-Healing • Routing, Load Balancing • Blue-Green Deployment • Canary Releases • Centralized Logging & Monitoring • SLAs; Numbers and Metrics indicating Health
  7. 7. implement SCMS Push often (feature toggle OFF) Peer review Developer 1 Developer 2Turn Feature Toggle ON Artifacts Build artifacts Backlog Pull story 1 3 2 8 Pull code4 5 7 Run unit-, integration- and end-2-end tests 6 Configure environment CI-Server QA/PO 9 10 CI
  8. 8. Code Repo Developer Push feature CI Server Integration Staging promote Build Artifacts Run Unit and Integration Tests Infrastructure & Public Pool Tests promote Infrastructure and Smoke Tests A/B Testing QA Environment Full CI/CD pipeline approve promote Continuous Delivery Continuous Deployment pull
  9. 9. Containers
  10. 10. VMs versus Containers Operating System Hypervisor Guest OS Bins/Libs App 1 VM 1 Guest OS Bins/Libs App 2 VM 2 Guest OS Bins/Libs App 3 VM 3 Infrastructure Operating System Docker Host Infrastructure Bins/Libs App 1 Container 1 Bins/Libs App 2 Container 2 Bins/Libs App 3 Container 3
  11. 11. A Sample Application • APS.NET Core 1.0 RC1 • Sample Template • Running on CLR-CORE
  12. 12. Containerizing my Application
  13. 13. Containerizing my Build Server
  14. 14. Publishing Container Images • Docker Hub • Trusted Registry
  15. 15. Deploying my Application
  16. 16. Scaling and High Availability
  17. 17. Blue-Green Deployment Reverse Proxy Service A v1 Service A v2 request Reverse Proxy Green Blue A/B testing 10% 90% Centralized logging and stats monitor collect 0% 100% Canary Release Also called: A/B Testing