SlideShare uma empresa Scribd logo
1 de 33
THE EVOLUTION OF
CONTINUOUS DELIVERY AT SCALE
QCon SF
Nov 2014
Jason Toy
jtoy@linkedin.com
1
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/cd-linkedin
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon San Francisco
www.qconsf.com
How did we evolve our solution to allow
developers to quickly iterate on
creating product as LinkedIn
engineering grew from 30 to 1800
technologists?
2
?
We will be talking about that evolution today.
3
• How we have improved developer productivity
and the release pipeline
• The pitfalls we’ve seen
• How we’ve tackled them
• What it took
• What we have learned
4
What have we accomplished as we scaled??
• Scaling: From 2007 to Today
• 5 services -> 550+ services
• 30 -> 1800+ technologists
• 13 million members -> 332 million members
• At the same time
• Monolithic deployments to prod once every several
weeks -> Independent deployments when ready
• Manual -> Automated commit to production pipeline
• Faster iterations on the technology stack
5
LinkedIn 2007
• ~30 developers, 5-10 services
• Trunk based development
• Testing
• Mostly manual
• Nightly regressions: automated junit, manual functional
• Release (Every couple weeks)
• Create branch and deployment ordering
• Rehearse deployment, run tests in staging
• Site downtime to push release (All eng + ops party)
Problems in 2007
• Testing and Development
• Trunk stability: large changes, manual/local/nightly
testing
• Codebase increasing in size
• Release
• Infrequent, and time consuming
6
LinkedIn 2008-2011
• ~ 300 developers, ~300 services
• Branch based development, merge for release
• Testing
• Added automated ‘Feature Branch Readiness’
• Before merge prove branch had 0 test failures / issues
• Release (Every couple weeks)
• Exactly as before:
• Create, rehearse, and execute a deployment ordering.
7
Improvements in 2008-2011
• Branches supported more developers
• More automated testing
8
Tradeoff: Branch Hell
• Qualifying 20-40 branches
• Stabilizing release branch hard
• Point of friction: fragile/flaky/unmaintained tests
• Impact:
• frustrating process became power struggle
9
Problem: Deployment Hell
• Monolithic change with 29 levels of ordering
• Must fix forward: too complex to rollback
• Manual prod deployment did not scale:
• Dangerous, painful, and long (2 days)
• Impact:
• Operations very expensive and distracting
• Missing a release became expensive to developers
• More hotfixes and alternative process created
10
Linkedin 2011: The Turning Point
• Company-wide Project Inversion
• Build a well defined release process
• Move to trunk development
• Automated deployment process
• Build the tooling to support this!
• Enforcing good engineering practices.
• No more isolated development (no branches)
• No backwards incompatible changes
• Remove deployment dependencies
• Simplify architecture (complexity a cascading effect)
• Code must be able to go out at any time
11
LinkedIn 2011
• ~ 600 developers ~250 services
• Trunk based development
• Testing:
• Mostly automated
• Source code validation: post commit test automation
• Artifact validation: automated jobs in the test environment
• Release:
• On your own timeline per service
• One button to push to deploy to testing or prod
12
How did we make this work?
(A mixture of people, process, and
tooling)
13
?
Commit Pipeline
• Pre/Post commit (PCX) machinery
• On each commit, tests are run
• Focused test effort: scope based on change set
• Automated remediation: either block or rollback
• Small team maintains machinery and stability
• Creates new artifact upon success
• Working Copy Test
• PCX machinery to test local changes before commit
• Great for qualifying massive/horizontal changes
14
Shared Test Environment
• Continuously test artifacts with automated jobs
• Stability treated in the same respect as trunk
• Can test local changes against environment
15
Deployment vs Release
• New distinction:
• Deployment (new change to the site)
• Trunk must be deployable at all times
• Release (new feature for customers)
• Feature exposure ramped through configs
• Predictable schedule for releasing change
• Product teams can release functionality at will without
interfering with change
16
Deployment Process
• Deployment Sequence:
1. Canary Deployment (New!)
2. Full rollout
3. Ramp feature exposure (New!)
4. Problem? Revert step. (New!)
• No deployment dependencies allowed
• Fully automated
• Owners / Auto nominate deployment or rollback
• All the deployment / rollback information is in plans
17
People
• Everyone had to be willing to change
• Greater engineering responsibility
• No backwards incompatible changes
• Rethink architecture, practices (piecewise features)
• In return gave ownership of products and quality
back to engineers
• Release on your own schedule
• Local decision making
• You are responsible for your quality, not a central team
• You own a piece of the codebase not a branch (acls)
18
Tooling
• Acls for code review
• Pre/Post commit CI framework / pipeline
• CRT: Change Request Tracker
• Developer commit lifecycle management
• Deployment automation plans / Canaries
• Performance
• i.e. Evaluate canaries on things like exceptions
• Test Manager
• Manage automated tests (mostly in test environment)
• Monitoring for environment / service stability
• Config changes to ramp features
19
Improvements in 2011
• No merge hell
• Find failures faster
• Keep testing sane and automated
• Independent and easy deployment and release
• Create greater ownership
• More control over, responsible for your decisions
• Breaking the barriers: Easier to work with others
20
Challenges in 2011 (Overcame)
• Breakages immediately affect others, so find and
remove failures fast
• Pre and post commit automation
• Hard to save off work in progress
• Break down your feature into commits that are safe to
push to production. Use configs to ramp
21
Problems in 2011
• Monolithic Codebase
• Not flexible enough to accommodate
• Acquisitions
• Exploration
• Iterations needed to be even faster (non global block)
• Ownership could be clearer
• Of code
• Of failures
• Developer and code base grew significantly (again)
22
Multiproduct
• ~1500 products ~1800 devs ~550 services
• Ecosystem of smaller individual products each with an
individual release cycle
• Can depend on artifacts from other products
• Uniform process of lifecycle and tasks
• Abstractions allow us to build generic tooling to
accommodate a variety of technologies and products
• Lifecycle / tasks (i.e. build, test, deploy) owner defined
• Testing and Release mostly the same
• During your postcommit we test everything that depends
on you – to ensure you aren’t breaking anything
23
Improvements with Multiproduct
• No monolithic codebase
• Flexible
• Easier, faster to validate and not block
24
Challenges with Multiproduct
• Architecture
• Versioning Hell
• Circular Dependencies
• How to work across many products
• How to work with others
• Give people full control (no central police)
25
Conclusion: Key Successes
• 0 Test Failures
• Multitude of automated testing options
• Automated, independent, frequent deployments
• Distinguish between Deployments and Release
• More accountability and ownership for teams
26
Conclusion: Takeaways
• Notice any trends?
• Validate fast, early, often
• Simplify
• Build the tooling to succeed
• Creating more digestible pieces, giving more control to owners
• It’s all a matter of tradeoffs and priorities
• They change over time
• Ours seem to be getting better!
• It’s not only about technology: culture matters
• Change, Ownership, Craftsmanship
• People, process, technology
• Invest in improvements, and stick with it
27
Thanks!
28
Questions?
29
30
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/cd-
linkedin

