building a distributed build system at google scale
play

Building a Distributed Build System at Google Scale Aysylu - PowerPoint PPT Presentation

Building a Distributed Build System at Google Scale Aysylu Greenberg Aysylu Greenberg @aysylu22 Confidential + Proprietary Aysylu Greenberg @aysylu22 Confidential + Proprietary Building Distributed Build System at Google Scale


  1. Building a Distributed Build System at Google Scale Aysylu Greenberg

  2. Aysylu Greenberg @aysylu22 Confidential + Proprietary

  3. Aysylu Greenberg @aysylu22 Confidential + Proprietary

  4. Building Distributed Build System at Google Scale Confidential + Proprietary

  5. Building Distributed Build System at Google Scale Confidential + Proprietary

  6. WTH is "Google scale"? Confidential + Proprietary

  7. Scale ● Engineers: >30,000 developers in 40+ offices Confidential + Proprietary

  8. Scale ● Engineers: >30,000 developers in 40+ offices ● Commits: 15K by humans + 30K by robots per day Confidential + Proprietary

  9. Scale ● Engineers: >30,000 developers in 40+ offices ● Commits: 15K by humans + 30K by robots per day ● Source code: 2 billion LOC Confidential + Proprietary

  10. Scale ● Engineers: >30,000 developers in 40+ offices ● Commits: 15K by humans + 30K by robots per day ● Source code: 2 billion LOC ● Builds and tests: 5M per day through BuildRabbit Confidential + Proprietary

  11. Scale ● Engineers: >30,000 developers in 40+ offices ● Commits: 15K by humans + 30K by robots per day ● Source code: 2 billion LOC ● Builds and tests: 5M per day through BuildRabbit ● Petabytes of output artifacts Confidential + Proprietary

  12. Scale ● Engineers: >30,000 developers in 40+ offices ● Commits: 15K by humans + 30K by robots per day ● Source code: 2 billion LOC ● Builds and tests: 5M per day through BuildRabbit ● Petabytes of output artifacts ● 1 repository Confidential + Proprietary

  13. Working in One Repository Confidential + Proprietary

  14. Working in One Repository ● Linear revision history Confidential + Proprietary

  15. Working in One Repository ● Linear revision history ● Everything is cross-referenced Confidential + Proprietary

  16. Working in One Repository ● Linear revision history ● Everything is cross-referenced ● Components for library releases ○ = Git subtree or Git subcomponents to separate release from WIP versions Confidential + Proprietary

  17. Working in One Repository ● Linear revision history ● Everything is cross-referenced ● Components for library releases ● Repository of artifacts vs build from source: ○ Predictable, repeatable builds from source ○ Optimizations to avoid compiling same artifacts ○ Decouple each team's processes as much as possible Confidential + Proprietary

  18. Building Distributed Build System at Google Scale Confidential + Proprietary

  19. Building Distributed Build System at Google Scale Confidential + Proprietary

  20. Towards Distributed Build System Confidential + Proprietary

  21. Towards Distributed Build System Confidential + Proprietary

  22. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  23. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  24. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  25. Build Scenario: Project with dependencies Find dependencies Build project with the dependencies Download build artifacts Confidential + Proprietary

  26. Test Scenario: Project with dependencies Find dependencies Build project with the dependencies Download build artifacts Run the test Get the results of the test Confidential + Proprietary

  27. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  28. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  29. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  30. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  31. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  32. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  33. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  34. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  35. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  36. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  37. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  38. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  39. Towards Distributed Build System http://opencv.org/ Confidential + Proprietary

  40. BuildRabbit: Distributed Build System Confidential + Proprietary

  41. BuildRabbit: Distributed Build System IN THE CLOUD Confidential + Proprietary

  42. What does BuildRabbit do? Confidential + Proprietary

  43. Continuous integration system Source System Release infrastructure BuildRabbit Blaze Google engineers & teams Build artifact Integration storage testing infrastructure Confidential + Proprietary

  44. Building Distributed Build System at Google Scale Confidential + Proprietary

  45. Building Distributed Build System at Google Scale Confidential + Proprietary

  46. Evolution of BuildRabbit: From push to pull Confidential + Proprietary

  47. Evolution of BuildRabbit: From Push to Pull ● Experimental project -> key piece of Google's developer infrastructure Confidential + Proprietary

  48. Evolution of BuildRabbit: From Push to Pull ● Experimental project -> key piece of Google's developer infrastructure ● Push model BuildRabbit Client Scheduler for BuildRabbit User Worker Confidential + Proprietary

  49. Evolution of BuildRabbit: From Push to Pull ● Experimental project -> key piece of Google's developer infrastructure ● Push model ● Pull model: build service Confidential + Proprietary

  50. Build Service Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts RPC event stream Confidential + Proprietary

  51. Replacing Jet Engine In-Flight Confidential + Proprietary

  52. Replacing Jet Engine In- Flight Confidential + Proprietary

  53. Confidential + Proprietary

  54. BuildRabbit Client Scheduler for BuildRabbit User Worker Confidential + Proprietary

  55. BuildRabbit Client Scheduler for BuildRabbit User Worker Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts Confidential + Proprietary

  56. BuildRabbit Client Scheduler for BuildRabbit User Worker Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts Confidential + Proprietary

  57. Implementing Re-architected Build System Confidential + Proprietary

  58. Migrate backends first implementing re-architected build system Confidential + Proprietary

  59. Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts RPC event stream Confidential + Proprietary

  60. Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts RPC event stream Confidential + Proprietary

  61. Throw-away code is needed to prove identical functionality implementing re-architected build system Confidential + Proprietary

  62. Throw-away code is needed to prove identical functionality >>> Compatibility window is several months implementing re-architected build system Confidential + Proprietary

  63. Target launch-friendly clients before transitioning everyone implementing re-architected build system Confidential + Proprietary

  64. Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts RPC event stream Confidential + Proprietary

  65. Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts RPC event stream Confidential + Proprietary

  66. Decouple launch of services implementing re-architected build system Confidential + Proprietary

  67. Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts RPC event stream Confidential + Proprietary

  68. Persistent BuildRabbit Queue Worker User Build Progress Info Build Artifacts RPC event stream Confidential + Proprietary

  69. Maximum visibility into system state implementing re-architected build system Confidential + Proprietary

  70. Practice before launch implementing re-architected build system Confidential + Proprietary

  71. Practice before launch, a lot implementing re-architected build system Confidential + Proprietary

  72. Practice before launch, a lot Have a solid rollback plan implementing re-architected build system Confidential + Proprietary

  73. References ● Why Google Stores Billions of Lines of Code in a Single Repository https://www. youtube.com/watch?v=W71BTkUbdqE Build artifacts storage http://google-engtools.blogspot.com/2011/10/build-in- ● cloud-distributing-build.html ● Distributed build actions http://google-engtools.blogspot.com/2011/09/build-in- cloud-distributing-build-steps.html Continuous integration testing http://dl.acm.org/citation.cfm?id=2635910 ● Confidential + Proprietary

  74. Gratitude Vince Noel Scott Zawalski Rob Siemborski BuildRabbit team Caitie McCaffrey David Greenberg Confidential + Proprietary

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend