Por que um pequeno Facebook bug causou estragos em alguns dos aplicativos iOS mais populares

Por que um pequeno Facebook bug causou estragos em alguns dos aplicativos iOS mais populares 1

Em algum momento 6: 30:00 ET de 6 de maio, aplicativos iOS populares de grandes empresas como DoorDash, Spotify, TikTok e Venmo de repente começaram a cair. O culpado não permaneceu um mistério por muito tempo.

Desenvolvedores em Twitter e o GitHub descobriram rapidamente que a causa é um problema com o kit de desenvolvimento de software (SDK) da Facebook, que está entrelaçado na operação de inúmeros aplicativos móveis de empresas grandes e pequenas. O problema, embora resolvido rapidamente por Facebook, ilustra o escopo da plataforma da rede social e como até os pequenos problemas podem ter grandes efeitos em toda a indústria de software móvel.

“Hoje cedo, uma nova versão do Facebook incluiu uma alteração que acionou falhas para alguns usuários em alguns aplicativos usando o Facebook iOS SDK “, a Facebook porta-voz disse The Verge ontem em um comunicado. “Identificamos o problema rapidamente e resolvemos. Pedimos desculpas por qualquer inconveniente.” o Facebook O SDK é um pacote de ferramentas de software para desenvolvedores que ajuda a ativar recursos como fazer login com um Facebook conta e fornecer compartilhamento para Facebook botões. Portanto, o problema não era exclusivo do iOS; isso poderia ter acontecido com o SDK do Android e, nesse caso, simplesmente afetado ApplePlataforma.

Ainda Facebook não disse exatamente qual era o problema ou como a nova versão do SDK poderia ter causado as falhas. Também não ficou claro por que tantos aplicativos foram afetados de maneira tão prejudicial, mesmo quando o usuário que sofreu a falha não fez login com Facebook ou mesmo quando o aplicativo em si não fez amplo uso do SDK ou dependeu de Facebook recursos.

Segundo o desenvolvedor de aplicativos Guilherme Rambo, o problema está no caminho Facebook comercializa seu conjunto de ferramentas para desenvolvedores. “Facebook realmente leva os desenvolvedores a instalar seu SDK, provavelmente porque desejam os dados muito ricos que podem coletar sobre os usuários desses aplicativos. O SDK é oferecido como uma conveniência para desenvolvedores e equipes de marketing, pois também pode ser usado para rastrear as conversões de anúncios exibidos Facebook”, Explicou ele The Verge por email. (Rambo também tem uma análise própria postada em seu site aqui.)

Por exemplo, ele diz, se você deseja exibir uma campanha publicitária para seu aplicativo para celular através Facebook, a única maneira de obter informações valiosas sobre o desempenho da campanha é instalar o SDK da empresa. “Outro motivo importante é o infame‘ entrar com Facebook”Vemos em muitos aplicativos, que podem ser implementados sem o uso do SDK, mas como o SDK é mais conveniente, muitas empresas acabam seguindo esse caminho”, diz ele.

Mas, se houver um problema com o SDK, como foi o caso ontem, ele poderá derrubar tudo. Facebook introduziu uma alteração do lado do servidor em seu SDK, o que significava que nenhum desenvolvedor tinha voz para dizer se o aplicativo estaria se comunicando com a versão mais antiga e estável ou a mais recente. E como um aplicativo se comunica com o SDK toda vez que é aberto por um usuário, o resultado foi uma série de erros em cascata que levaram a falhas de aplicativos.

“O problema era que o SDK esperava uma resposta do servidor em um determinado formato, que na quarta-feira, o Facebook servidores não estavam fornecendo ”, escreveu ZDNetCatalin Cimpanu, que citou análises técnicas da situação no GitHub e HackerNews. “Sem a resposta adequada, o Facebook O SDK caiu, derrubando também todos os aplicativos que o usavam. ” Parece também que, uma vez afetado, havia pouco que um desenvolvedor pudesse fazer para restaurar o serviço até Facebook corrigiu o problema no final.

Rambo diz que deve haver maneiras de impedir que isso aconteça, incluindo desenvolvedores que decidem implementar o login com Facebook sem usar o SDK da empresa. Mas outras proteções no nível do sistema são decisões Apple teria que fazer em relação às permissões que concede SDKs de terceiros. “A maneira como funciona hoje é se você instalar um aplicativo e esse aplicativo incluir código de terceiros (como o Facebook SDK), esse código de terceiros tem o mesmo nível de permissões e acesso que o próprio aplicativo ”, diz ele.

“Se você conceder ao aplicativo permissão para acessar sua localização, contatos ou calendário, o código de terceiros incorporado também poderá obter essas informações. A única maneira de corrigir isso seria implementar alguma forma de modelo de sandbox que separa SDKs de terceiros do código de um aplicativo “, acrescenta. “É um grande desafio, mas espero AppleOs engenheiros estão trabalhando em algo assim. ”

Apple não respondeu a um pedido de comentário.

Dito isto, os desenvolvedores não pareciam especialmente satisfeitos com a situação. “Pelo que vi, os desenvolvedores estão realmente frustrados com isso, principalmente porque os engenheiros que precisam lidar com esses tipos de problemas geralmente não são os que decidiram adicionar um SDK ao aplicativo em que trabalham”, Rambo diz. Ele acrescenta que a decisão de integrar com FacebookAs ferramentas para desenvolvedores geralmente são uma decisão de cima para baixo, “muitas vezes pelas equipes de marketing ou produto, que só vêem o benefício de usar esses tipos de SDKs (mais dados, mais análises)”.

Mas esses tipos de funcionários em empresas de tecnologia “não veem a enorme quantidade de horas de engenharia gastadas para lidar com os problemas que eles podem causar em um aplicativo”, diz ele. “Falhas causadas por SDKs nos principais aplicativos não são incomuns, mas nunca vi algo dessa magnitude em que um SDK afetou tantos aplicativos ao mesmo tempo. Eu diria que este foi um evento sem precedentes e mostra que algo deve ser alterado na maneira como os aplicativos integram o código de terceiros “.