Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
@mockitoguy@LinkedInEng
You deserve great tools!
Commit-to-production pipeline at LinkedIn
Agenda:
1. Continuous delivery ...
@mockitoguy@LinkedInEng
1.
Continuous Delivery in the Open Source, lessons
learned from Mockito
@mockitoguy@LinkedInEng
● Project started in 2007
● Easy manual releases
2008 - Mockito 1.0
@mockitoguy@LinkedInEng
Mockito popularity
@mockitoguy@LinkedInEng
2014: Mockito & Continuous Delivery
● Every merged pull request lands new version in Maven Central
@mockitoguy@LinkedInEng
The bright side of CD in OSS
● Productivity – zero release overhead
● Happy users – get features f...
@mockitoguy@LinkedInEng
Feedback from community
● Quality anxiety
● What version to use?
● Dependency Management cost
@mockitoguy@LinkedInEng
http://shipkit.org
● Mockito uses Shipkit
● Toolkit for shipping it
@mockitoguy@LinkedInEng
And also:
○ Rapid innovation
○ Competitive advantage
● Productivity
● Happy users
● Faster debuggi...
@mockitoguy@LinkedInEng
2.
linkedin.com - 3 releases per day, 3 hour time from
commit to production
@mockitoguy@LinkedInEng
Years before 2015
● monthly releases
● feature rush
● branch hell
● manual verification
@mockitoguy@LinkedInEng
2015 at LinkedIn: 3x3
● 3 hours max time from commit to production
● 3 releases per day
@mockitoguy@LinkedInEng
Continuous delivery is hard!
(what do we do if something is hard?)
● Flaky test is worse than no t...
@mockitoguy@LinkedInEng
3x3 & engineering culture @LI
● Engineering culture shift
● It’s not about technology (but it play...
@mockitoguy@LinkedInEng
3.
Commit to Production Pipeline
@mockitoguy@LinkedInEng
Several years ago at LinkedIn
● Monolithic codebase
● We tried, but it didn’t scale
● Decision to ...
@mockitoguy@LinkedInEng
Monorepo vs. Multirepo
● It’s not about how you keep the code
but how you ship it
● Monorepo vs. M...
@mockitoguy@LinkedInEng
Monolith vs. Federation
Monolith - central government
● All software components are developed, tes...
@mockitoguy@LinkedInEng
Federated software components
● A codebase at LinkedIn is
called “Multiproduct” (MP)
● Commit to P...
@mockitoguy@LinkedInEng
Commit to Production in Multiproduct
● Code change
● Code review
(strong code ownership)
● Pre/pos...
@mockitoguy@LinkedInEng
THANK YOU! Talks at JavaOne ‘17
You deserve great tools!!!
● Now: Commit-to-production pipeline at...
@mockitoguy@LinkedInEng
Thank you!!! Questions?
Commit-to-production pipeline at LinkedIn
● Productivity
● Happy users
● F...
Upcoming SlideShare
Loading in …5
×

JavaOne'17 talk: Commit-to-production pipeline at LinkedIn

757 views

Published on

JavaOne 2017 talk about building great tools for engineers at LinkedIn. The talk starts with learnings from adopting continuous delivery in the Open Source based on Mockito project. Then, it moves to enterprise use cases based on learnings from LinkedIn.

More details about the talk: https://www.linkedin.com/pulse/javaone-talk-commit-to-production-pipeline-linkedin-szczepan-faber/

Google slides: https://docs.google.com/presentation/d/1am1Ak59EkK0rGfR8SGUEcm6Z5bpU5maloMoA6cFTP1M/edit

Talk's abstract, as listed in JavaOne '17 session catalog:

Come to this session to learn about tools, practices, and the culture LinkedIn engineers employ to craft great products. The highlights include 3 x 3 continuous delivery: three releases a day and three hours maximum time between commit and production; automated cross-testing between software components that live in thousands of separate code repositories; and a delightful engineering experience across different languages and technology stacks.

Published in: Software
  • Login to see the comments

  • Be the first to like this

JavaOne'17 talk: Commit-to-production pipeline at LinkedIn

  1. 1. @mockitoguy@LinkedInEng You deserve great tools! Commit-to-production pipeline at LinkedIn Agenda: 1. Continuous delivery in the Open Source - 5min 2. linkedin.com - 3 releases per day, 3 hours time from commit to production - 15min 3. Commit to Production pipeline - 20min 4. Q&A - 5min Szczepan Faber ● Originally from Poland, in US since 2015 ● Creator of Mockito framework in 2007 ● Core engineer of Gradle in 2011-2015 ● Tech Lead at LinkedIn Development Tools team since 2015 ● @mockitoguy on Twitter ● Author on LinkedIn
  2. 2. @mockitoguy@LinkedInEng 1. Continuous Delivery in the Open Source, lessons learned from Mockito
  3. 3. @mockitoguy@LinkedInEng ● Project started in 2007 ● Easy manual releases 2008 - Mockito 1.0
  4. 4. @mockitoguy@LinkedInEng Mockito popularity
  5. 5. @mockitoguy@LinkedInEng 2014: Mockito & Continuous Delivery ● Every merged pull request lands new version in Maven Central
  6. 6. @mockitoguy@LinkedInEng The bright side of CD in OSS ● Productivity – zero release overhead ● Happy users – get features faster ● Faster debugging – quickly identify bad version (MTTR) ● Sustainability – release & stay alive ● No waste - no unreleased code ● Quality – self-enforced craftsmanship of every change ● Thriving, engaged community – contributions are released quickly
  7. 7. @mockitoguy@LinkedInEng Feedback from community ● Quality anxiety ● What version to use? ● Dependency Management cost
  8. 8. @mockitoguy@LinkedInEng http://shipkit.org ● Mockito uses Shipkit ● Toolkit for shipping it
  9. 9. @mockitoguy@LinkedInEng And also: ○ Rapid innovation ○ Competitive advantage ● Productivity ● Happy users ● Faster debugging ● Sustainability ● No unreleased code ● Quality Continuous Delivery in the enterprise
  10. 10. @mockitoguy@LinkedInEng 2. linkedin.com - 3 releases per day, 3 hour time from commit to production
  11. 11. @mockitoguy@LinkedInEng Years before 2015 ● monthly releases ● feature rush ● branch hell ● manual verification
  12. 12. @mockitoguy@LinkedInEng 2015 at LinkedIn: 3x3 ● 3 hours max time from commit to production ● 3 releases per day
  13. 13. @mockitoguy@LinkedInEng Continuous delivery is hard! (what do we do if something is hard?) ● Flaky test is worse than no test ● Production-grade tests and infrastructure ● Improving Open Source test frameworks ● Need for speed – going parallel and distributed ● Master branch always green
  14. 14. @mockitoguy@LinkedInEng 3x3 & engineering culture @LI ● Engineering culture shift ● It’s not about technology (but it plays a role) ● Read more on LinkedIn eng blog
  15. 15. @mockitoguy@LinkedInEng 3. Commit to Production Pipeline
  16. 16. @mockitoguy@LinkedInEng Several years ago at LinkedIn ● Monolithic codebase ● We tried, but it didn’t scale ● Decision to break free from Mono
  17. 17. @mockitoguy@LinkedInEng Monorepo vs. Multirepo ● It’s not about how you keep the code but how you ship it ● Monorepo vs. Multirepo ● Monolith vs. Federation
  18. 18. @mockitoguy@LinkedInEng Monolith vs. Federation Monolith - central government ● All software components are developed, tested and published at the same time ● No versioning between internal components ● Unified versions of external dependencies Federation - autonomy within ecosystem ● Every software component owns its release cadence ● Individual versioning of software components ● Freedom to choose dependency version
  19. 19. @mockitoguy@LinkedInEng Federated software components ● A codebase at LinkedIn is called “Multiproduct” (MP) ● Commit to Production in MP is standardized ● Easy contributing to codebases (GitHub analogy)
  20. 20. @mockitoguy@LinkedInEng Commit to Production in Multiproduct ● Code change ● Code review (strong code ownership) ● Pre/post push validation ● Depender testing ● New version Library: ● Update consumers ● Deprecate/end-of-life previous versions Application: ● Staging ● Canary ● Ramp-up features ● Remove experiment
  21. 21. @mockitoguy@LinkedInEng THANK YOU! Talks at JavaOne ‘17 You deserve great tools!!! ● Now: Commit-to-production pipeline at LinkedIn ○ This talk. Hope you liked it :) ● Tomorrow: Play on Gradle - Midtier behind linkedin.com ○ Lessons learned from driving disruptive change in large org ○ Replacing the heart of Play Framework with Gradle at scale ● Tomorrow: Mockito 2 Cleaner Tests and Enhanced Productivity ○ Do you want to write cleaner tests faster?
  22. 22. @mockitoguy@LinkedInEng Thank you!!! Questions? Commit-to-production pipeline at LinkedIn ● Productivity ● Happy users ● Faster debugging ● Sustainability ● No unreleased code ● Quality ● Rapid innovation http://shipkit.org Toolkit for shipping it used by Mockito 3x3 Continuous delivery at LinkedIn: ● 3 hours commit to production ● 3 releases per day ● Standardized workflow ● Commit-to-production pipeline Szczepan Faber ● Originally from Poland, in US since 2015 ● Creator of Mockito framework in 2007 ● Core engineer of Gradle in 2011-2015 ● Tech Lead at LinkedIn Development Tools team since 2015 ● @mockitoguy on Twitter ● Author on LinkedIn ● Tomorrow: Play on Gradle - Midtier behind linkedin.com ● Tomorrow: Mockito 2 Cleaner Tests and Enhanced Productivity

×