How to deliver applications faster with Jenkins and Docker

40
How to deliver applications faster with Jenkins and Docker

Transcript of How to deliver applications faster with Jenkins and Docker

Page 1: How to deliver applications faster with Jenkins and Docker

How to deliver applications faster with

Jenkins and Docker 

Page 3: How to deliver applications faster with Jenkins and Docker

bit.ly/luis-herrera@lherrerabenitez

Page 4: How to deliver applications faster with Jenkins and Docker

Agenda- Delivering applications

faster. Why?- Barriers- Why Jenkins?- Why Docker?

- Pipelines. What? - Jenkins and Docker.

How? - Pipeline as Code –

DEMO

Page 5: How to deliver applications faster with Jenkins and Docker

Why?

Page 6: How to deliver applications faster with Jenkins and Docker
Page 7: How to deliver applications faster with Jenkins and Docker

Relationship between software and revenue performance

Page 8: How to deliver applications faster with Jenkins and Docker

All software is broken, all of the time …

Page 9: How to deliver applications faster with Jenkins and Docker

http://tech.shutterstock.com/2016/04/11/how-to-build-quality-into-your-software-development-workflow/

Page 10: How to deliver applications faster with Jenkins and Docker
Page 11: How to deliver applications faster with Jenkins and Docker

According to 2015 CHAOS Report , analizing 50,000 software development projects from all over the world:

7/10 projects failed or were challenged.

Page 12: How to deliver applications faster with Jenkins and Docker

Shifting mindsets…Traditional Transition Digital

Strategy Efficiency We want to innovate Innovation

Culture Hierarchy Collaborating hierarchy Collaboration

Talent Low cost Low/High cost outsourcing High skill

Technology Legacy We are migrating to the cloud, we are building mobile apps

Cloud, Mobile

User experience “Who cares?” It depends Mission Critical

IT Philosofy Default to “No” Is  the CIO sponsoring this? Default to “Yes”

Project Management Waterfall (Projects) We are agile (NOT) Agile (Products)

Business Model Service & Support Escalation Office Relationship & partner

Development approach Project, 3 tiers,  monolithic applications, technology dependent,  hand-over

We are evaluating technologies Product, N-tiers, Micro services/APIs, technology agnostic, you build it your run it

Based on Michael Krigsman / cxotlk.com

Page 13: How to deliver applications faster with Jenkins and Docker
Page 14: How to deliver applications faster with Jenkins and Docker

Extreme feedback – aka Continuos Integration• Yes, I am going to quote Martin Fowler’s article on CI• Continuous Integration (CI) is a development practice that

requires developers to integrate code into a shared repository at least daily. Each check-in is then verified by an automated build – CI server- , allowing teams to detect problems early.

Page 15: How to deliver applications faster with Jenkins and Docker

Why Jenkins?• Most widely-used Continuous Integration platform in 

use today• One of the most dedicated and active Open Source 

communities• Large number of plugins and integrations. Beyond 

building and testing:1.  Source Repository ( i.e. GitHub

Enterprise)2. Source Code Quality Management Tool (i.e. 

SonarQube)3. Proxy Repository (i.e. Nexus)4. Testing ( i.e. Selenium Grid )

• Web interface (ugluy?) , email notifications and build history at the very least.

• By centralising parts of the delivery and deployment pipelines, Jenkins becomes the roadmap and orchestrator for your entire software development journey. 

https://jenkins.dockerproject.org/

Page 16: How to deliver applications faster with Jenkins and Docker

Extreme Feedback – CD/CD• Continous Delivery is an approach in which teams ensure that

every change to the system is releasable, and that we can release any version at the push of a button. Continuous Delivery aims to make releases boring, so we can deliver frequently and get fast feedback on what users care about.

Page 17: How to deliver applications faster with Jenkins and Docker

Taking things too far…

Page 18: How to deliver applications faster with Jenkins and Docker
Page 19: How to deliver applications faster with Jenkins and Docker

Docker acelerates CI/CD pipelines• Build, ship and run, anywhere

• Consistency across environments, repeatable deployment

• Docker containers are used as the “unit of scaling” for • many PaaS and “data center OS” platforms• Public Cloud providers

• Separation of concerns – Dev (inside), Ops (outside)• Docker acelerates CI/CD pipeline:

• Acelerate system provisioning • Reduce job time

• “Having to wait 40 minutes to get a green light before merging each pull request is not very agile”

• Increase the volume of jobs run• “build the docker image once and then push it. On each test server,

instead of building the docker image we can then just pull it from the registry.

• Improve infrastructure utilization• Lightweight, fast, disposable, higher density...virtual environments

• Deployments are broken down in smaller, simpler pieces • Decoupling complexity• Multi-stack, multi-tier

Page 20: How to deliver applications faster with Jenkins and Docker

What?

Page 21: How to deliver applications faster with Jenkins and Docker

Automating CI/CD pipelines

Page 22: How to deliver applications faster with Jenkins and Docker

From Development to Production…

Page 23: How to deliver applications faster with Jenkins and Docker

Jenkins pipelines

Page 24: How to deliver applications faster with Jenkins and Docker

Tools Change, Focus on Pipeline Capabilities Instead

Page 25: How to deliver applications faster with Jenkins and Docker

How?

Page 26: How to deliver applications faster with Jenkins and Docker

Votting app – Docker Birthday #3

Page 27: How to deliver applications faster with Jenkins and Docker

SCM – GitHub

Page 28: How to deliver applications faster with Jenkins and Docker

CI/CD – Jenkins

Page 29: How to deliver applications faster with Jenkins and Docker
Page 30: How to deliver applications faster with Jenkins and Docker
Page 31: How to deliver applications faster with Jenkins and Docker

Registry – Docker Hub

Page 32: How to deliver applications faster with Jenkins and Docker

Pipelines as code - Demo

Page 33: How to deliver applications faster with Jenkins and Docker

Storing CI/CD pipelines alongside the codePipelines as code, Pipelines per product

Page 34: How to deliver applications faster with Jenkins and Docker

Epilogue

Page 35: How to deliver applications faster with Jenkins and Docker

How could you use Jenkins and Docker together?

• Pipelines with Docker• for

• Continuos Integration• Continuos Delivery• Blue/Green Deployments

• With• Docker Compose, Docker Registry/HUB, Docker Swarm• Docker Datacenter –UCP, DTR, Docker Swarm• Docker Cloud

• Dockerizing Jenkins • Master• Slaves

• Dockerizing the pipeline ( CI/CD tools)• GitHub Enteprise, SonarQube, Nexus, Selenium

Grid,

Page 36: How to deliver applications faster with Jenkins and Docker
Page 37: How to deliver applications faster with Jenkins and Docker

Docker Spanish User Group

http://bit.ly/docker-usergroup

Page 38: How to deliver applications faster with Jenkins and Docker
Page 39: How to deliver applications faster with Jenkins and Docker
Page 40: How to deliver applications faster with Jenkins and Docker