Mais conteúdo relacionado

Mais procurados

Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperMike Melusky
 
Cross Community CI project
Cross Community CI projectCross Community CI project
Cross Community CI projectVictor Morales
 
Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDDBasav Nagur
 
ONAP on Vagrant for ONAPers
ONAP on Vagrant for ONAPersONAP on Vagrant for ONAPers
ONAP on Vagrant for ONAPersVictor Morales
 
Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryCyrille Le Clerc
 
Continuous integration / deployment with Jenkins
Continuous integration / deployment with JenkinsContinuous integration / deployment with Jenkins
Continuous integration / deployment with Jenkinscherryhillco
 
Ansible: Infrastructure as Code for OpenShift
Ansible: Infrastructure as Code for OpenShiftAnsible: Infrastructure as Code for OpenShift
Ansible: Infrastructure as Code for OpenShiftIgnacio Sánchez Ginés
 
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsLouisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsJames Strong
 
Building a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and PuppetBuilding a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and Puppetsmeunier114
 
Start with Angular framework
Start with Angular frameworkStart with Angular framework
Start with Angular frameworkKnoldus Inc.
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationLior Tal
 
Modern Tools for Building Progressive Web Apps
Modern Tools for Building Progressive Web AppsModern Tools for Building Progressive Web Apps
Modern Tools for Building Progressive Web AppsAll Things Open
 
