SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Free Classifieds 
www.olx.com 
Continuous Delivery 
Release Management 
Buenos Aires, April 2014
2 
Agenda 
1. Initial Situation 
2. Initial Setup 
3. Continuous Delivery Adoption - How we started 
4. Deployment stages 
5. Application configuration deployment 
6. Introducing Octopush 
7. Architecture evolution 
8. Tooling 
9. Culture changing 
10. Lessons learned 
11. What we have achieved 
12. Next steps 
13. Q&A
3
4 
Initial Situation 
Situation 
Complication 
BigBang/Stressful releases, once every two weeks 
Multiple Development Teams -> # deployments increasing 
Few automation - Most of the tasks were manual 
Monolithic platform / Dependency hell 
Manual Configuration 
SVN 
Some teams doing CI 
Distrust & escepticism 
• Business Risk 
 Product Delivery 
 Product Quality 
 Need to shorten the time to market when adding new 
features 
 Competitive advantage: Need more efficient processes and 
reduce operational costs. 
• Growing teams 
• Going Global / distributed team / different time zones
SVN 
5 
CI Server 
RM Server 
ssh/console 
Trigger job 
Dev Team 
I 
Release 
Management 
Initial CI and RM Setup 
Dev Team 
II
6 
Initial Picture
7 
Decision
8 
Initial Assessment 
Source: http://www.infoq.com/articles/Continuous-Delivery-Maturity-Model
Continuous Delivery Adoption 
• Sharing the situation and necessity 
• Management commitment 
• Resources allocated 
• Continuous Integration 
• Continuous Delivery 
• Continuous deployment 
• Reduce Errors / Lower Stress / Lower Delta Changes Release 
• On Demand Deployment/ Built Quality In 
• Everybody Is Responsible for the Delivery Process/ Continuous 
9 
Improvement 
• Establish Phases and goals 
• Scope by component 
• Assumptions / expectations 
• Project Risk Identification 
Commitment 
Concepts alignment 
Setting Goals 
Project Management
Dev Env Integration/Acceptance Env 
10 
High Level View 
Commit 
Stage 
Deployment 
Stage 
Acceptance 
Stage Live 
Production Env 
Manual gate :: RM Button 
Automatic :: Web-hook
11 
Integration 
Jenkins 
Commit Stage 
from Git master branch to Artifactory 
Git Master/Branch Artifactory Release 
Jenkins 
Checkout 
Publish binaries 
Trigger Release 
Checkpoint: 
- build or pre-compile 
- run unit test & coverage 
Deployment 
Stage 
[ENV available?]::Go::Wait 
Commit hook 
Commit 
Build
12 
Deployment Stage 
Release Jenkins 
from Integration 
Jenkins 
Acceptance Artifactory Git repo 
Env. 
[If code] Get Binaries 
[If config] Get Config 
from Artifactory to Acceptance Env 
To Integration 
Jenkins 
Run Deploy Script 
Run smoke 
test 
Automatic 
Rollback upon 
failure 
Code OR 
Config, 
NEVER both
13 
Acceptance Stage 
Integration/Dev Jenkins 
from Release 
Jenkins 
Acceptance Env. 
from Acceptance Env to Production Gate 
To Release 
Jenkins 
Run Acceptance 
Tests 
Run Performance Tests* 
* Using YSlow for frontend 
testing 
Automatic 
Rollback upon 
failure
Application configuration deployment 
14 
Config files, from the repo to the environment 
ggiti-tc-cryryppt t
Architecture evolution 
Frequency/Complexity/Impact/Risk/Speed deployment 
15
16 
Introducing Octopush 
Jenkins 
Mobile 
Jenkins 
Frontend 
Jenkins 
Backend 
Jenkins 
blah 
Make 
deployment 
request 
Enqueues job 
Pick next available job 
Call Jenkins to deploy 
Polls/notify on completion 
Deploy 
Orchestrate Jenkins Hell! 
OOppeenn S Soouurrccee 
Call 
deployment 
job
17 
Pipeline layers
The Revolution will not be centralized 
18
19 
Remaining 
servers 
Alert 
ROLLBACK 
Wait 
Monitor 
Check 
Canary Release 
Release 
pool
20 
Tooling 
RREESSTT A APPII
22 
Culture Changing
23 
Lessons learned 1/2 
Architecture 
Smoke Test 
Infrastructure-as-code 
Conventions 
• Application architecture. 
• Tooling architecture should also be layered and Service oriented. 
• Integrate your own tools with Jenkins JIRA, IRC, Graphite, most of them 
have a REST API service. No silver bullet 
• Divide configuration 
• Health checks! 
• Track & version your scripts, follow Software design principles 
• Same scripts/infra everywhere!, use config files to resolve hostname 
issues 
• Scripts should be idempotent 
• Apps/repos/users/package naming. 
Canary Releases • Use a Testing pool, automate!.
24 
Lessons learned 2/2 
Communication 
• Clear channel 
• IRC 
• Automate. 
Strategy 
• MVP 
• Advertise progress/delays, achievements, use charts/hard data. 
• Early adopters.
Releases Conclusions 
25 
• Tripled our 
Production 
deployment 
throughput . 
• More confident and 
error-free releases. 
• Less stress, near-zero 
manual work, 
easier, faster deploys 
Achievements 
Octopush 
decentraliza 
tion
26 
Next steps 
1.Native packages 
1.Deploy integration with Puppet 
1.Virtualization / Docker 
.
27 
Q&A 
.
Thank You (We are hiring DEVOPS) 
Continuous Delivery Team 
Diego Garber @diegarber 
Google+ Communities: OLX Engineering 
28

Weitere ähnliche Inhalte

Was ist angesagt?

Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
Mike McGarr
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
Steve Povilaitis
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
amscanne
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
gaoliang641
 

Was ist angesagt? (20)

How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
 
Introduce to Git and Jenkins
Introduce to Git and JenkinsIntroduce to Git and Jenkins
Introduce to Git and Jenkins
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
CICD by Teerapat
CICD by TeerapatCICD by Teerapat
CICD by Teerapat
 
Continuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook QualityContinuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook Quality
 
Simple ci cd with strider cd
Simple ci cd with strider cdSimple ci cd with strider cd
Simple ci cd with strider cd
 
Continuous testing in agile projects 2015
Continuous testing in agile projects 2015Continuous testing in agile projects 2015
Continuous testing in agile projects 2015
 
Dev ops for rpa
Dev ops for rpaDev ops for rpa
Dev ops for rpa
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Contineous integration
Contineous integrationContineous integration
Contineous integration
 
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment PatternsHow do you implement Continuous Delivery?: Part 5 - Deployment Patterns
How do you implement Continuous Delivery?: Part 5 - Deployment Patterns
 
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
 Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S... Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
Tips to achieve continuous integration/delivery using HP ALM, Jenkins, and S...
 
The 10 Commandments of Release Engineering
The 10 Commandments of Release EngineeringThe 10 Commandments of Release Engineering
The 10 Commandments of Release Engineering
 
Twelve factor apps
Twelve factor appsTwelve factor apps
Twelve factor apps
 

Andere mochten auch

Andere mochten auch (8)

Gamme CLAMP - CLAMP Unions - FG INOX
Gamme CLAMP - CLAMP Unions - FG INOXGamme CLAMP - CLAMP Unions - FG INOX
Gamme CLAMP - CLAMP Unions - FG INOX
 
WSO2Con EU 2016: Automate and Orchestrate DevOps
WSO2Con EU 2016: Automate and Orchestrate DevOpsWSO2Con EU 2016: Automate and Orchestrate DevOps
WSO2Con EU 2016: Automate and Orchestrate DevOps
 
Mobile WebDriver Selendroid
Mobile WebDriver SelendroidMobile WebDriver Selendroid
Mobile WebDriver Selendroid
 
Explore Advanced CA Release Automation Configuration Topics
Explore Advanced CA Release Automation Configuration TopicsExplore Advanced CA Release Automation Configuration Topics
Explore Advanced CA Release Automation Configuration Topics
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
Boston meetup blaze_meter_feb2017
Boston meetup blaze_meter_feb2017Boston meetup blaze_meter_feb2017
Boston meetup blaze_meter_feb2017
 
Selenium Basics Tutorial
Selenium Basics TutorialSelenium Basics Tutorial
Selenium Basics Tutorial
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
 

Ähnlich wie Continuous Delivery Agiles 2014 Medellin

Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysOur DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Dynatrace
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
Dynatrace
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
CIVEL Benoit
 

Ähnlich wie Continuous Delivery Agiles 2014 Medellin (20)

Journey toward3rdplatform
Journey toward3rdplatformJourney toward3rdplatform
Journey toward3rdplatform
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
Mobile App Quality Roadmap for DevTest Teams
Mobile App Quality Roadmap for DevTest TeamsMobile App Quality Roadmap for DevTest Teams
Mobile App Quality Roadmap for DevTest Teams
 
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code DeploysOur DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
Our DevOps Journey: 6 Month Waterfalls to 1 Hour Code Deploys
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
 
Journey Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment MaturityJourney Through Four Stages of Kubernetes Deployment Maturity
Journey Through Four Stages of Kubernetes Deployment Maturity
 
Dev ops continuousdeliveryforcloudproduct
Dev ops continuousdeliveryforcloudproductDev ops continuousdeliveryforcloudproduct
Dev ops continuousdeliveryforcloudproduct
 
CI/CD on AWS
CI/CD on AWSCI/CD on AWS
CI/CD on AWS
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOps
 
A Blueprint for a Successful DevOps Metamorphosis
A Blueprint for a Successful DevOps MetamorphosisA Blueprint for a Successful DevOps Metamorphosis
A Blueprint for a Successful DevOps Metamorphosis
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Dev ops using Jenkins
Dev ops using JenkinsDev ops using Jenkins
Dev ops using Jenkins
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
 
Andreas Grabner - Performance as Code, Let's Make It a Standard
Andreas Grabner - Performance as Code, Let's Make It a StandardAndreas Grabner - Performance as Code, Let's Make It a Standard
Andreas Grabner - Performance as Code, Let's Make It a Standard
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
DevOps with Microsoft Stack
DevOps with Microsoft StackDevOps with Microsoft Stack
DevOps with Microsoft Stack
 
Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014Continuous Integration, Deploy, Test From Beginning To End 2014
Continuous Integration, Deploy, Test From Beginning To End 2014
 
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
 

