Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Evolução do Android no Airbnb

felipecsl
August 28, 2017

A Evolução do Android no Airbnb

Slides da Apresentação no Android DevConference 2017

felipecsl

August 28, 2017
Tweet

More Decks by felipecsl

Other Decks in Technology

Transcript

  1. A Evolução do
    Android no Airbnb
    FELIPE LIMA / 24 DE AGOSTO / ANDROID DEVCONFERENCE 2017

    View Slide

  2. View Slide

  3. View Slide

  4. VISÃO GERAL

    View Slide

  5. Portland
    San Francisco
    Los Angeles
    Toronto
    New York
    Miami
    Sao Paulo
    Dublin
    London
    Paris
    Barcelona
    Berlin
    Milan
    Copenhagen
    New Delhi
    Seoul
    Beijing
    Tokyo
    Sydney
    Singapore
    Washington, DC
    Escritórios
    Seattle

    View Slide

  6. Portland
    San Francisco Beijing
    Escritórios
    Seattle
    Com engenharia

    View Slide

  7. Monorepo
    apps/
    ├── ios/
    ├── android/
    ├── react-native/
    └── dls/

    View Slide

  8. 67 mil 4 Gb 245
    Tamanho
    Commits Desenvolvedores
    O repositório

    View Slide

  9. View Slide

  10. View Slide

  11. NÚMEROS

    View Slide

  12. Crescimento
    Value Title
    0
    12.5
    25
    37.5
    50
    Jan/2015 Jan/2016 Jan/2017 Ago/2017
    Commits por dia
    Engineers
    Equipes

    View Slide

  13. Linhas de código Java
    Mil linhas de código
    0
    125
    250
    375
    500
    Jan/2015 Jan/2016 Jan/2017 Ago/2017

    View Slide

  14. BUILDS

    View Slide

  15. 3 min 20 min
    Aug/2017
    Jan/2015
    Tempo de build
    Gradle clean assemble

    View Slide

  16. Buck

    View Slide

  17. 20 min 8 min
    Buck
    Gradle
    Gradle versus Buck

    View Slide

  18. 1 módulo 64 módulos
    Ago/2017
    Jan/2015
    Modularização

    View Slide

  19. REACT NATIVE

    View Slide

  20. Airbnb
    iOS + Android
    Java: 46%
    Javascript: 15%
    Swift: 24%
    Objective-C: 15%

    View Slide

  21. React Native
    VANTAGES
    • Mesmo código para ambas as plataformas - iOS e Android
    • Experiência equivalente à nativa
    • Incentiva o compartilhamento de código e práticas
    • Paradigma do React é popular entre web developers
    • Excelente experiência para o desenvolvedor (ex.: hot module reloading)
    • Iterações rápidas, alta produtividade
    • “Over the air” upgrades, ex.: CodePush
    • Ecosistema/comunidade ativa

    View Slide

  22. • Preconceitos
    • Impacto no tamanho do APK
    • Curva de aprendizado
    • Complexidade/infraestrutura de suporte
    • Frequência de novas versões/upgrades
    • Código iOS e Android no mesmo repositório
    • Localização
    • Deep links
    • Crashes misteriosos em produção
    • Gerenciamento de exceções
    React Native
    DESAFIOS

    View Slide

  23. Releases

    View Slide

  24. View Slide

  25. • Comunicar os detalhes do release para as equipes
    • Garantir que o release seja estável e sem bugs críticos
    • Revisar Pull Requests com correções para o release branch
    • Monitorar crashes e notificar desenvolvedores
    • Atualizar traduções de strings
    • Fazer upload dos APKs para o Google Play
    O “Xerife”
    RESPONSABILIDADES

    View Slide

  26. Linha do tempo de releases
    Quarta-feira
    Terça-feira
    Segunda-feira
    Sexta-feira
    Quinta-feira
    Branch
    Cut

    View Slide

  27. Linha do tempo de releases
    Quarta-feira
    Terça-feira
    Segunda-feira
    Sexta-feira
    Quinta-feira
    QA +
    Cherry-picks

    View Slide

  28. Linha do tempo de releases
    Quarta-feira
    Terça-feira
    Segunda-feira
    Sexta-feira
    Quinta-feira
    QA +
    Cherry-picks

    View Slide

  29. Linha do tempo de releases
    Quarta-feira
    Terça-feira
    Segunda-feira
    Sexta-feira
    Quinta-feira
    Staged Rollout
    para 20%

    View Slide

  30. Linha do tempo de releases
    Quarta-feira
    Terça-feira
    Segunda-feira
    Sexta-feira
    Quinta-feira
    Release para
    100%

    View Slide

  31. Anatomia de um release
    master
    android-release-17.24 felipe—urgent-bug-fix
    Play Store
    android-release-17.25

    View Slide

  32. OBRIGADO!

    View Slide