SlideShare a Scribd company logo
1 of 16
CI/CD @ bol.com
Taking control from developers and giving it back again
1
•Maarten Dirkse
• CI/CD engineer
• @ bol.com for 4.5 years (started as a Java developer)
• Member of the DPI (read: Tools) team
• @mdirkse on twitter
•bol.com
• Largest online retail platform in the Netherlands and (the Flemish part of) Belgium
• 50+ scrum teams that work on 200+ applications and services
• Platform team of ~50 people that supports them
2
Who am I and what is bol.com?
1. Bol.com build fact(oids)
Stats, numbers, etc.
2. A long time ago, in a build toolchain far far away…
The old toolchain
3. That time we automated all the things
Adopting JobDSL and taking control of our builds
4. Mayfly buzz
Creating a CI/CD platform based on our own vision
5. Unkept gates
The future and how we plan to definitively get out of every team’s way
6. Q&A
The part where we all stare at each other in awkward silence ‘cause no one wants to go first
3
What I’ll be discussing
Bol.com build fact(oids)
4
Source
• 200+ services & apps
• ~ 3000 repositories in Gitlab
and Stash (yes… and)
• Java, Go, Groovy, PLSQL
Build
• 140 Jenkins slaves (VM’s)
• 4000+ Jenkins jobs
Deploy
• 2500+ VM’s
• ~ 1000 deploy jobs in
Rundeck
• 100’s of lines of Puppet
code to manage deploys
•SVN!
•Jenkins
• Configuration wild west: every job is different!
•DeployIT (now known as XLDeploy)
• Deploys done by “deployment engineers”
5
The old ball and (tool-)chain
•Teams responsible for their own configuration of jobs
• No standardization
• No quality control
•Tools team was responsible for Jenkins
• And thus, by extension, everyone’s problems (scalability issue)
•Deployment process was opaque to developers
• Code gets “thrown over the wall”, ops engineers deploy and run it
•Automated tests checks were done twice daily against test environment
• Completely divorced from the actual deploys of services
Problems
6
The old ball and (tool-)chain
• Jenkins JobDSL plugin
• Wrote our own config format that is used, in combination with the JobDSL, to generate all our
Jenkins jobs
• Result: teams control config, tools team controls output to Jenkins
• We can limit variation between jobs
• We can easily generate helper jobs (like check-jobs that follow immediately on the deploy)
• We can easily re-generate our entire Jenkins config
• Have a central place to implement best practices across all jobs
• But….
• One, central config repo
• Any individual config could still potentially screw up the Jenkins server, so…
• We employ a merge request model where the Tools team checks every config change (gatekeeping)
•On the ops side: deployment moved from DeployIT to Rundeck
Standardize!
7
Enter the JobDSL
•We had/have a shared testing environment
• Break it, and everyone’s work is on hold, while the team that has to fix it sweats
•We needed isolation, to provide
• Insulation from failure
• Stable master
• Breaking dependencies on other teams
• A stable environment to do automated tests checks
•We developed Mayfly
8
Mayfly
• Separate environment per feature
• Ability to mock out dependencies
• Ability to define your own build pipeline (including running checks)
• Block a merge to master before certain (team-defined) quality conditions are met, like:
• Basic build
• Automated tests
• “4-eyes” principle
• Successful deploy to the automated environment
• Custom, team-defined rule
• (Almost) complete team control over the CI part of CI/CD
• Everything is based on containers
• But... deploy still out of the hands of teams
What does it provide?
9
Mayfly
10
Unkept gates
What does the future hold for CI/CD?
11
Autonomy Automation
Build “consulting”
•Autonomy
teams should be able to build and deploy without blocking on dependencies on
anyone (API’s & self-service)
• But teams are responsible! No taxation without representation autonomy without
responsibility.
•Automation
Reduce the amount of manual action to a complete minimum
•Build consulting
“Hi, we’re the tools team. We’ve developed some wheels which work pretty
well and which we think you’ll like. But if not, feel free to invent your own.”
• (the same would hold for a “test tooling team”)
12
Unkept gates
The vision and approach of the tools
team must be validated by uptake.
Developers should want to use your
stuff, not be forced to adopt it.
Your tools must be better and more
appealing than something that can be
put together in some team’s spare
time.
13
Unkept gates
The Discerning User
14
Workflow of the future
15
http://banen.bol.com
Thanks!
till next bol.com

