I always start system design with clarifying questions.
Eu sempre começo system design com clarifying questions.Aula
System design C1: requirements and scope
Nível: C1
Objetivo
Conduzir a fase de requisitos e escopo em uma system design interview ou RFC técnico em C1, com clarifying questions, functional and non-functional requirements, constraints, assumptions e success metrics bem delimitados. O foco é mostrar maturidade na abertura do problema antes de qualquer desenho.
Explicação
System design em C1 começa muito antes do desenho. A primeira metade é a fase de requisitos e escopo; sem ela, o desenho fica sem ancoragem e a audiência sênior percebe em 30 segundos.
1. Clarifying questions
A primeira coisa que o engenheiro C1 faz é perguntar, não desenhar. As perguntas certas cobrem cinco áreas:
- Funcionalidade: 'What are the core features? What is in scope and what is out?'
- Escala: 'How many users? How many requests per second at peak? How much data?'
- Latência e disponibilidade: 'What latency are we targeting? Is this latency-critical or throughput-critical?'
- Consistência: 'Do we need strong consistency, or is eventual acceptable?'
- Constraints: 'Are there compliance requirements? On-prem vs cloud? Existing systems we must integrate with?'
Sem clarifying questions, o candidato desenha um sistema genérico que não cabe no problema. Em entrevista, sem perguntas, o entrevistador assume que o candidato não vai escalar para sênior.
2. Functional vs non-functional requirements
Os functional requirements dizem o que o sistema faz: 'users can upload images, get a thumbnail, and share via link.' Os non-functional requirements dizem quão bem: 'p99 latency under 200 ms; 99.9% availability; support 10k concurrent uploads.' C1 separa os dois explicitamente; misturá-los é erro clássico.
3. Constraints e assumptions
Constraints são limites que não podem ser mudados: 'must run on AWS; budget capped at $20k/month; team has 4 engineers.' Assumptions são premissas que podem ser validadas: 'we assume 80% of uploads are under 5 MB.' Em C1, constraints e assumptions são listados separadamente; o entrevistador percebe maturidade quando vê a separação.
4. Success metrics
A frase final da fase de requisitos é a métrica de sucesso. 'The system is successful if: p99 latency is under 200 ms; 99.9% availability; cost per upload is under $0.001.' Success metrics em C1 são mensuráveis, numeradas e alinhadas ao negócio. Sem métricas, o sistema não tem como ser avaliado.
Exemplos
| Inglês | Tradução | Observação |
|---|---|---|
| What are the core features? What is in scope and what is out of scope for this design? | Quais são as funcionalidades centrais? O que está dentro e fora do escopo deste design? | Clarifying question sobre funcionalidade. |
| How many requests per second at peak? How much data do we need to store? | Quantas requisições por segundo no pico? Quanto de dados precisamos armazenar? | Clarifying question sobre escala. |
| Do we need strong consistency, or is eventual consistency acceptable? | Precisamos de consistência forte, ou consistência eventual é aceitável? | Clarifying question sobre consistência. |
| Functional: users can upload images and get a thumbnail. Non-functional: p99 latency under 200 ms; 99.9% availability; support 10k concurrent uploads. | Funcional: usuários podem subir imagens e obter thumbnail. Não-funcional: latência p99 abaixo de 200 ms; 99,9% de disponibilidade; suportar 10 mil uploads concorrentes. | Separar functional de non-functional. |
| Constraints: must run on AWS; budget capped at $20k/month. Assumptions: 80% of uploads are under 5 MB. | Restrições: precisa rodar na AWS; orçamento limitado a 20 mil dólares por mês. Premissas: 80% dos uploads são menores que 5 MB. | Constraints vs assumptions separados. |
| Success metrics: p99 latency under 200 ms; 99.9% availability; cost per upload under $0.001. | Métricas de sucesso: latência p99 abaixo de 200 ms; 99,9% de disponibilidade; custo por upload abaixo de 0,001 dólar. | Métricas mensuráveis, numeradas, alinhadas ao negócio. |
Erros comuns
- Pular clarifying questions: o desenho fica sem ancoragem; o entrevistador percebe em 30 segundos.
- Misturar functional com non-functional: 'users can upload quickly' mistura o que o sistema faz com quão bem.
- Tratar assumptions como constraints: assumption pode ser validada; constraint não. Misturar os dois esconde o que é fixo.
- Success metrics vagas: 'system should be fast and reliable' não é métrica; p99 < 200 ms é métrica.
- Esquecer de listar o que está fora de escopo: 'out of scope' delimita a conversa e impede feature creep.
Prática guiada
Reescreva cada bloco abaixo no padrão C1 de system design: requisitos e escopo.
- Clarifying questions: troque 'the system should be fast' por perguntas sobre latência-alvo, pico de QPS, e dados.
- Functional vs non-functional: separe o que o sistema faz (funcional) de quão bem (não-funcional).
- Constraints vs assumptions: liste os dois separadamente; constraints não mudam, assumptions podem ser validadas.
- Success metrics: troque 'system should be reliable' por 'p99 < 200 ms, 99.9% availability, cost per upload < $0.001'.
Compare a versão C1 com a versão genérica: a versão C1 delimita o problema antes de desenhar.
Resumo
System design C1 começa com clarifying questions sobre funcionalidade, escala, latência, consistência e constraints. Em seguida vem functional vs non-functional requirements (separados), constraints vs assumptions (listados separadamente), e success metrics mensuráveis e numeradas. Sem essa fase, o desenho fica sem ancoragem e o entrevistador percebe a falta de maturidade em 30 segundos.
Vocabulário
Palavras principais
'Functional: users can upload images.'
'Funcional: usuários podem subir imagens.''Non-functional: p99 < 200 ms, 99.9% availability.'
'Não-funcional: p99 < 200 ms, 99,9% de disponibilidade.''Constraints: must run on AWS; budget capped at $20k/month.'
'Restrições: precisa rodar na AWS; orçamento limitado a 20 mil dólares por mês.''Assumptions: 80% of uploads are under 5 MB.'
'Premissas: 80% dos uploads são menores que 5 MB.''Success metrics: p99 < 200 ms, 99.9% availability.'
'Métricas de sucesso: p99 < 200 ms, 99,9% de disponibilidade.'How many users? What's the peak QPS?
Quantos usuários? Qual o pico de QPS?p99 latency target is 200 ms.
A meta de latência p99 é 200 ms.Do we need strong consistency, or is eventual acceptable?
Precisamos de consistência forte, ou eventual é aceitável?'Out of scope: video uploads; only images in this design.'
'Fora do escopo: uploads de vídeo; só imagens neste design.'História
História: System design C1: requirements and scope
Nível: C1
História em inglês
Opening a system design interview with clarifying questions
On Tuesday, I had a system design interview for a senior role. The interviewer asked me to design a URL shortener; I started with clarifying questions before any drawing. I asked: what is the peak QPS? Do we need analytics on the clicks? What is the latency target? Are there compliance requirements? I listed functional and non-functional requirements separately: functional, shorten URL, redirect, optional analytics; non-functional, p99 under 50 ms, 99.9% availability, support 10k QPS. I listed constraints and assumptions: constraints, must run on AWS, 4 engineers, budget $5k/month; assumptions, 80% of traffic is read, average URL lifetime 30 days. I closed the requirements phase with success metrics: p99 under 50 ms, 99.9% availability, cost per redirect under $0.0001. The interviewer said: that was the cleanest opening to a system design I have seen in a while.
Tradução linha por linha
| Inglês | Tradução |
|---|---|
| On Tuesday, I had a system design interview for a senior role. | Na terça, eu tive uma entrevista de system design para uma vaga de sênior. |
| The interviewer asked me to design a URL shortener; I started with clarifying questions before any drawing. | O entrevistador me pediu para desenhar um encurtador de URL; eu comecei com clarifying questions antes de qualquer desenho. |
| I asked: what is the peak QPS? Do we need analytics on the clicks? What is the latency target? Are there compliance requirements? | Eu perguntei: qual o pico de QPS? Precisamos de analytics nos cliques? Qual a meta de latência? Há requisitos de compliance? |
| I listed functional and non-functional requirements separately: functional, shorten URL, redirect, optional analytics; non-functional, p99 under 50 ms, 99.9% availability, support 10k QPS. | Eu listei requisitos funcionais e não-funcionais separadamente: funcional, encurtar URL, redirecionar, analytics opcional; não-funcional, p99 abaixo de 50 ms, 99,9% de disponibilidade, suportar 10 mil QPS. |
| I listed constraints and assumptions: constraints, must run on AWS, 4 engineers, budget $5k/month; assumptions, 80% of traffic is read, average URL lifetime 30 days. | Eu listei restrições e premissas: restrições, precisa rodar na AWS, 4 engenheiros, orçamento 5 mil dólares por mês; premissas, 80% do tráfego é leitura, tempo médio de vida da URL 30 dias. |
| I closed the requirements phase with success metrics: p99 under 50 ms, 99.9% availability, cost per redirect under $0.0001. | Eu fechei a fase de requisitos com métricas de sucesso: p99 abaixo de 50 ms, 99,9% de disponibilidade, custo por redirect abaixo de 0,0001 dólar. |
| The interviewer said: that was the cleanest opening to a system design I have seen in a while. | O entrevistador disse: essa foi a abertura de system design mais limpa que vi em muito tempo. |
Notas de vocabulário
- URL shortener = problema clássico de system design para sênior.
- peak QPS = pico de queries per second — pergunta obrigatória C1.
- analytics on the clicks = funcionalidade opcional, mas que muda o design (escrita adicional).
- 80% of traffic is read = assumption que direciona o design (cache primeiro).
- cost per redirect under $0.0001 = success metric alinhada ao custo, não só à latência.
- the cleanest opening = sinal de maturidade C1: a fase de requisitos vem antes do desenho.
Perguntas de compreensão
- Por que começar com clarifying questions em C1?
- O que diferencia functional de non-functional?
- Por que separar constraints de assumptions?
- O que torna uma success metric C1 útil?
Prática com a história
- Escreva três clarifying questions C1 para um sistema de upload de imagens.
- Escreva success metrics C1 mensuráveis para o mesmo sistema.
- Separe 'must run on AWS' (constraint) de '80% of uploads are under 5 MB' (assumption).
Prática
Exercícios e teste
A próxima melhoria é transformar esses arquivos em perguntas com resposta no navegador. Por enquanto, esta página já organiza o estudo e permite seguir a aula inteira sem abrir os arquivos manualmente.