building a distributed build system at google scale

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

Recommend


More recommend