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 full-size slide

  2. VISÃO GERAL

    View full-size slide

  3. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. 20 min 8 min
    Buck
    Gradle
    Gradle versus Buck

    View full-size slide

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

    View full-size slide

  12. REACT NATIVE

    View full-size slide

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

    View full-size slide

  14. 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 full-size slide

  15. • 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 full-size slide

  16. • 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide