Top Banner
@gitenterprise #DevoxxPL Platinum Sponsors: Speed-up your Continuous Delivery with BigData Luca Milanesio GerritForge
25

Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

Jan 22, 2018

Download

Technology

Luca Milanesio
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

Platinum Sponsors:

Speed-up your Continuous Delivery

with BigData

Luca Milanesio

GerritForge

Page 2: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

• Founded in the UK

• HQ in London, Offices in

the UK and Italy

• Committed to

OpenSource

About GerritForge

Page 3: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

• Co-founder and

Director of GerritForge

• over 20 years in Agile

Development and ALM

• Contributor to many

OpenSource projects

• Mind and hands of

@gitenterprise and

@gerritreview

About Luca Milanesio

Page 4: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

NOT a lecture on Continuous Delivery

NOT a lecture on Code Review

NOT a lecture on BigData

What NOT to expect?

Page 5: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

SO WHAT?#!@$!

Page 6: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

SHOWa scenario of Continuous Delivery

Page 7: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

LEARN together about the problems

Page 8: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

EXPERIMENT my approach leveraging BigData

Page 9: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

DISCUSS and evolve the approach together

Page 10: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

Continuous Delivery Pipeline

Push Build

Unit Tests

Push Build

Unit Tests

Automated

Tests

Push Build

Unit Tests

Automated

Tests

Beta Users

Tests

User's feedback Publish to all Users

Failed

Failed

Page 11: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

Code Review & CD Validation

A1

refs/for/master

master

C2 C2*

A1 C2(local)

masterC2*

push

Verified: -1

(build failed)

push

Verified: +1

(build OK)

Reviewed: +2

CI Build: OK

C2*

CI Build: OK

amend

Page 12: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

Git/Gerrit(Code Review)

Jenkins (Continuous

Integration & Delivery)

Docker(Release and Service

Packaging)

Mesos &

Marathon(Delivery and Resource

Manangement)

Components

Page 13: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

DEMO

See the pipeline in action

Page 14: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

We use micro-services

• 100+ Components

• 200+ Repositories

• 300+ People and 100,000+ of review comments

• Cross-components [implicit] dependencies

• Lots of build chains

• 10,000+ of builds

Now feel the pain :-(

Page 15: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

"It was working until 5

mins ago … then

someone changed

something"

Rings any

bell?

Problem #1 : Ripple effect

Page 16: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

In order to deliver Feature ABC

I NEED

Ver. N of Service-A with

Ver. M of Service-B and

Ver. K of Service C

Problem #2 : Dependencies

Page 17: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

"Where can I find an environment

to

run ALL my Micro-Services

integration tests?"

Problem #3 : Resources

Page 18: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

Release small changes is GOOD

Release often every change is GOOD

BUTHow long it takes the "Big Picture" and End-to-End?

Where is my bottleneck?

Problem #4 : Cycle time

Page 19: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

Micro-Services are

distributed

Builds are distributed

Deployments are

distributed

Tackling THIS

have you ever felt

like drowning in

your logs?

Problem #5 : Lots of logs

Page 20: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

Problems #1 + #2 + #3 + #4 + #5 =

lead to your daily

Micro-Services mental meltdown

Problem #6 : all together

Page 21: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

• Collect all review events

• Collect all logs

• Channel them to a

central store

• Crunch and Crunch

continuously

• Never delete

• Process, inspect and

learn

BigData to the rescue

Page 22: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

DEMO

Continuous Delivery Analytics

Page 23: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

•Problem #1 – Ripple effect?

•Problem #2 – Dependencies?

•Problem #3 – Resources?

•Problem #4 – Cycle Time?

•Problem #5 – Logs aggregation?

•Problem #6 – Avoid mental meltdown?

Did we solve the problems?

Page 24: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

• Collect more data (System, JVM, Review

scores)

• Real-time statistics

• Events correlation

• Feedback loop to Code-Review

• Production data harvest

• More?

Future directions

Page 25: Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics

@gitenterprise#DevoxxPL

• My blog

www.gitenterprise.me

• Gerrit Code Review

www.gerritcodereview.co

m

• Jenkins

www.jenkins.io

• RabbitMQ

rabbitmq.com

• Apache Flume

flume.apache.org

• Hadoop HDFS

hadoop.apache.org

• Apache Spark

spark.apache.org

• Kibana

github.com/elastic/kibana

Resources