Slide 1

Slide 1 text

Mohit Sarveiya Building Android Infra Teams at Scale @heyitsmohit

Slide 2

Slide 2 text

Building Android Infra Teams at Scale ● Purpose & Motivations ● How to build an infra team ● Best practices

Slide 3

Slide 3 text

What is an Android Infra Team? ● Focuses on Arch, CI and Tooling ● Customers are devs.

Slide 4

Slide 4 text

Motivations Team 
 Size Complexity

Slide 5

Slide 5 text

Greenfield Phase ● Small team size ● Iterate quickly ● Minimal processes

Slide 6

Slide 6 text

Motivations Team 
 Size Complexity

Slide 7

Slide 7 text

Scaling Up ● Larger team ● Developer Experience ● Tooling

Slide 8

Slide 8 text

Scaling Problems ● Gradle build setup & build times

Slide 9

Slide 9 text

Scaling Problems Teams Monorepo

Slide 10

Slide 10 text

Scaling Problems Monorepo Gradle

Slide 11

Slide 11 text

Gradle Setup ● 100+ Gradle Modules ● Gradle Plugins (KAPT) ● Library Dependencies

Slide 12

Slide 12 text

Scenario ● Upgrade Gradle Plugin

Slide 13

Slide 13 text

Scenario ● Upgrade Gradle Plugin ● Causes Out of Memory Exception

Slide 14

Slide 14 text

Scenario ● Upgrade Gradle Plugin ● Causes Out of Memory Exception ● Effects whole team (Slows down development)

Slide 15

Slide 15 text

Motivations for Infra ● Need to maintain Gradle setup ● Detect build regression

Slide 16

Slide 16 text

Scaling Problems ● Gradle build setup & build times ● Architecture Fragmentation

Slide 17

Slide 17 text

Scaling Problems Codebase

Slide 18

Slide 18 text

Scaling Problems Codebase Legacy code

Slide 19

Slide 19 text

Arch Fragmentation ● Legacy Architecture ● Example - MVC/MVP ● Older design patterns

Slide 20

Slide 20 text

Arch Fragmentation Codebase Legacy code Feature A

Slide 21

Slide 21 text

Arch Fragmentation Codebase Legacy code Feature A Feature B

Slide 22

Slide 22 text

Motivations for Infra ● Uniform app arch ● Specify how to migrate legacy arch

Slide 23

Slide 23 text

Building Infra Team

Slide 24

Slide 24 text

Team Charter ● Ownership areas

Slide 25

Slide 25 text

Ownership Areas ● Architecture ● Shared Libraries ● Build tools (Gradle, Buck, Basel) ● CI

Slide 26

Slide 26 text

Ownership Areas Team 
 Size Complexity 100+

Slide 27

Slide 27 text

Ownership Areas Infra Org

Slide 28

Slide 28 text

Ownership Areas Infra Org CI Arch Dev Ex Build Tools Teams

Slide 29

Slide 29 text

Ownership Areas Team 
 Size Complexity 30+

Slide 30

Slide 30 text

Ownership Areas Infra Org Single Team (CI, Arch, Build Tools) Teams

Slide 31

Slide 31 text

Challenges ● Diverse skill set

Slide 32

Slide 32 text

CI ● How to build pipelines ● Jenkins or CircleCI ● Setting up automation

Slide 33

Slide 33 text

Challenges ● Diverse skill set ● Prioritizing

Slide 34

Slide 34 text

Ownership Areas ● Architecture ● Shared Libraries ● Build tools (Gradle, Buck, Basel) ● CI

Slide 35

Slide 35 text

Team Charter ● Ownership areas ● Key Performance Indicators (KPIs)

Slide 36

Slide 36 text

Key Performance Indicators (KPIs) ● Service Level Objectives

Slide 37

Slide 37 text

Service Level Objectives ● Build times ● Infra for performance metrics ● Infra for network metrics

Slide 38

Slide 38 text

Service Level Objectives Codebase Feature A Feature B Feature C

Slide 39

Slide 39 text

Scenario 9:41 ● Scroll performance ● Network Latency

Slide 40

Slide 40 text

Service Level Objectives Platform Monitoring

Slide 41

Slide 41 text

Team Charter ● Ownership areas ● Key Performance Indicators (KPIs) ● Objectives and key results

Slide 42

Slide 42 text

Objectives & Key Results (OKRs) ● Top down approach ● Bottom up approach

Slide 43

Slide 43 text

Objectives & Key Results (OKRs) ● Determine important problems to solve ● Prioritize

Slide 44

Slide 44 text

Team Surveys ● Challenges ● Build times ● Architecture ● Testing

Slide 45

Slide 45 text

Building Roadmap Team survey OKRs & Priotrize projects Execute

Slide 46

Slide 46 text

Examples OKRs ● Improve local build times by 10% ● Reduce onboarding to 10th commit ● Refactor navigation

Slide 47

Slide 47 text

Team Charter ● Ownership areas ● Key Performance Indicators (KPIs) ● Objectives and key results

Slide 48

Slide 48 text

Best Practices

Slide 49

Slide 49 text

Best practices ● Feedback

Slide 50

Slide 50 text

Acquisitions Feature Teams Infra Team Continous 
 Feedback

Slide 51

Slide 51 text

Acquisitions Improvement POC Details Serialization Performance Feature Team A Feature Team B

Slide 52

Slide 52 text

Planning Review acquisitions Priortrize/Plan Setup Roadmap

Slide 53

Slide 53 text

Bi-Weekly Updates Feature Teams Infra Team Digests

Slide 54

Slide 54 text

Bi-Weekly Digests ● Project Status ● Improvements ● Infra Asistance

Slide 55

Slide 55 text

Example ● Improved Gradle build times by 10% ● Created tools to improve dev workflow ● Assisted in project

Slide 56

Slide 56 text

Best practices ● Feedback ● Expectations

Slide 57

Slide 57 text

OKRs ● Not every OKR can have a metric

Slide 58

Slide 58 text

OKRs ● Not every OKR can have a metric ● Continuous team survey feedback

Slide 59

Slide 59 text

Best practices ● Feedback ● Expectations ● Setup processes for using new tech

Slide 60

Slide 60 text

Introducing New Libraries Request for Comments Proposal

Slide 61

Slide 61 text

Introducing New Libraries Request for Comments Proposal Reviewed by Infra

Slide 62

Slide 62 text

Introducing New Libraries Request for Comments Proposal Reviewed by Infra Approval & Follow up

Slide 63

Slide 63 text

Best practices ● Feedback ● Expectations ● Setup processes for infra ● Automate best practices

Slide 64

Slide 64 text

Automate Best Practices ● Static Code Analysis ● Custom lint rules

Slide 65

Slide 65 text

Best practices ● Feedback ● Expectations ● Setup processes ● Automate best practices ● Open source libraries

Slide 66

Slide 66 text

Open source libraries Team B Team A Team C Distribute ownership

Slide 67

Slide 67 text

Open source libraries Team B Team A Team C Distribute ownership SDK

Slide 68

Slide 68 text

Open Source libraries (Infra ownership) ● Gradle tools ● Custom Lint repo ● Arch frameworks

Slide 69

Slide 69 text

Open Source libraries ● Prioritize OSS issues in planning ● Setup milestones for releases

Slide 70

Slide 70 text

Best practices ● Feedback ● Expectations ● Setup processes for new tech ● Automate best practices ● Open source libraries

Slide 71

Slide 71 text

Building Android Infra Teams at Scale ● Purpose & Motivations ● How to build an infra team ● Best practices

Slide 72

Slide 72 text

Thank You! www.codingwithmohit.com @heyitsmohit