SlideShare a Scribd company logo
1 of 40
Download to read offline
From Virtual Machines to Containers
Achieving Continuous Integration, Build Reproducibility, Isolation and Scalability
London, UK, June 2015
1
#jenkinsconf
Agenda
• Introduction
• The Dark Age
• The Promising Present
• Lessons Learned
• The Bright Future
#jenkinsconf
2014201320122011201020092008
Incorporation
Camunda Services GmbH
Berlin, Germany
Incorporation
Camunda Inc.
San Francisco, US
BPM Consulting BPM Software Vendor
● 30 Fulltime Employees ● No external funding ● Avg. 50% Turnover Growth per Year
Introduction - About Camunda
@camundaBPM
Introduced
Hudson
Adapted
Jenkins
#jenkinsconf
Introduction - Camunda BPM
#jenkinsconf
Introduction - What is Camunda BPM
• Camunda BPM is an open source platform
for workflow and business process automation
• Integrates with:
• 7 Application Server (11 different versions)
• 6 Databases (17 different versions)
• 1 Development & 4 Maintained Versions
#jenkinsconf
• Every Camunda BPM version is tested against:
• 187 combinations of DBs and App Servers
• 11 JDKs
• ~ 400 Jobs per version
• Bi-Annual release of a new Camunda BPM version
• Support for Enterprise Customer (24/7 + Fix Time)
Introduction - Why CI is Important
#jenkinsconf
The Dark Age
Why our CI had to change
7
#jenkinsconf
The Dark Age - The Numbers
• 1 Jenkins Master with alot of plugins
• 8 Jenkins Slaves VMs
• ~1000 Jobs total configured / manually managed:
• 4 Camunda Versions
• Community Projects
• Websites
• Maintenance
#jenkinsconf
The Dark Age - Isolation Problem
• Unit and Integration Tests need a
database/application server
• Only 1 Instance per Database
• All Jobs use the same Databases
• Every half-year a new Version (~400 Jobs) using
same Databases
#jenkinsconf
The Dark Age - No Scalability
• Total Executors: 12
• 1 Jenkins -> 4 Executors
• 8 static heterogenous slave VMs, each with 1
Executor
• Jobs tied to slaves through labels
• Slaves “restrict” database access by allowing no
other build to run
#jenkinsconf
The Dark Age - Maintenance Problems
• Upgrading Jenkins or any plugin
• Supporting a new Database vendor / version
• Supporting a new App Server version
• Creating jobs for new Camunda BPM version
• Disaster recovery
#jenkinsconf
The Dark Age - The Other Problems
• Slow feedback cycle for developers
• Developers cannot reproduce CI environments
• QA engineers use and maintain separate bloated
test build setup
#jenkinsconf
So ...
#jenkinsconf
The Promising Present
How we solved our Problem
14
#jenkinsconf
The Present - What we achieved
• Configuration & Infrastructure as Code
• Isolated and Reproducible Jobs
• Scalable CI Infrastructure
#jenkinsconf
The Present - Infrastructure as Code
1. Every configuration is checked into SCM
2. Every application/test runs in a Docker
Container
3. Every Docker image is build
automatically
#jenkinsconf
The Present - Infrastructure as Code
1. Every Configuration is checked into SCM
• Docker for
• Applications
• Test Environments
• JobDSL for
• Jenkins Jobs
#jenkinsconf
The Present - Infrastructure as Code
2. Every application/test runs in a Docker Container
Images:
• Application (Jenkins, Nexus …)
• Test Env. Images (DB + SSH)
• Build Env. Images
• DIND, QEMU + Packer.io
#jenkinsconf
The Present - Infrastructure as Code
3. Every Docker Container is build automatically
• Own Jenkins for Docker/KVM Images
• KVM Images build in Docker Container
with Packer + QEMU
• KVM Images bundled in Docker Image
#jenkinsconf
The Present - The Current Flow
camunda-ci
camunda
Camunda BPM
Platform
Infrastructure
Jenkins
CI Jenkins
#jenkinsconf
The Present - Isolation
One Jenkins per Concern:
• CI
• Release
• Infrastructure
• Community and other Projects
• Marketing
#jenkinsconf
The Present - Isolation & Reproducibility
• Every Jobs runs in an One-Shot Docker Container
• No Interference between Jobs
• The Database Settings are well documented
• Every Docker Image is stored in a private registry
• Developers/QA can use the Docker Images for local
testing
#jenkinsconf
The Present - Scalability
• Jenkins uses Docker-Plugin with one Docker Cloud
running on Docker Swarm
• Docker images are added through Groovy scripting
• Running on Commodity Hardware
• 1 Infrastructure Host (Jenkins, Nexus, …)
• 6 Docker Hosts as 1 Swarm
#jenkinsconf
The Present - Scalability
#jenkinsconf
The Present - Advantages
• Easy to add new Databases/Test Environments
• New Release = New Branch of JobDSL Repository
• Fully parallelized Job Execution
• Accountable Configuration History
• Testable Infrastructure
• Minimize Administration Overhead
#jenkinsconf
The Present - Conclusion
• 2 People + 3 Months of Work
• A fully scalable, isolated and reproducible CI
Infrastructure
• Faster Feedback
• Happy Developers and Product Owner
#jenkinsconf
Lessons learned
27
Some advice from us to you
#jenkinsconf
• Automate as much as you can
• Jenkins config
• Jobs config
• Environment creation
• Design to scale to support the business agility
Lessons learned - Architecture
#jenkinsconf
Lessons learned - Testing
Test everything:
• Jenkins configuration
• required plugin features
• Job generation
• Docker images
• Scalability
• Disaster recovery
#jenkinsconf
Lessons learned - Job DSL
• Unit-test the job generation
• Write JobGenerator classes to abstract the
common build logic of most jobs out of the box
• Use XML diffing to compare previously generated
jobs with new ones
#jenkinsconf
Lessons learned - Docker
https://github.com/rancherio/vm/
#jenkinsconf
• Pin your plugin versions
• Be prepared to contribute to plugin development or
maintain a branch yourself
• Choose the right plugin for the job
Our Top 3 plugins:
JobDSL, Docker-Plugin, Build-Failure-Analyzer
Lessons learned - Plugins
#jenkinsconf
Lessons learned - Control
• Control as much as possible
• Third party binaries vs package manager
• explicit versions
• own mirrors for important packages
#jenkinsconf
The Bright Future
What comes next
34
#jenkinsconf
The Future
• Public Community Jenkins
• Internal Webapp for Developers and QA to start
Environments
• Jenkins is deploying Jenkins
• Back to the Datacenter
• Centralized Logging and Monitoring (ELK)
#jenkinsconf
#jenkinsconf
37
#jenkinsconf
Resources
• Camunda CI repository
https://github.com/camunda-ci
• Job DSL gradle example
https://github.com/sheehan/job-dsl-gradle-example
• Camunda BPM Docker image
https://registry.hub.docker.
com/u/camunda/camunda-bpm-platform/
#jenkinsconf
We Are Hiring
Come Join Us
@camundaBPM
http://camunda.com/jobs
#jenkinsconf
Please Share Your Feedback
• Did you find this session valuable?
• Please share your thoughts in the
Jenkins User Conference Mobile App.
• Find the session in the app and click
on the feedback area.
40