Kürzlich hochgeladen

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 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
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation 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
 
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
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 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...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Continuous Delivery Agiles 2014 Medellin

  • 1. Free Classifieds www.olx.com Continuous Delivery Release Management Buenos Aires, April 2014
  • 2. 2 Agenda 1. Initial Situation 2. Initial Setup 3. Continuous Delivery Adoption - How we started 4. Deployment stages 5. Application configuration deployment 6. Introducing Octopush 7. Architecture evolution 8. Tooling 9. Culture changing 10. Lessons learned 11. What we have achieved 12. Next steps 13. Q&A
  • 3. 3
  • 4. 4 Initial Situation Situation Complication BigBang/Stressful releases, once every two weeks Multiple Development Teams -> # deployments increasing Few automation - Most of the tasks were manual Monolithic platform / Dependency hell Manual Configuration SVN Some teams doing CI Distrust & escepticism • Business Risk  Product Delivery  Product Quality  Need to shorten the time to market when adding new features  Competitive advantage: Need more efficient processes and reduce operational costs. • Growing teams • Going Global / distributed team / different time zones
  • 5. SVN 5 CI Server RM Server ssh/console Trigger job Dev Team I Release Management Initial CI and RM Setup Dev Team II
  • 8. 8 Initial Assessment Source: http://www.infoq.com/articles/Continuous-Delivery-Maturity-Model
  • 9. Continuous Delivery Adoption • Sharing the situation and necessity • Management commitment • Resources allocated • Continuous Integration • Continuous Delivery • Continuous deployment • Reduce Errors / Lower Stress / Lower Delta Changes Release • On Demand Deployment/ Built Quality In • Everybody Is Responsible for the Delivery Process/ Continuous 9 Improvement • Establish Phases and goals • Scope by component • Assumptions / expectations • Project Risk Identification Commitment Concepts alignment Setting Goals Project Management
  • 10. Dev Env Integration/Acceptance Env 10 High Level View Commit Stage Deployment Stage Acceptance Stage Live Production Env Manual gate :: RM Button Automatic :: Web-hook
  • 11. 11 Integration Jenkins Commit Stage from Git master branch to Artifactory Git Master/Branch Artifactory Release Jenkins Checkout Publish binaries Trigger Release Checkpoint: - build or pre-compile - run unit test & coverage Deployment Stage [ENV available?]::Go::Wait Commit hook Commit Build
  • 12. 12 Deployment Stage Release Jenkins from Integration Jenkins Acceptance Artifactory Git repo Env. [If code] Get Binaries [If config] Get Config from Artifactory to Acceptance Env To Integration Jenkins Run Deploy Script Run smoke test Automatic Rollback upon failure Code OR Config, NEVER both
  • 13. 13 Acceptance Stage Integration/Dev Jenkins from Release Jenkins Acceptance Env. from Acceptance Env to Production Gate To Release Jenkins Run Acceptance Tests Run Performance Tests* * Using YSlow for frontend testing Automatic Rollback upon failure
  • 14. Application configuration deployment 14 Config files, from the repo to the environment ggiti-tc-cryryppt t
  • 16. 16 Introducing Octopush Jenkins Mobile Jenkins Frontend Jenkins Backend Jenkins blah Make deployment request Enqueues job Pick next available job Call Jenkins to deploy Polls/notify on completion Deploy Orchestrate Jenkins Hell! OOppeenn S Soouurrccee Call deployment job
  • 18. The Revolution will not be centralized 18
  • 19. 19 Remaining servers Alert ROLLBACK Wait Monitor Check Canary Release Release pool
  • 22. 23 Lessons learned 1/2 Architecture Smoke Test Infrastructure-as-code Conventions • Application architecture. • Tooling architecture should also be layered and Service oriented. • Integrate your own tools with Jenkins JIRA, IRC, Graphite, most of them have a REST API service. No silver bullet • Divide configuration • Health checks! • Track & version your scripts, follow Software design principles • Same scripts/infra everywhere!, use config files to resolve hostname issues • Scripts should be idempotent • Apps/repos/users/package naming. Canary Releases • Use a Testing pool, automate!.
  • 23. 24 Lessons learned 2/2 Communication • Clear channel • IRC • Automate. Strategy • MVP • Advertise progress/delays, achievements, use charts/hard data. • Early adopters.
  • 24. Releases Conclusions 25 • Tripled our Production deployment throughput . • More confident and error-free releases. • Less stress, near-zero manual work, easier, faster deploys Achievements Octopush decentraliza tion
  • 25. 26 Next steps 1.Native packages 1.Deploy integration with Puppet 1.Virtualization / Docker .
  • 27. Thank You (We are hiring DEVOPS) Continuous Delivery Team Diego Garber @diegarber Google+ Communities: OLX Engineering 28