Docker в автоматизации тестирования
Docker в автоматизации тестированияDocker в автоматизации тестирования
Docker в автоматизации тестированияCOMAQA.BY
 
Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block Christos Matskas
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentationDrew Hannay
 

Mais procurados (20)

Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and DapperEffective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
 
Cross Community CI project
Cross Community CI projectCross Community CI project
Cross Community CI project
 
Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDD
 
ONAP on Vagrant for ONAPers
ONAP on Vagrant for ONAPersONAP on Vagrant for ONAPers
ONAP on Vagrant for ONAPers
 
Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetry
 
JENKINS Training
JENKINS TrainingJENKINS Training
JENKINS Training
 
The Automated Monolith
The Automated MonolithThe Automated Monolith
The Automated Monolith
 
Continuous integration / deployment with Jenkins
Continuous integration / deployment with JenkinsContinuous integration / deployment with Jenkins
Continuous integration / deployment with Jenkins
 
Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
 
Javantura v4 - The power of cloud in professional services company - Ivan Krn...
Javantura v4 - The power of cloud in professional services company - Ivan Krn...Javantura v4 - The power of cloud in professional services company - Ivan Krn...
Javantura v4 - The power of cloud in professional services company - Ivan Krn...
 
Ansible: Infrastructure as Code for OpenShift
Ansible: Infrastructure as Code for OpenShiftAnsible: Infrastructure as Code for OpenShift
Ansible: Infrastructure as Code for OpenShift
 
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsLouisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
 
Building a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and PuppetBuilding a loosely coupled toolchain with Rundeck and Puppet
Building a loosely coupled toolchain with Rundeck and Puppet
 
Start with Angular framework
Start with Angular frameworkStart with Angular framework
Start with Angular framework
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Modern Tools for Building Progressive Web Apps
Modern Tools for Building Progressive Web AppsModern Tools for Building Progressive Web Apps
Modern Tools for Building Progressive Web Apps
 
Docker в автоматизации тестирования
Docker в автоматизации тестированияDocker в автоматизации тестирования
Docker в автоматизации тестирования
 
Javantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin ToshevJavantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin Toshev
 
Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block Microsoft ASP.NET 5 - The new kid on the block
Microsoft ASP.NET 5 - The new kid on the block
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
 

Semelhante a The Evolution of Continuous Delivery at Scale @ Linkedin

Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDavide Benvegnù
 
2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysoslo2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysosloJon Arild Tørresdal
 
Continuous Delivery for the Rest of Us
Continuous Delivery for the Rest of UsContinuous Delivery for the Rest of Us
Continuous Delivery for the Rest of UsC4Media
 
Adopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops GroupAdopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops Groupcolleenfry
 
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps_Fest
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comAviran Mordo
 
DevOps_service.pptx
DevOps_service.pptxDevOps_service.pptx
DevOps_service.pptxphamvinhcntt
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro - Database DevOps
 
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareDevOps for Enterprise Systems
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue Wave Software
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationKeith Pleas
 
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 JourneyKelly Looney
 
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 AyersSPC Adriatics
 
Wix Dev-Centric Culture And Continuous Delivery
Wix Dev-Centric Culture And Continuous DeliveryWix Dev-Centric Culture And Continuous Delivery
Wix Dev-Centric Culture And Continuous DeliveryAviran Mordo
 
Constant Contact SF's Road to CD
Constant Contact SF's Road to CDConstant Contact SF's Road to CD
Constant Contact SF's Road to CDSolano Labs
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+OpsShalu Ahuja
 

Semelhante a The Evolution of Continuous Delivery at Scale @ Linkedin (20)

Dev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps worldDev/Test scenarios in DevOps world
Dev/Test scenarios in DevOps world
 
2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysoslo2016 09-dev opsjourney-devopsdaysoslo
2016 09-dev opsjourney-devopsdaysoslo
 
Continuous Delivery for the Rest of Us
Continuous Delivery for the Rest of UsContinuous Delivery for the Rest of Us
Continuous Delivery for the Rest of Us
 
Adopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops GroupAdopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops Group
 
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CD
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Deploying at will - SEI
 
