← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

Uma empresa desenvolveu um sistema de votação em massa para milhares de usuários concorrentes e o implantou na nuvem do provedor AWS. A API de cadastro e acesso à informação dos usuários foi disponibilizada por meio de um serviço ECS, que mantém de 10 a 100 instâncias registradas no balanceador de carga. O cadastro de um usuário consiste nas seguintes informações: nome, e-mail, telefone e foto. As informações textuais são armazenadas em um banco de dados relacional, e os arquivos são armazenados no disco da instância. Recentemente foi identificada uma falha intermitente, na qual usuários reportam que a sua foto raramente é exibida. Considerando que os serviços estão corretamente dimensionados, a causa dessa falha é:

Gabarito: E

A falha descrita tem cara de arquitetura mal pensada para ambiente com várias instâncias. Quando voce coloca a aplicação atrás de um balanceador e tem 10 a 100 instâncias, qualquer dado salvo no disco local de uma máquina fica preso nela. Se a próxima requisição do mesmo usuário cair em outra instância, essa nova máquina não terá a foto, então a imagem “some” de forma intermitente. Por isso o problema não é de processamento nem de banco relacional, mas de persistência dos arquivos em um lugar que não acompanha o balanceamento. Em nuvem, principalmente em ECS, a regra de ouro é: instância é descartável. O disco da instância não deve guardar informação que precise sobreviver a troca, reinício ou redirecionamento de tráfego. Para arquivos, o padrão é usar armazenamento compartilhado e durável, como S3, EFS ou outro serviço apropriado, em vez de depender do disco local. Isso evita exatamente esse tipo de comportamento “aparece às vezes, some às vezes”. Se você pensar em termos de banco de dados, os dados textuais podem ficar no relacional sem problema, porque ele foi feito para isso. Já a foto é um arquivo e, em arquitetura distribuída, arquivo em disco local de instância é quase uma armadilha com laço bonito. A banca quer que voce perceba essa incompatibilidade entre balanceamento de carga e armazenamento local. Então o gabarito E está correto porque o arquivo da foto ser armazenado no disco da instância faz com que ele fique inacessível quando a requisição cai em outra instância. Em sistemas com múltiplas réplicas, o armazenamento precisa ser compartilhado ou externo à instância para garantir consistência de acesso.

Continue treinando

Questões relacionadas