Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — FGV 2022

Banco de DadosBanco de Dados Relacionais
Código
fg047167
Banca
FGV
Órgão
CGU
Ano
2022
Nível
Superior
Cargo
Auditor Federal de Finanças e Controle - Tecnologia da Informação
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 é:
  1. Aa não utilização de uma abordagem serverless;
  2. Ba não utilização de um serviço de cache para os arquivos;
  3. Co número de instâncias no balanceador de carga ser muito alto;
  4. Da utilização de um banco de dados relacional;
  5. Eo arquivo da foto ser armazenado no disco da instância.
Revelar gabarito e comentário

GabaritoE — o arquivo da foto ser armazenado no disco da instância.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Armazenamento de arquivos em múltiplas instâncias e balanceamento de carga

Gabarito: letra E — a causa da falha intermitente é o fato de o arquivo da foto ser armazenado no disco da instância individual, e não em um armazenamento compartilhado. Com múltiplas instâncias atrás de um balanceador de carga, uma requisição pode cair em uma instância que não possui o arquivo da foto daquele usuário, resultando na falha esporádica. Esse é um problema clássico de stateless vs stateful em arquiteturas distribuídas.

A questão cobra conhecimento sobre os desafios de escalabilidade horizontal e armazenamento de arquivos em ambientes com múltiplas instâncias. Quando um sistema é dimensionado com várias instâncias (entre 10 e 100, conforme o enunciado), qualquer recurso que precisa ser acessado por qualquer instância deve estar em um local compartilhado (sistema de arquivos compartilhado, serviço de armazenamento externo como S3, ou banco de dados).

Aspecto

Descrição

Relação com a falha

Problema

Foto do usuário raramente é exibida, de forma intermitente

Ocorre porque a requisição pode cair em instância que não possui o arquivo

Arquitetura

Múltiplas instâncias ECS (10 a 100) atrás de balanceador de carga

Cada instância tem seu próprio disco local

Armazenamento da foto

No disco da instância individual (stateful)

Não há compartilhamento entre instâncias

Causa raiz

Arquivo não está em local compartilhado acessível por todas as instâncias

Balanceador distribui requisições aleatoriamente entre instâncias

Solução adequada

Armazenar fotos em serviço externo compartilhado (ex.: S3, EFS)

Todas as instâncias acessam o mesmo repositório de arquivos

Alternativa A — ❌ Incorreta

A abordagem serverless (ex.: AWS Lambda) não é relevante para o problema descrito. O sistema já usa ECS (contêineres gerenciados), que é perfeitamente adequado. A falha não está relacionada ao modelo de computação, mas sim ao local de armazenamento dos arquivos.

Alternativa B — ❌ Incorreta

Embora um serviço de cache (como ElastiCache) possa melhorar a performance, a causa raiz não é a falta de cache. Mesmo com cache, se o arquivo original não estiver acessível de todas as instâncias, o cache não resolveria a falta do dado (a menos que ele fosse populado após o primeiro acesso, mas ainda assim a falha ocorreria na primeira requisição). O cache é uma otimização, não a solução para o problema de disponibilidade.

Alternativa C — ❌ Incorreta

O número de instâncias no balanceador de carga (10 a 100) está dentro de uma faixa razoável e não causa o problema. Na verdade, ter muitas instâncias agravaria o problema, mas a causa não é o número ser alto — a causa é a falta de compartilhamento. Além disso, o enunciado afirma que os serviços estão corretamente dimensionados.

Alternativa D — ❌ Incorreta

O uso de um banco de dados relacional é apropriado para armazenar dados textuais (nome, e-mail, telefone). A falha não está relacionada ao tipo de banco de dados, mas sim ao método de armazenamento dos arquivos binários (fotos) em disco local.

Alternativa E — ✅ Correta ⟵ GABARITO

O arquivo da foto é armazenado no disco da instância do ECS. Como há múltiplas instâncias atrás de um balanceador de carga, a instância que recebe a requisição de exibição pode não ter sido a mesma que recebeu o upload da foto. Assim, o arquivo não está disponível naquela instância, causando a falha intermitente. A solução típica é utilizar um armazenamento compartilhado (ex.: Amazon S3, EFS) ou um banco de dados que suporte BLOBs, garantindo que qualquer instância possa acessar o arquivo.

NÃO CAIA NESSA!

A banca explora a confusão entre armazenamento local e compartilhado. Muitos candidatos podem pensar em cache ou serverless, mas a raiz do problema é a falta de compartilhamento do sistema de arquivos entre as instâncias. Em arquiteturas horizontais, arquivos de usuários devem ser armazenados em serviços externos e não no disco da instância.

Gabarito: letra E

Link permanente: /questoes/fg047167