Uma análise interna do processo de desenvolvimento de aplicativos móveis do Facebook

Autor: Laura McKinney
Data De Criação: 4 Lang L: none (month-011) 2021
Data De Atualização: 1 Julho 2024
Anonim
Uma análise interna do processo de desenvolvimento de aplicativos móveis do Facebook - Aplicativos
Uma análise interna do processo de desenvolvimento de aplicativos móveis do Facebook - Aplicativos

Contente


Recentemente, visitei a sede do Facebook em Londres para aprender sobre o processo de desenvolvimento e manutenção de seu aplicativo móvel para o Facebook. Muito mais acontece aqui do que você provavelmente imagina: alguns dos aplicativos do Facebook são gerenciados aqui na íntegra, como o WhatsApp para desktop e o aplicativo Workplace, voltado para negócios.

Os escritórios são exatamente o que você espera da imagem do Facebook, embora talvez não atinjam os níveis de excesso das redes sociais. É um local onde trabalho sério é realizado, mas, mesmo assim, existe uma atmosfera moderna, peculiar e descontraída. Os funcionários podem transportar laptops para trabalhar onde quiserem, há uma sala de impressão para fazer pôsteres (apenas porque), obras de arte encomendadas em várias paredes e uma gigante Tartaruga Ninja - nunca obtive uma resposta sobre o porquê.

Ah, e a comida é incrível. Eu estive lá durante o Ano Novo Chinês e tive múltiplo Barriga de porco. Bons tempos.


No entanto, eu não estava lá para apreciar a decoração e a cozinha, estava lá para aprender sobre o Facebook no celular. Mais especificamente: como você continua mantendo um projeto tão amplo e ambicioso? O back-end do Facebook atende a mais de dois bilhões de pessoas, e somente o aplicativo Android vê uma nova versão lançada toda semana.

Como você gerencia um aplicativo com um número tão ambicioso de recursos

Conversei com Tal Kellner através do sistema de telepresença do Facebook. Tal é um gerente de programa técnico, responsável pela equipe de engenharia de lançamento, com sede no escritório de engenharia de Tel Aviv. Ela estava mais do que feliz em compartilhar os detalhes sombrios.


Tal e sua equipe enviam pela primeira vez a versão Lite do Facebook para iOS

O que aprendi foi bastante fascinante, tanto da perspectiva do desenvolvedor quanto do usuário. Aqui está o que eu descobri.

Gerenciamento de projetos no Facebook - Por que Scrum> Waterfall

Ao analisar qualquer projeto grande, você precisa considerar sua abordagem de gerenciamento de projetos. Um exemplo é chamado de gerenciamento de projetos em "cascata". Essa é uma abordagem seqüencial e linear, na qual você trabalha em uma fase específica, como ir da ideia à implementação, ao teste e à liberação.

empresas como o Facebook optam por uma abordagem mais moderna ao gerenciamento de projetos chamada "scrum"

Fundamentalmente, nessa abordagem, você não inicia a próxima fase até que a fase anterior esteja concluída. O sistema é originário da manufatura, onde certos estágios geralmente dependem do estágio anterior: você precisa adquirir tijolos antes de construir uma parede!

Quando se trata de software, essa abordagem é restritiva. Na pior das hipóteses, uma atualização pode demorar tanto para ser lançada que fica obsoleta quando chega. Duke Nukem Para sempre alguém?

Assim, algumas empresas de software optam por uma abordagem mais moderna chamada "scrum", que é uma metodologia ágil. Esse método prioriza o trabalho que mais importa e o divide em partes modulares. Ele se baseia na comunicação entre departamentos internos e até agentes individuais trabalhando sozinhos em seus próprios cantos de código.

O resultado, em teoria, é que todos podem trabalhar no que é mais urgente para eles o tempo todo e que todas as outras partes da empresa sabem o que estão fazendo. Há um alto nível de propriedade para cada engenheiro, e todos são responsáveis ​​por seu próprio trabalho. Isso não apenas torna a empresa mais ágil, mas também aumenta a satisfação no local de trabalho. Ninguém é apenas uma engrenagem na máquina.

qualquer pessoa de qualquer lugar da organização pode sugerir uma idéia para um novo recurso

Fiquei muito impressionado ao saber que qualquer pessoa de qualquer lugar dentro da organização poderia sugerir uma idéia para um novo recurso e, então, trabalhar nisso se fosse aprovado. Às vezes, isso pode até se transformar em seu próprio aplicativo separado! O Facebook é muito mais um projeto colaborativo do que a visão imposta de cima para baixo de poucas pessoas (ou uma pessoa) que é frequentemente retratada como.