Hinweis der Redaktion

  1. Introduce me & OLX, some metrics: 200M users monthly. 40 paises lider.
  2. The story about CD project, when it started
  3. Lets just say that developers weren't the most popular guys inside the deparment bubble.
  4. Multiple Development Team : # deployments increasing : more complex releases. Cultural: Desconfianza, cinismo Product Quality : Not safely deploys Inefficient Processes : not reliable mechanism
  5. We had many different dev teams working at the same time, some of them had already been working on CI with their own Jenkins Server while some of them weren't yet. The most problematic issue was that inspite of being different teams working on different projects and features, they were sharing the same SVN repo, and that require, as you may imagine, a hell lot of coordination for development and deployment purposes. As you can see in the purple circle, RM had a Jenkins Server of it's own to handle some release tasks, but there were still some scripts that we had to run manually.
  6. Big queues of DEVs waiting for their deployment, huge amount of workload on Release Management, situation
  7. Until we found this book which totally changed the way we though and handled releases. So we decided to adopt Continuous Delivery.
  8. Researching about Continuous Delivery solutions and articles we found this on InfoQ, and it struck us as a very helpful guide to organize and plan our project. This chart basically divides the problem in different tracks (name them) and defines 5 maturity levels for each of them. So the first thing we did is identify where were we standing, and we found that according to this, we were somewhere between base and begginners. And also decided we wanted to get somewhere between Intemediate and advanced by the end of year. It's also important to notice how a level of maturity involves practices improvement in different areas simultaneously, meaning you can just automate your deployments on a monolithic architecture or with no test automation whatsoever.
  9. Ayuda… consultoria externa, mas gente… Evangelizacion Git => Global Etapas: POC (Prueba de Cpto) Mobile, alineamiento con SOA
  10. Bosquejo etapas
  11. Mencionar tema multiples jenkins
  12. One of the problems we had, as I mentioned before was the app configuration deployment, things like: external services hostnames, feature flags, credentials, etc. We needed to automate without loosing control of the enviromental settings. So we created an extra config repo for every code repo. Each config repo has 3 branches, one for each environment, so the settings values on each of them are slightly different. Developer have read only access over these repos, so when they need to deploy a change, they make a PR, we check the change and if approved, Jenkins takes care of the deployment, thanks to web-hooks. We are using git-crypt to encrypt credential files. After a couple of months we realized we could do even better, by dividing the config between purely environmental settings and the purely application ones. This freed us from having to approve each change when 99% of them were only application-related, this change speeded the process significantly.
  13. This picture kind of shows what I mentioned before about app architecture moving along with CD. We started with a monolithic code which presented a lot of complexity, impact and Risk on each deployment, this generates fear and distrust which in turn reduces the speed and Frequency of deployments. Where we are now (the low part) we have basically a 3 layered architecture where on the top (presentation) we have the least complex, impactful and risky deployment and at the bottom the exact opposite. So, based on this we're currently deploying much more frequently the presentation layer, approaching the Continuous deployment concept, than the backend: CD.
  14. Until now what you have seen, solved a lot of our problems, but it created some others. Like for example, having multiple jenkins interacting amongst them didn't give everyone the proper visibility of what deployments were running at any given time, was difficult to follow a pipeline and troubleshoot errors or bottlenecks. But we also wanted to deal with the traffic control issue, we needed a way to stop all deployments at once in a centralized way, or to be able to seriallized or parallelized component deployments according to their dependencies. This is how Octopush was born, it receives deployment request from CI Servers, enqueues and then dispatches them to Jenkins RM in an ordered/intelligent manner.
  15. Decidimos dar empowerment a la gente y les cedimos el boton de Release a los desarrolladores, esto fue un cambio de paradigma total en nuestro trabajo diario y en la cultura de la empresa. Ahora el dilema era como ceder el control pero al mismo tiempo evitar…
  16. On the tooling part, we have developed, besides Octopush, a very simple web app, called TagReporter, where we track & show everyone what version of components are deployed on each environment (comp on the rows, env on columns, links takes the user to jira, gihub or jfrog). Additionally we provide information on the Release JIRA ticket that was or is about to be deployed LIVE and its current status. The last column provides different action according to the logged user, devs can create tickets automatically and RE can trigger deployments/rollbacks. The app integrates all this tools via REST API, providing a Transactional deployment service: it calls jenkins, interacts with JIRA and reports to IRC.
  17. Focused on getting each change right the first time
  18. Starting with Resistance… Anecdota, quedarse sin trabajo. Beer factor!
  19. Continuous integration as an initial initiative