Pular para o conteúdo

Design clássico · Pleno

App de atividades físicas (Strava)

Projeto de entrevista clássico. Pontos centrais: indexação geoespacial e rankings e leaderboards.

14 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: indexação geoespacial e rankings e leaderboards. O exercício pede um aplicativo de acompanhamento de atividades físicas como o Strava: o usuário registra suas atividades e as compartilha com a sua rede. A fonte limita o foco a corrida e ciclismo.

01 · CONTEXTO

Registrar, compartilhar e ver

O exercício pede um aplicativo de acompanhamento de atividades físicas como o Strava: o usuário registra suas atividades e as compartilha com a sua rede. A fonte limita o foco a corrida e ciclismo.

Os requisitos funcionais centrais são três: iniciar, pausar, parar e salvar uma corrida ou pedalada; ver rota, distância e tempo enquanto a atividade acontece; e ver os detalhes das próprias atividades concluídas e das atividades dos amigos.

Ficam fora do escopo a gestão de amigos e a autenticação e autorização. Isso delimita o desenho: o caso trata de registrar, guardar e ler atividades, não de contas nem de relações entre usuários.

02 · REQUISITOS

Quatro exigências não funcionais

Os requisitos não funcionais são quatro: alta disponibilidade; funcionamento em áreas remotas, sem conexão de rede; estatísticas locais precisas e atualizadas durante a corrida ou pedalada; e escala para dez milhões de atividades simultâneas.

03 · DESENHO

Do aparelho ao armazenamento

O diagrama abaixo é um desenho ilustrativo do autor, montado a partir dos requisitos. Ele mostra o caminho de gravação de uma atividade e o lugar do ranking.

  1. O app do atleta é onde o atleta vê rota, distância e tempo, e onde as estatísticas locais precisam estar disponíveis durante a atividade.

    Diagrama da arquitetura: Gravação de atividade (desenho ilustrativo)
    CLApp do atletaestatísticas locais
    NWEntrada da API
    CPServiço de atividades
    DBArmazenamento de atividades
    QFila de eventos
    CPConsumidor de ranking
    CHPlacar de ranking
  2. Ao salvar a atividade, o app a envia pela entrada da API ao serviço de atividades.

    Diagrama da arquitetura: Gravação de atividade (desenho ilustrativo)
    CLApp do atleta
    NWEntrada da API
    CPServiço de atividadesrecebe a atividade
    DBArmazenamento de atividades
    QFila de eventos
    CPConsumidor de ranking
    CHPlacar de ranking
  3. O serviço grava a atividade concluída num armazenamento particionado, a resposta de partida para a exigência de escala.

    Diagrama da arquitetura: Gravação de atividade (desenho ilustrativo)
    CLApp do atleta
    NWEntrada da API
    CPServiço de atividades
    DBArmazenamento de atividadesatividade salva
    QFila de eventos
    CPConsumidor de ranking
    CHPlacar de ranking
  4. No desenho ilustrativo, o serviço também publica um evento na fila, para que o trabalho de ranking não fique dentro do salvamento.

    Diagrama da arquitetura: Gravação de atividade (desenho ilustrativo)
    CLApp do atleta
    NWEntrada da API
    CPServiço de atividades
    DBArmazenamento de atividades
    QFila de eventosevento da atividade
    CPConsumidor de ranking
    CHPlacar de ranking
  5. O consumidor atualiza o placar de ranking, que fica em memória para ser lido rapidamente.

    Diagrama da arquitetura: Gravação de atividade (desenho ilustrativo)
    CLApp do atleta
    NWEntrada da API
    CPServiço de atividades
    DBArmazenamento de atividades
    QFila de eventos
    CPConsumidor de ranking
    CHPlacar de rankingposições atualizadas

Uma atividade pode ser modelada como um conjunto de pontos de localização e tempo, mais resumos como distância e duração. Separar o resumo da série de pontos é uma decisão de modelagem de dados a discutir, e a série de pontos leva a pensar em dados de séries temporais.

04 · APROFUNDAMENTOS

As quatro perguntas da fonte

A fonte lista quatro aprofundamentos: como registrar atividades offline, como escalar para a carga de atividades simultâneas, como compartilhar atividades com amigos em tempo real e como expor um ranking dos melhores atletas.

Para o uso offline, o desenho precisa responder: onde a atividade fica guardada no aparelho; como um reenvio é reconhecido como a mesma atividade; e o que o servidor faz ao receber a mesma atividade duas vezes.

  1. O amigo abre o app e pede as atividades concluídas de quem ele acompanha; a requisição passa pelo balanceador até o serviço de leitura.

    Diagrama da arquitetura: Leitura de atividades de amigos e ranking (desenho ilustrativo)
    CLApp do amigoabre atividades de amigos
    NWBalanceador
    CPServiço de leitura
    CHCache de atividades recentes
    DBArmazenamento de atividades
    CHPlacar de ranking
  2. O serviço de leitura tenta o cache de atividades recentes e, se a atividade não estiver lá, consulta o armazenamento particionado.

    Diagrama da arquitetura: Leitura de atividades de amigos e ranking (desenho ilustrativo)
    CLApp do amigo
    NWBalanceador
    CPServiço de leitura
    CHCache de atividades recentesleitura frequente
    DBArmazenamento de atividades
    CHPlacar de ranking
  3. As posições do ranking vêm do placar já calculado, sem recalcular a cada leitura.

    Diagrama da arquitetura: Leitura de atividades de amigos e ranking (desenho ilustrativo)
    CLApp do amigo
    NWBalanceador
    CPServiço de leitura
    CHCache de atividades recentes
    DBArmazenamento de atividades
    CHPlacar de rankingposições prontas

Para o ranking, as perguntas são: qual o recorte (global, por amigos ou por trecho de rota) e qual a janela de tempo. Se o recorte for por trecho de rota, entra a indexação geoespacial, para reconhecer que uma atividade passou pelo trecho; a escolha da forma de particionar os dados é outra decisão a discutir.

05 · LIMITES

O que este caso não cobre

Perguntas frequentes

O que é App de atividades físicas (Strava)?

Projeto de entrevista clássico. Pontos centrais: indexação geoespacial e rankings e leaderboards.

O que o design de App de atividades físicas (Strava) cobre?

Ele está organizado nestas seções: Registrar, compartilhar e ver, Quatro exigências não funcionais, Do aparelho ao armazenamento, As quatro perguntas da fonte e O que este caso não cobre.

Quanto tempo leva App de atividades físicas (Strava) e qual é o nível?

Leva cerca de 14 minutos para ler e tem nível Pleno.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.