More Related Content

What's hot

Deploying your application on open stack using bosh presentation
Deploying your application on open stack using bosh presentationDeploying your application on open stack using bosh presentation
Deploying your application on open stack using bosh presentation
capouch
 

What's hot (20)

Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deploy
 
Docker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetupDocker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetup
 
Tame your test environment with Docker Compose
Tame your test environment with Docker ComposeTame your test environment with Docker Compose
Tame your test environment with Docker Compose
 
Deploying your application on open stack using bosh presentation
Deploying your application on open stack using bosh presentationDeploying your application on open stack using bosh presentation
Deploying your application on open stack using bosh presentation
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source tools
 
The Three Musketeers
The Three MusketeersThe Three Musketeers
The Three Musketeers
 
Travis CI
Travis CITravis CI
Travis CI
 
Packing It In: Images, Containers, and Config Management
Packing It In: Images, Containers, and Config ManagementPacking It In: Images, Containers, and Config Management
Packing It In: Images, Containers, and Config Management
 
SFJS 6-19-2012
SFJS 6-19-2012SFJS 6-19-2012
SFJS 6-19-2012
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
 
Command box, Package Manager, Automation, REPL
Command box, Package Manager, Automation, REPLCommand box, Package Manager, Automation, REPL
Command box, Package Manager, Automation, REPL
 
Visual Studio Release Management - New weltanschauung or natural evolution? @...
Visual Studio Release Management - New weltanschauung or natural evolution? @...Visual Studio Release Management - New weltanschauung or natural evolution? @...
Visual Studio Release Management - New weltanschauung or natural evolution? @...
 
Splunk user group - automating Splunk with Ansible
Splunk user group - automating Splunk with AnsibleSplunk user group - automating Splunk with Ansible
Splunk user group - automating Splunk with Ansible
 
Continuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeContinuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as Code
 
Implementation of the Continuous Integration based on Atlassian Bamboo
 Implementation of the Continuous Integration based on Atlassian Bamboo Implementation of the Continuous Integration based on Atlassian Bamboo
Implementation of the Continuous Integration based on Atlassian Bamboo
 
Dev objective2015 lets git together
Dev objective2015 lets git togetherDev objective2015 lets git together
Dev objective2015 lets git together
 
Sutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friendSutol 2016 - Automation is developer's friend
Sutol 2016 - Automation is developer's friend
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Riak at Posterous
Riak at PosterousRiak at Posterous
Riak at Posterous
 
Docker With Asp.net Core
Docker With Asp.net CoreDocker With Asp.net Core
Docker With Asp.net Core
 

Similar to CI/CD at bol.com

Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael Collins
Devopsdays
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Codecamp Romania
 
Rising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOpsRising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOps
IBM UrbanCode Products
 

Similar to CI/CD at bol.com (20)

The Key Components of Adopting CI The OpenStack Way
The Key Components of Adopting CI The OpenStack WayThe Key Components of Adopting CI The OpenStack Way
The Key Components of Adopting CI The OpenStack Way
 
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps JourneyGartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
Gartner Infrastructure and Operations Summit Berlin 2015 - DevOps Journey
 
DevOps Days Ohio
DevOps Days OhioDevOps Days Ohio
DevOps Days Ohio
 
Agile, DevOps & Test
Agile, DevOps & TestAgile, DevOps & Test
Agile, DevOps & Test
 
Enabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarEnabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinar
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
 
Dev ops lessons learned - Michael Collins
Dev ops lessons learned  - Michael CollinsDev ops lessons learned  - Michael Collins
Dev ops lessons learned - Michael Collins
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
DevOps! What, Why and How?
DevOps! What, Why and How?DevOps! What, Why and How?
DevOps! What, Why and How?
 
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
Iasi code camp 20 april 2013 marian chicu - database unit tests in the sql se...
 
Serverless Toronto helps Startups
Serverless Toronto helps StartupsServerless Toronto helps Startups
Serverless Toronto helps Startups
 
Sailing through devlopment with legacy code
Sailing through devlopment with legacy codeSailing through devlopment with legacy code
Sailing through devlopment with legacy code
 
Rising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOpsRising Above the Noise: Continuous Integration, Delivery and DevOps
Rising Above the Noise: Continuous Integration, Delivery and DevOps
 