Isso permite que o Facebook implemente um ciclo de desenvolvimento extremamente rápido, permitindo uma nova atualização móvel a cada semana e milhares de confirmações (alterações de código propostas) entre elas. Se você acha isso impressionante, a versão da Web (cujo backend também serve o aplicativo para dispositivos móveis) é atualizada a cada duas a três horas!

O Facebook geralmente é muito favorável a novas idéias e startups. Ele ainda tem uma iniciativa chamada LDN LAB dedicada a apoiar novas idéias e negócios.

Encontrando equilíbrio

Extraído dos slides de Tal

Obviamente, sempre haverá sempre um limite no que diz respeito ao que uma empresa pode lidar. Com esse código, sempre há espaço para melhorias, mas deve chegar um momento em que a versão será considerada "boa o suficiente".

É aí que o "triângulo dourado" entra em jogo. Os três pontos deste triângulo representam recursos, qualidade e tempo. Toda empresa tem uma escolha a fazer aqui: quando se trata de hora da crise, você prioriza novos recursos à custa de demorar um pouco mais? Você permite que um pequeno bug existente deslize pela rede se isso significa que você pode adicionar mais recursos? Quando você não pode fazer tudo, é forçado a priorizar.

No Facebook, as prioridades são qualidade e tempo. Se uma atualização estiver caindo atrás da janela alocada, um recurso provavelmente será adiado; em vez de cortar um canto ou atrasar a atualização.

Controle de versão e alterações de malabarismo

Para lidar com essas atualizações e alterações no código, o Facebook usa sua própria versão modificada do Mercurial. Isso é em vez do Git, amplamente utilizado, que aparentemente não se adapta tão bem aos objetivos da empresa. O Phabricator é equivalente ao GitHub e usa muitos plugins para ajudar a otimizar o fluxo de trabalho e, às vezes, apenas para tornar as coisas um pouco mais divertidas (o Facebook gosta de seus memes aparentemente).

Para os não programadores, o Mercurial, como o Git, é um sistema de controle de versão. Ele permite que um grande número de pessoas trabalhe em um único software e faça alterações e correções sem comprometer a versão principal do aplicativo, chamada de "ramificação principal". Essas ferramentas ajudam a evitar conflitos de código e permitem a experimentação. Somente uma vez que uma alteração tenha sido completamente aprovada em uma ramificação de teste, ela será confirmada ao mestre.

Imagine se algum programador ruim fizesse um erro de digitação que quebrasse o código inteiro e houvesse apenas uma versão! Esse seria um dia ruim para todos.

Ferramentas como Mercurial tornam possível implementar a abordagem scrum com relativa facilidade, permitindo que todos trabalhem em recursos e bugs específicos simultaneamente antes de mesclar tudo em um grande pote.

Uma vez por semana, um candidato a liberação será cortado do mestre e isso passará pela fase de teste. Os programadores que passaram a semana toda trabalhando em correções de bugs ou em novos recursos estarão neste momento cruzando os dedos, esperando que seu trabalho chegue à nova atualização.

Quaisquer correções ou alterações de última hora feitas pelos membros da equipe precisarão ser escolhidas para inclusão no novo ramo pelos responsáveis. É sabido que eles usam subornos na forma de chocolates e álcool oferecidos aos tomadores de decisão.

Para compilar, o Facebook usa outra ferramenta chamada Buck. Essa ferramenta de compilação única pode criar qualquer coisa quando se trata de empacotar o aplicativo. Não há necessidade de opções separadas, como Gradle ou Ant, ao segmentar plataformas diferentes.

Apanhar erros a tempo

Com todo mundo trabalhando em coisas diferentes e com tantas atualizações sendo lançadas regularmente, é muito importante que as empresas garantam que seu software funcione e que não tenha erros graves. Na maioria das vezes, o Facebook tem um bom histórico de manter as coisas funcionando.

Para esse fim, a equipe divide os testes de software em camadas, conhecidas como C1, C2 e C3.

C1 é um teste interno e todos os funcionários executam essa versão. Durante o C2, a versão é executada em 2% do público em geral e o C3 é de produção. Se algo realmente sério for encontrado, todos os funcionários poderão acessar um botão de parada de emergência para interromper a produção.

Os voluntários que se propõem a manter os níveis progressivos recebem o nome de "huggers de árvores" (porque os galhos) e fazem isso além de seus trabalhos regulares.

No celular, camadas semelhantes são chamadas de alfa, beta e prod. Alfa significa um teste interno, que todos os funcionários farão. O processo de qualquer empresa que usa seus próprios produtos dessa maneira é chamado de "comida para cães" - de "comer sua própria comida de cachorro".

Os testadores também têm algumas ferramentas únicas e interessantes à sua disposição para relatar rapidamente erros. Um deles é o "Rageshake", onde simplesmente sacudir o dispositivo em frustração permitirá um relatório de erro, como no Google Maps.

