Slide 1

Slide 1 text

Avito Mobile
 State of the Union INSERT COIN TO CONTINUE

Slide 2

Slide 2 text

PAGE 02/51

Slide 3

Slide 3 text

PAGE 03/51 Backend Mobile Frontend Product Designer QA

Slide 4

Slide 4 text

PAGE 04/51 Unit Seller Unit Mnz

Slide 5

Slide 5 text

PAGE 05/51 Unit Seller Make sellers happy +15% items -34s create item

Slide 6

Slide 6 text

PAGE 06/51 Unit Mnz Make more money +40% $ from vas
 +35% $ from ads

Slide 7

Slide 7 text

PAGE 07/51 Mnz Seller Buyer Billing Growth

Slide 8

Slide 8 text

PAGE 08/51 > Stop the release, I'm finishing a feature > I don't want to use VIPER > App start up time is not my problem

Slide 9

Slide 9 text

PAGE 09/51 Product units > Work for end users Platform units > Work for product teams

Slide 10

Slide 10 text

> Releases > Architecture > Performance PAGE 10/51

Slide 11

Slide 11 text

PAGE 11/51 > Releases > Architecture > Performance

Slide 12

Slide 12 text

PAGE 12/51 ft.A Unit 1 Unit 2 Unit 3 Release 1 ft.C ft.D ft.E

Slide 13

Slide 13 text

PAGE 13/51 ft.A ft.C ft.D ft.E Unit 1 Unit 2 Unit 3 Unit 3 Unit 1 Unit 2 Unit 3 Release 1 ft.B ft.F ft.G ft.H Release 2 ftI

Slide 14

Slide 14 text

PAGE 14/51

Slide 15

Slide 15 text

PAGE 15/51 feature freeze 1st regress end 2nd regress end staging release > Release cycle

Slide 16

Slide 16 text

PAGE 16/51 Criteria: 1. Closed in Jira 2. Tested 3. Has feature toggle > ... - feature freeze

Slide 17

Slide 17 text

PAGE 17/51 Automation: 1. Git+Jira 2. Feature Toggle config 3. Slack mentions 4. Branch cut > ... - feature freeze

Slide 18

Slide 18 text

PAGE 18/51 > feature freeze - 1st regress end Unit tests Component tests E2E tests Manual tests 1. Regression test suite is run 2. Each unit performs impact analysis 3. Each unit manually tests its features 4. P0/P1 bugs are fixed or features are disabled

Slide 19

Slide 19 text

PAGE 19/51 > 1st regress end - 2nd regress end Unit tests Component tests E2E tests Manual tests 1. Regression test suite is run 2. Impact analysis for fixed bugs 3. Broken features are disabled

Slide 20

Slide 20 text

PAGE 20/51 > 2nd regress end - staging 1.Roll out for 1% users 2.Automatically watch for crashes & metrics 3.Hotfix if necessary

Slide 21

Slide 21 text

PAGE 21/51 > staging - release 1.Manual roll out 2.Anomaly detection 3.Hotfix if P0 bug

Slide 22

Slide 22 text

PAGE 22/51 > Release cycle 1. Release automation 2. CI/CD hacks 3. Tooling

Slide 23

Slide 23 text

PAGE 23/51 30 200 700 860 Q1 Q2 Q3 now > E2E Testing Began automatisation in Q4'2017 Currently 860 UI test methods 3 devices 2610 tests in regress suite

Slide 24

Slide 24 text

PAGE 24/51 Our tooling - XCUITest - Wrapper (MixBox) - Test runner (Emcee) > E2E Testing

Slide 25

Slide 25 text

PAGE 25/51 Who write tests - Manual QA - Engineers > E2E Testing 65%
 QA 35%
 engs

Slide 26

Slide 26 text

PAGE 26/51 1. Why XCUITest 2. Millions of hacks 3. MixBox > E2E Testing

Slide 27

Slide 27 text

PAGE 27/51 1. Infrastructure 2. Running tests in parallel 3. Simulators > E2E Testing

Slide 28

Slide 28 text

PAGE 28/51 > Releases > Architecture > Performance

Slide 29

Slide 29 text

PAGE 29/51 > Tragedy of Commons

Slide 30

Slide 30 text

PAGE 30/51 > Monolithic Architecture Problems - Build time - Responsibility scopes - Impact analysis

Slide 31

Slide 31 text

PAGE 31/51 > Modular Architecture

Slide 32

Slide 32 text

PAGE 32/51 > Modular Architecture Core layer - Networking - Routing - Deeplinking - Persistance - Logging - etc

Slide 33

Slide 33 text

PAGE 33/51 > Modular Architecture module 1 module 2 module 3 module 4

Slide 34

Slide 34 text

PAGE 34/51 > Modular Architecture Feature consists of - Code modules - UI - Network requests - Persistance requests - Models - Navigation

Slide 35

Slide 35 text

PAGE 35/51 > Modular Architecture

Slide 36

Slide 36 text

PAGE 36/51 > Modular Architecture Mediator layer - Module interfaces - Service interfaces - Models

Slide 37

Slide 37 text

PAGE 37/51 > Modular Architecture Metrics - 150 modules - 9 months for transition - Clean build: 635 -> 438s - Incremental build: 65 -> 15s

Slide 38

Slide 38 text

PAGE 38/51 > Modular Architecture How we use it - Each module has its owner - Demo apps out of the box - Module lazy load - Module quality checks: usage, contributors, build time, etc

Slide 39

Slide 39 text

PAGE 39/51 1. Architecture details 2. Transition process 3. Experiments 4. Usage > Modular Architecture evgeniy suvorov

Slide 40

Slide 40 text

PAGE 40/51 > Releases > Architecture > Performance

Slide 41

Slide 41 text

PAGE 41/51 App performance affects business metrics. > Hypothesis

Slide 42

Slide 42 text

PAGE 42/51 5% of daily audience, each group - 1% - A,B - control groups - C - +2s delay - D - +4s delay - E - +6s delay > Experiments

Slide 43

Slide 43 text

PAGE 43/51 1. Performance affects bounce rate 2. Hygienic minimum - 4s 3. Most problems in regions 4. [Web] 1s of speed up -> 0,2-4% business metrics > Results

Slide 44

Slide 44 text

PAGE 44/51 > Avito - daily use service Our target: - Cold start - 1,5s - Screen first paint - 0,1s - Screen first interactive - 0,5s - Scrolling - 60fps

Slide 45

Slide 45 text

PAGE 45/51 > Performance Monitoring Culture Optimisations

Slide 46

Slide 46 text

PAGE 46/51 > Optimisations 1. Modules lazy loading 2. Network optimisations 3. Lazy DI 4. Lazy tabs creation 5. DI without reflection

Slide 47

Slide 47 text

PAGE 47/51 > Monitoring

Slide 48

Slide 48 text

PAGE 48/51 > Monitoring init load parse draw

Slide 49

Slide 49 text

PAGE 49/51 > Culture 1. Internal meetups 2. Competitors dashboards 3. All screens dashboards 4. Success stories 5. Trending

Slide 50

Slide 50 text

> Releases > Architecture > Performance PAGE 50/51

Slide 51

Slide 51 text

Egor Tolstoy > Avito Mobile many features many developers many challenges Avito t.me/etolstoy