WaJUG DevOps Talk

Speakers

Julien GARCIA-GONZALEZ

julien

Damien DUPORTAL

damien

Motivations of this talk

When you only have a hammer in your toolbox, everything looks like a nail.

hammer screw

GitLab Project

Meet GitLab

gitlab
  • Started in 2011

  • Built with and for Open Source world

  • Remote Community driven

  • GitLab is unique:

    • We go from idea to production using one single interface that integrates all the tools we need!

From Idea To Production

idea to production

Why GitLab-CI

  • Opiniated

  • Integrated with your code

  • Auto-scaled runners

  • Provide a direct overview of your CI/CD pipeline

Jenkins Project

Meet Jenkins

butler w kk
  • #1 Continuous Integration and Delivery server

  • Created by Kohsuke Kawaguchi 12 years ago (Hudson)

  • An independent and active community (https://jenkins.io)

  • 100,000 active installations

  • 300,000 Jenkins servers

  • 1,200+ plugins

Jenkins Popularity

jenkins on ci radar
jenkins worldwide stats

Jenkins is the CD Orchestrator

jenkins cd orchestrator

Why Jenkins 2

Jenkins 2 Goals

  • Target: CI → CD

  • No breaking changes from Jenkins 1

    • Smooth upgrade

    • Plugins compatibility

  • First time experience improvement

    • Brand new Wizard

  • Pipeline-as-Code:

    • Jenkinsfile stored in SCM

    • Groovy DSL: "Code your Pipeline"

Jenkins in 2017

  • Declarative Pipeline

    • Still Jenkinsfile

    • Easier

    • Compatible with Scripted Pipeline

  • BlueOcean

    • Brand new GUI

    • Written in ReactJS

    • Opiniated

Context

Context: Example Application

votes

Context: Architecture

architecture

Context: Global Organization

  • Each application is owned by 1 team:

    • Python team

    • NodeJS team

    • Java Team

  • Database and infrastructure are owned by the Ops team

Context: Global Workflow

  • "Software Supply Chain"

entonnoir

Context: Single Team Workflow

single app workflow

Worker Application

Start with a simple application

Worker Application: Value

Persist the votes

  • Unstack votes from the In-Memory Queue (Redis)

  • For each vote found, write it in the RDBMS (PostgreSQL)

  • No GUI, no user facing, runs in the backend network

  • Critical for metrics, but no need for High Availability

Worker Application: Technical Stack

  • Written in Java

    • Needs Java 8

  • Maven Build Chain

    • mvn clean install

  • Runtime with Docker

    • "Uber-JAR"

    • Stateless

    • No crappy Application Server

Worker Application: Workflow

worker workflow

Improving our Pipeline

Parallelization

  • Integration Tests and Docker "Bats" Harness

    • Integration Tests are slow

    • No need to run them sequentially

  • Improvements examples:

    • More branches for JDK compliancy (7-8-9 / Oracle/JDK/IBM)

From CI to CD

  • CI: Continuous Integration

  • CD: Continuous Delivery

cd howto pipeline

Continuous Deployment ?

  • When the Dev meet the Ops

continuous depl vs delivery

Demo

Jenkins Demo

GitLab CI vs Jenkins

street fighter

Who wins ?

Vote for you best candidate !

http - damienduportal.org - port 5000

Thank You

  • WaJUG

  • Gitlab

  • CloudBees and Jenkins Project

  • La Forge

  • YOU