More Related Content

What's hot

What's hot (20)

JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
JUC Europe 2015: Optimizing Your CI: Lessons Learned from a Successful Jenkin...
 
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
JUC Europe 2015: Jenkins-Based Continuous Integration for Heterogeneous Hardw...
 
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
JUC Europe 2015: Continuous Integration and Distribution in the Cloud with DE...
 
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data ProjectsJUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
JUC Europe 2015: Jenkins Pipeline for Continuous Delivery of Big Data Projects
 
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
JUC Europe 2015: Orchestrating Your Pipelines with Jenkins, Python and the Je...
 
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-CodeSD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
SD DevOps Meet-up - Jenkins 2.0 and Pipeline-as-Code
 
Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalability
 
Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
At Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in OperationsAt Your Service: Using Jenkins in Operations
At Your Service: Using Jenkins in Operations
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
Managing Jenkins with Jenkins (Jenkins User Conference Palo Alto, 2013)
 
Jenkins Scriptler in 90mins
Jenkins Scriptler in 90minsJenkins Scriptler in 90mins
Jenkins Scriptler in 90mins
 
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins PipelinesAn Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
 

Similar to JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous Integration, Build Reproducibility, Isolation and Scalability

Similar to JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous Integration, Build Reproducibility, Isolation and Scalability (20)

