How to deliver applications faster with Jenkins and Docker

Post on 13-Jan-2017

464 views 1 download

transcript

How to deliver applications faster with

Jenkins and Docker 

bit.ly/luis-herrera@lherrerabenitez

Agenda- Delivering applications

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

- Pipelines. What? - Jenkins and Docker.

How? - Pipeline as Code –

DEMO

Why?

Relationship between software and revenue performance

All software is broken, all of the time …

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

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

7/10 projects failed or were challenged.

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

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.

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/

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.

Taking things too far…

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

What?

Automating CI/CD pipelines

From Development to Production…

Jenkins pipelines

Tools Change, Focus on Pipeline Capabilities Instead

How?

Votting app – Docker Birthday #3

SCM – GitHub

CI/CD – Jenkins

Registry – Docker Hub

Pipelines as code - Demo

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

Epilogue

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,

Docker Spanish User Group

http://bit.ly/docker-usergroup