Os testadores também têm algumas ferramentas únicas e interessantes à sua disposição para relatar rapidamente erros

Durante o alpha - que se refere efetivamente a qualquer teste interno - o Facebook também usa o teste automático para executar o aplicativo. Por exemplo, um software adquirido recentemente, chamado “Sapienz”, funciona basicamente clicando em todos os botões e usando todos os recursos de um ataque aleatório até que ele provoque um acidente. Em seguida, ele registra o rastreamento da pilha, registra a ação e reporta.

O aplicativo beta (a versão testada pelo público em geral) passa por uma pequena subseção (~ 2%) do público em geral. Este pequeno trecho receberá a atualização com antecedência, fornecendo ao Facebook feedback do mundo real. Se tudo parece bom, a atualização sai para toda a população e o processo começa de novo.

Ferramentas poderosas para automação e multiplicação de forças

Para manter todo esse processo o mais rápido e tranquilo possível, o Facebook usa um grande número de ferramentas diferentes. Já vimos como a empresa usa o Phabricator e o Sapienz, mas possui outras ferramentas e plugins para outros estágios.

Uma ferramenta chamada Picknic reúne todas as solicitações de recebimento (alterações feitas pelos funcionários) em um único local para uma revisão rápida e fácil.

Quando o teste gera um erro, um bot chamado Nagbot informa os responsáveis ​​e gentilmente os estimula a concluir o trabalho. O uso de uma IA rudimentar para lidar com esse processo não apenas garante que o trabalho seja realizado, mas também permite que o gerente evite ser o "bandido", constantemente incomodando!

quando o teste gera um erro para alguém corrigir, um bot chamado Nagbot informa os responsáveis ​​e gentilmente os estimula a concluir o trabalho

O Crashbot é outro bot responsável por relatar esses erros à medida que ocorrem e é preferível às métricas do Google Console, pois são relatadas em tempo real. O Crashbot sinalizará um problema assim que os problemas excederem um "limite aceitável de falha". Isso pode ser devido ao número de pessoas com o erro ou ao número de vezes que um único usuário encontrou o mesmo erro. De qualquer forma, o Facebook também terá uma métrica mostrando o número de usuários tristes.

Para comunicação interna, o Facebook usa algo chamado Local de Trabalho. Esta é efetivamente uma versão do Facebook destinada a empresas, que fornece uma maneira útil de obter informações sobre os membros da equipe e se comunicar rapidamente com aqueles que estão do outro lado do amplo escritório. O Facebook também vende esse software para terceiros.

É claro que o Facebook não perderá tempo enviando cada nova versão de seus aplicativos para a Play Store, App Store, Amazon e todo o resto. Também há um aplicativo chamado Mobile Push Train.

Pensamentos finais

Manter um aplicativo como o Facebook atualizado é uma tarefa imensa, e a empresa ainda precisa convencer os usuários a realmente instalar essas atualizações. Isso é particularmente difícil em países onde a conectividade não é garantida. No Canadá, apenas 1% dos usuários ainda executam uma versão do Facebook com mais de um ano. Na Etiópia, esse número está próximo de 50%!

A equipe do Facebook claramente trabalha muito e usa uma tonelada de ferramentas e processos para manter tudo o mais otimizado possível. No final do dia, a equipe de desenvolvimento pretende aderir a cinco princípios dominantes:

  • Mantenha o mestre limpo.
  • Tenha uma equipe com experiência em engenharia de lançamento.
  • Liberte a tempo com frequência.
  • Produtos para alimentos para cães.
  • Seja gentil com os usuários.

Parece simples, mas como você pode ver, envolve muitas placas giratórias. Mesmo a manutenção de todas as ferramentas usadas no processo é um projeto em si!

Por seu lado, o Facebook mantém uma atmosfera amigável e alegre no escritório de Londres. A equipe troca GIFs e memes por meio de plugins, nomeia quartos com base em "coisas que os britânicos odeiam" e trocadilhos shakespearianos, e se orgulha muito de seu trabalho. No Facebook, eles trabalham duro e se divertem bastante, e parece que, na maior parte, o sistema funciona.

Da próxima vez que uma nova atualização for lançada para um de seus aplicativos maiores, poupe um pouco de todo o trabalho e organização necessários para chegar lá.

Atualização, 14 de janeiro de 2019 (10h34 ET):Agora, temo imagen oficiai do primeiro martphone amung Galaxy M, proveniente de um microite oficial da amung. O atributo mai notável da ent...

O amung Galaxy M10.A epecificaçõe do trê telefone permanecem fiéi à ua natureza báica. Você obtém 2 GB ou 3 GB de RAM e 16 GB ou 32 GB de armazenamento interno ...

Novos Artigos