A Evolução do Android no Airbnb

7fd4ba468da56bb5330a6352c1b54f52?s=47 felipecsl
August 28, 2017

A Evolução do Android no Airbnb

Slides da Apresentação no Android DevConference 2017

7fd4ba468da56bb5330a6352c1b54f52?s=128

felipecsl

August 28, 2017
Tweet

Transcript

  1. A Evolução do Android no Airbnb FELIPE LIMA / 24

    DE AGOSTO / ANDROID DEVCONFERENCE 2017
  2. None
  3. None
  4. VISÃO GERAL

  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
  6. Portland San Francisco Beijing Escritórios Seattle Com engenharia

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

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

  9. None
  10. None
  11. NÚMEROS

  12. Crescimento Value Title 0 12.5 25 37.5 50 Jan/2015 Jan/2016

    Jan/2017 Ago/2017 Commits por dia Engineers Equipes
  13. Linhas de código Java Mil linhas de código 0 125

    250 375 500 Jan/2015 Jan/2016 Jan/2017 Ago/2017
  14. BUILDS

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

    clean assemble
  16. Buck

  17. 20 min 8 min Buck Gradle Gradle versus Buck

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

  19. REACT NATIVE

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

    Objective-C: 15%
  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
  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
  23. Releases

  24. None
  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
  26. Linha do tempo de releases Quarta-feira Terça-feira Segunda-feira Sexta-feira Quinta-feira

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

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

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

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

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

  32. OBRIGADO!