DevOps_service.pptx
DevOps_service.pptxDevOps_service.pptx
DevOps_service.pptx
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
 
Extreme Makeover OnBase Edition
Extreme Makeover OnBase EditionExtreme Makeover OnBase Edition
Extreme Makeover OnBase Edition
 
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems SoftwareLessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
Lessons Learned from Large Scale Adoption of DevOps for IBM z Systems Software
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
 
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
 
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
 
Wix Dev-Centric Culture And Continuous Delivery
Wix Dev-Centric Culture And Continuous DeliveryWix Dev-Centric Culture And Continuous Delivery
Wix Dev-Centric Culture And Continuous Delivery
 
Journey to the center of DevOps - v6
Journey to the center of DevOps - v6Journey to the center of DevOps - v6
Journey to the center of DevOps - v6
 
Constant Contact SF's Road to CD
Constant Contact SF's Road to CDConstant Contact SF's Road to CD
Constant Contact SF's Road to CD
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 

Mais de C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 

Mais de C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Último

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
"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 ...Zilliz
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
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 2024Victor Rentea
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
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...Jeffrey Haguewood
 
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, ...apidays
 
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.pptxRustici Software
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
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 Ontologyjohnbeverley2021
 
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.pptxRemote DBA Services
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 

Último (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
"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 ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
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...
 
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, ...
 
+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...
 
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
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
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
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 

The Evolution of Continuous Delivery at Scale @ Linkedin

  • 1. THE EVOLUTION OF CONTINUOUS DELIVERY AT SCALE QCon SF Nov 2014 Jason Toy jtoy@linkedin.com 1
  • 2. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /cd-linkedin
  • 3. Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide Presented at QCon San Francisco www.qconsf.com
  • 4. How did we evolve our solution to allow developers to quickly iterate on creating product as LinkedIn engineering grew from 30 to 1800 technologists? 2 ?
  • 5. We will be talking about that evolution today. 3 • How we have improved developer productivity and the release pipeline • The pitfalls we’ve seen • How we’ve tackled them • What it took • What we have learned
  • 6. 4 What have we accomplished as we scaled?? • Scaling: From 2007 to Today • 5 services -> 550+ services • 30 -> 1800+ technologists • 13 million members -> 332 million members • At the same time • Monolithic deployments to prod once every several weeks -> Independent deployments when ready • Manual -> Automated commit to production pipeline • Faster iterations on the technology stack
  • 7. 5 LinkedIn 2007 • ~30 developers, 5-10 services • Trunk based development • Testing • Mostly manual • Nightly regressions: automated junit, manual functional • Release (Every couple weeks) • Create branch and deployment ordering • Rehearse deployment, run tests in staging • Site downtime to push release (All eng + ops party)
  • 8. Problems in 2007 • Testing and Development • Trunk stability: large changes, manual/local/nightly testing • Codebase increasing in size • Release • Infrequent, and time consuming 6
  • 9. LinkedIn 2008-2011 • ~ 300 developers, ~300 services • Branch based development, merge for release • Testing • Added automated ‘Feature Branch Readiness’ • Before merge prove branch had 0 test failures / issues • Release (Every couple weeks) • Exactly as before: • Create, rehearse, and execute a deployment ordering. 7
  • 10. Improvements in 2008-2011 • Branches supported more developers • More automated testing 8
  • 11. Tradeoff: Branch Hell • Qualifying 20-40 branches • Stabilizing release branch hard • Point of friction: fragile/flaky/unmaintained tests • Impact: • frustrating process became power struggle 9
  • 12. Problem: Deployment Hell • Monolithic change with 29 levels of ordering • Must fix forward: too complex to rollback • Manual prod deployment did not scale: • Dangerous, painful, and long (2 days) • Impact: • Operations very expensive and distracting • Missing a release became expensive to developers • More hotfixes and alternative process created 10
  • 13. Linkedin 2011: The Turning Point • Company-wide Project Inversion • Build a well defined release process • Move to trunk development • Automated deployment process • Build the tooling to support this! • Enforcing good engineering practices. • No more isolated development (no branches) • No backwards incompatible changes • Remove deployment dependencies • Simplify architecture (complexity a cascading effect) • Code must be able to go out at any time 11
  • 14. LinkedIn 2011 • ~ 600 developers ~250 services • Trunk based development • Testing: • Mostly automated • Source code validation: post commit test automation • Artifact validation: automated jobs in the test environment • Release: • On your own timeline per service • One button to push to deploy to testing or prod 12
  • 15. How did we make this work? (A mixture of people, process, and tooling) 13 ?
  • 16. Commit Pipeline • Pre/Post commit (PCX) machinery • On each commit, tests are run • Focused test effort: scope based on change set • Automated remediation: either block or rollback • Small team maintains machinery and stability • Creates new artifact upon success • Working Copy Test • PCX machinery to test local changes before commit • Great for qualifying massive/horizontal changes 14
  • 17. Shared Test Environment • Continuously test artifacts with automated jobs • Stability treated in the same respect as trunk • Can test local changes against environment 15
  • 18. Deployment vs Release • New distinction: • Deployment (new change to the site) • Trunk must be deployable at all times • Release (new feature for customers) • Feature exposure ramped through configs • Predictable schedule for releasing change • Product teams can release functionality at will without interfering with change 16
  • 19. Deployment Process • Deployment Sequence: 1. Canary Deployment (New!) 2. Full rollout 3. Ramp feature exposure (New!) 4. Problem? Revert step. (New!) • No deployment dependencies allowed • Fully automated • Owners / Auto nominate deployment or rollback • All the deployment / rollback information is in plans 17
  • 20. People • Everyone had to be willing to change • Greater engineering responsibility • No backwards incompatible changes • Rethink architecture, practices (piecewise features) • In return gave ownership of products and quality back to engineers • Release on your own schedule • Local decision making • You are responsible for your quality, not a central team • You own a piece of the codebase not a branch (acls) 18
  • 21. Tooling • Acls for code review • Pre/Post commit CI framework / pipeline • CRT: Change Request Tracker • Developer commit lifecycle management • Deployment automation plans / Canaries • Performance • i.e. Evaluate canaries on things like exceptions • Test Manager • Manage automated tests (mostly in test environment) • Monitoring for environment / service stability • Config changes to ramp features 19
  • 22. Improvements in 2011 • No merge hell • Find failures faster • Keep testing sane and automated • Independent and easy deployment and release • Create greater ownership • More control over, responsible for your decisions • Breaking the barriers: Easier to work with others 20
  • 23. Challenges in 2011 (Overcame) • Breakages immediately affect others, so find and remove failures fast • Pre and post commit automation • Hard to save off work in progress • Break down your feature into commits that are safe to push to production. Use configs to ramp 21
  • 24. Problems in 2011 • Monolithic Codebase • Not flexible enough to accommodate • Acquisitions • Exploration • Iterations needed to be even faster (non global block) • Ownership could be clearer • Of code • Of failures • Developer and code base grew significantly (again) 22
  • 25. Multiproduct • ~1500 products ~1800 devs ~550 services • Ecosystem of smaller individual products each with an individual release cycle • Can depend on artifacts from other products • Uniform process of lifecycle and tasks • Abstractions allow us to build generic tooling to accommodate a variety of technologies and products • Lifecycle / tasks (i.e. build, test, deploy) owner defined • Testing and Release mostly the same • During your postcommit we test everything that depends on you – to ensure you aren’t breaking anything 23
  • 26. Improvements with Multiproduct • No monolithic codebase • Flexible • Easier, faster to validate and not block 24
  • 27. Challenges with Multiproduct • Architecture • Versioning Hell • Circular Dependencies • How to work across many products • How to work with others • Give people full control (no central police) 25
  • 28. Conclusion: Key Successes • 0 Test Failures • Multitude of automated testing options • Automated, independent, frequent deployments • Distinguish between Deployments and Release • More accountability and ownership for teams 26
  • 29. Conclusion: Takeaways • Notice any trends? • Validate fast, early, often • Simplify • Build the tooling to succeed • Creating more digestible pieces, giving more control to owners • It’s all a matter of tradeoffs and priorities • They change over time • Ours seem to be getting better! • It’s not only about technology: culture matters • Change, Ownership, Craftsmanship • People, process, technology • Invest in improvements, and stick with it 27
  • 32. 30
  • 33. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/cd- linkedin