Cicd pixelfederation
Cicd pixelfederationCicd pixelfederation
Cicd pixelfederation
 
DevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of JenkinsDevOps World | Jenkins World 2018 and The Future of Jenkins
DevOps World | Jenkins World 2018 and The Future of Jenkins
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
 
Next generation pipelines
Next generation pipelinesNext generation pipelines
Next generation pipelines
 
Configuration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginConfiguration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL Plugin
 
Version your build process as you version your code
Version your build process as you version your codeVersion your build process as you version your code
Version your build process as you version your code
 
Jenkins Meetup Pune
Jenkins Meetup PuneJenkins Meetup Pune
Jenkins Meetup Pune
 
Jenkins X intro (from google app dev conference)
Jenkins X intro (from google app dev conference)Jenkins X intro (from google app dev conference)
Jenkins X intro (from google app dev conference)
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
 
Continuous Delivery with Jenkins & Kubernetes @ Sky
Continuous Delivery with Jenkins & Kubernetes @ SkyContinuous Delivery with Jenkins & Kubernetes @ Sky
Continuous Delivery with Jenkins & Kubernetes @ Sky
 
Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkins
 
DockerCon SF 2015: Docker at Lyft
DockerCon SF 2015: Docker at LyftDockerCon SF 2015: Docker at Lyft
DockerCon SF 2015: Docker at Lyft
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developer
 
Jenkins as a Service - Code all the way down
Jenkins as a Service - Code all the way downJenkins as a Service - Code all the way down
Jenkins as a Service - Code all the way down
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
 
Continuous Integration and Deployment with Jenkins for PCF
Continuous Integration and Deployment with Jenkins for PCFContinuous Integration and Deployment with Jenkins for PCF
Continuous Integration and Deployment with Jenkins for PCF
 

More from CloudBees

Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
CloudBees
 

More from CloudBees (17)

JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
JUC Europe 2015: Multi-Node Environment as a Jenkins Slave (Compound-Slave)
 
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
JUC Europe 2015: Making Strides towards Enterprise-Scale DevOps...with Jenkin...
 
JUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UIJUC Europe 2015: Evolving the Jenkins UI
JUC Europe 2015: Evolving the Jenkins UI
 
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache MesosJUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
JUC Europe 2015: Using Infrastructure Nodes Wisely With Jenkins and Apache Mesos
 
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
JUC Europe 2015: How to Optimize Automated Testing with Everyone's Favorite B...
 
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
JUC 2015 - Keynote Address and Opening Remarks by Kohsuke Kawaguchi, Founder,...
 
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL PluginJUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
 
JUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with JenkinsJUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with Jenkins
 
Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11Pimp your jenkins platform with docker - Devops.com 2015/11
Pimp your jenkins platform with docker - Devops.com 2015/11
 
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and AnalyticsAnalyze This! CloudBees Jenkins Cluster Operations and Analytics
Analyze This! CloudBees Jenkins Cluster Operations and Analytics
 
Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014Jenkins Workflow Webinar - Dec 10, 2014
Jenkins Workflow Webinar - Dec 10, 2014
 
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
CI and CD Across the Enterprise with Jenkins (devops.com Nov 2014)
 
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
Pimp your Continuous Delivery Pipeline with Jenkins workflow (W-JAX 14)
 
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
From Continuous Integration to Continuous Delivery with Jenkins - javaland.de...
 
Rethinking Application Design for the Cloud
Rethinking Application Design for the CloudRethinking Application Design for the Cloud
Rethinking Application Design for the Cloud
 
The Fall of Giants
The Fall of GiantsThe Fall of Giants
The Fall of Giants
 
Getting Started with Platform-as-a-Service
Getting Started with Platform-as-a-ServiceGetting Started with Platform-as-a-Service
Getting Started with Platform-as-a-Service
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous Integration, Build Reproducibility, Isolation and Scalability

  • 1. From Virtual Machines to Containers Achieving Continuous Integration, Build Reproducibility, Isolation and Scalability London, UK, June 2015 1
  • 2. #jenkinsconf Agenda • Introduction • The Dark Age • The Promising Present • Lessons Learned • The Bright Future
  • 3. #jenkinsconf 2014201320122011201020092008 Incorporation Camunda Services GmbH Berlin, Germany Incorporation Camunda Inc. San Francisco, US BPM Consulting BPM Software Vendor ● 30 Fulltime Employees ● No external funding ● Avg. 50% Turnover Growth per Year Introduction - About Camunda @camundaBPM Introduced Hudson Adapted Jenkins
  • 5. #jenkinsconf Introduction - What is Camunda BPM • Camunda BPM is an open source platform for workflow and business process automation • Integrates with: • 7 Application Server (11 different versions) • 6 Databases (17 different versions) • 1 Development & 4 Maintained Versions
  • 6. #jenkinsconf • Every Camunda BPM version is tested against: • 187 combinations of DBs and App Servers • 11 JDKs • ~ 400 Jobs per version • Bi-Annual release of a new Camunda BPM version • Support for Enterprise Customer (24/7 + Fix Time) Introduction - Why CI is Important
  • 7. #jenkinsconf The Dark Age Why our CI had to change 7
  • 8. #jenkinsconf The Dark Age - The Numbers • 1 Jenkins Master with alot of plugins • 8 Jenkins Slaves VMs • ~1000 Jobs total configured / manually managed: • 4 Camunda Versions • Community Projects • Websites • Maintenance
  • 9. #jenkinsconf The Dark Age - Isolation Problem • Unit and Integration Tests need a database/application server • Only 1 Instance per Database • All Jobs use the same Databases • Every half-year a new Version (~400 Jobs) using same Databases
  • 10. #jenkinsconf The Dark Age - No Scalability • Total Executors: 12 • 1 Jenkins -> 4 Executors • 8 static heterogenous slave VMs, each with 1 Executor • Jobs tied to slaves through labels • Slaves “restrict” database access by allowing no other build to run
  • 11. #jenkinsconf The Dark Age - Maintenance Problems • Upgrading Jenkins or any plugin • Supporting a new Database vendor / version • Supporting a new App Server version • Creating jobs for new Camunda BPM version • Disaster recovery
  • 12. #jenkinsconf The Dark Age - The Other Problems • Slow feedback cycle for developers • Developers cannot reproduce CI environments • QA engineers use and maintain separate bloated test build setup
  • 14. #jenkinsconf The Promising Present How we solved our Problem 14
  • 15. #jenkinsconf The Present - What we achieved • Configuration & Infrastructure as Code • Isolated and Reproducible Jobs • Scalable CI Infrastructure
  • 16. #jenkinsconf The Present - Infrastructure as Code 1. Every configuration is checked into SCM 2. Every application/test runs in a Docker Container 3. Every Docker image is build automatically
  • 17. #jenkinsconf The Present - Infrastructure as Code 1. Every Configuration is checked into SCM • Docker for • Applications • Test Environments • JobDSL for • Jenkins Jobs
  • 18. #jenkinsconf The Present - Infrastructure as Code 2. Every application/test runs in a Docker Container Images: • Application (Jenkins, Nexus …) • Test Env. Images (DB + SSH) • Build Env. Images • DIND, QEMU + Packer.io
  • 19. #jenkinsconf The Present - Infrastructure as Code 3. Every Docker Container is build automatically • Own Jenkins for Docker/KVM Images • KVM Images build in Docker Container with Packer + QEMU • KVM Images bundled in Docker Image
  • 20. #jenkinsconf The Present - The Current Flow camunda-ci camunda Camunda BPM Platform Infrastructure Jenkins CI Jenkins
  • 21. #jenkinsconf The Present - Isolation One Jenkins per Concern: • CI • Release • Infrastructure • Community and other Projects • Marketing
  • 22. #jenkinsconf The Present - Isolation & Reproducibility • Every Jobs runs in an One-Shot Docker Container • No Interference between Jobs • The Database Settings are well documented • Every Docker Image is stored in a private registry • Developers/QA can use the Docker Images for local testing
  • 23. #jenkinsconf The Present - Scalability • Jenkins uses Docker-Plugin with one Docker Cloud running on Docker Swarm • Docker images are added through Groovy scripting • Running on Commodity Hardware • 1 Infrastructure Host (Jenkins, Nexus, …) • 6 Docker Hosts as 1 Swarm
  • 25. #jenkinsconf The Present - Advantages • Easy to add new Databases/Test Environments • New Release = New Branch of JobDSL Repository • Fully parallelized Job Execution • Accountable Configuration History • Testable Infrastructure • Minimize Administration Overhead
  • 26. #jenkinsconf The Present - Conclusion • 2 People + 3 Months of Work • A fully scalable, isolated and reproducible CI Infrastructure • Faster Feedback • Happy Developers and Product Owner
  • 28. #jenkinsconf • Automate as much as you can • Jenkins config • Jobs config • Environment creation • Design to scale to support the business agility Lessons learned - Architecture
  • 29. #jenkinsconf Lessons learned - Testing Test everything: • Jenkins configuration • required plugin features • Job generation • Docker images • Scalability • Disaster recovery
  • 30. #jenkinsconf Lessons learned - Job DSL • Unit-test the job generation • Write JobGenerator classes to abstract the common build logic of most jobs out of the box • Use XML diffing to compare previously generated jobs with new ones
  • 31. #jenkinsconf Lessons learned - Docker https://github.com/rancherio/vm/
  • 32. #jenkinsconf • Pin your plugin versions • Be prepared to contribute to plugin development or maintain a branch yourself • Choose the right plugin for the job Our Top 3 plugins: JobDSL, Docker-Plugin, Build-Failure-Analyzer Lessons learned - Plugins
  • 33. #jenkinsconf Lessons learned - Control • Control as much as possible • Third party binaries vs package manager • explicit versions • own mirrors for important packages
  • 35. #jenkinsconf The Future • Public Community Jenkins • Internal Webapp for Developers and QA to start Environments • Jenkins is deploying Jenkins • Back to the Datacenter • Centralized Logging and Monitoring (ELK)
  • 38. #jenkinsconf Resources • Camunda CI repository https://github.com/camunda-ci • Job DSL gradle example https://github.com/sheehan/job-dsl-gradle-example • Camunda BPM Docker image https://registry.hub.docker. com/u/camunda/camunda-bpm-platform/
  • 39. #jenkinsconf We Are Hiring Come Join Us @camundaBPM http://camunda.com/jobs
  • 40. #jenkinsconf Please Share Your Feedback • Did you find this session valuable? • Please share your thoughts in the Jenkins User Conference Mobile App. • Find the session in the app and click on the feedback area. 40