2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysoslo2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysoslo
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
Smart Platform Infrastructure with AWS
Smart Platform Infrastructure with AWSSmart Platform Infrastructure with AWS
Smart Platform Infrastructure with AWS
 
What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?
 
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleCloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 

CI/CD at bol.com

  • 1. CI/CD @ bol.com Taking control from developers and giving it back again 1
  • 2. •Maarten Dirkse • CI/CD engineer • @ bol.com for 4.5 years (started as a Java developer) • Member of the DPI (read: Tools) team • @mdirkse on twitter •bol.com • Largest online retail platform in the Netherlands and (the Flemish part of) Belgium • 50+ scrum teams that work on 200+ applications and services • Platform team of ~50 people that supports them 2 Who am I and what is bol.com?
  • 3. 1. Bol.com build fact(oids) Stats, numbers, etc. 2. A long time ago, in a build toolchain far far away… The old toolchain 3. That time we automated all the things Adopting JobDSL and taking control of our builds 4. Mayfly buzz Creating a CI/CD platform based on our own vision 5. Unkept gates The future and how we plan to definitively get out of every team’s way 6. Q&A The part where we all stare at each other in awkward silence ‘cause no one wants to go first 3 What I’ll be discussing
  • 4. Bol.com build fact(oids) 4 Source • 200+ services & apps • ~ 3000 repositories in Gitlab and Stash (yes… and) • Java, Go, Groovy, PLSQL Build • 140 Jenkins slaves (VM’s) • 4000+ Jenkins jobs Deploy • 2500+ VM’s • ~ 1000 deploy jobs in Rundeck • 100’s of lines of Puppet code to manage deploys
  • 5. •SVN! •Jenkins • Configuration wild west: every job is different! •DeployIT (now known as XLDeploy) • Deploys done by “deployment engineers” 5 The old ball and (tool-)chain
  • 6. •Teams responsible for their own configuration of jobs • No standardization • No quality control •Tools team was responsible for Jenkins • And thus, by extension, everyone’s problems (scalability issue) •Deployment process was opaque to developers • Code gets “thrown over the wall”, ops engineers deploy and run it •Automated tests checks were done twice daily against test environment • Completely divorced from the actual deploys of services Problems 6 The old ball and (tool-)chain
  • 7. • Jenkins JobDSL plugin • Wrote our own config format that is used, in combination with the JobDSL, to generate all our Jenkins jobs • Result: teams control config, tools team controls output to Jenkins • We can limit variation between jobs • We can easily generate helper jobs (like check-jobs that follow immediately on the deploy) • We can easily re-generate our entire Jenkins config • Have a central place to implement best practices across all jobs • But…. • One, central config repo • Any individual config could still potentially screw up the Jenkins server, so… • We employ a merge request model where the Tools team checks every config change (gatekeeping) •On the ops side: deployment moved from DeployIT to Rundeck Standardize! 7 Enter the JobDSL
  • 8. •We had/have a shared testing environment • Break it, and everyone’s work is on hold, while the team that has to fix it sweats •We needed isolation, to provide • Insulation from failure • Stable master • Breaking dependencies on other teams • A stable environment to do automated tests checks •We developed Mayfly 8 Mayfly
  • 9. • Separate environment per feature • Ability to mock out dependencies • Ability to define your own build pipeline (including running checks) • Block a merge to master before certain (team-defined) quality conditions are met, like: • Basic build • Automated tests • “4-eyes” principle • Successful deploy to the automated environment • Custom, team-defined rule • (Almost) complete team control over the CI part of CI/CD • Everything is based on containers • But... deploy still out of the hands of teams What does it provide? 9 Mayfly
  • 10. 10
  • 11. Unkept gates What does the future hold for CI/CD? 11 Autonomy Automation Build “consulting”
  • 12. •Autonomy teams should be able to build and deploy without blocking on dependencies on anyone (API’s & self-service) • But teams are responsible! No taxation without representation autonomy without responsibility. •Automation Reduce the amount of manual action to a complete minimum •Build consulting “Hi, we’re the tools team. We’ve developed some wheels which work pretty well and which we think you’ll like. But if not, feel free to invent your own.” • (the same would hold for a “test tooling team”) 12 Unkept gates
  • 13. The vision and approach of the tools team must be validated by uptake. Developers should want to use your stuff, not be forced to adopt it. Your tools must be better and more appealing than something that can be put together in some team’s spare time. 13 Unkept gates The Discerning User