Skip to main content
AI EducademyAIEducademy
🌳

Fundamentos de IA

🌱
AI Seeds

Alfabetização em IA para o mundo real

🌿
AI Sprouts

As bases por trás dos sistemas inteligentes

🌳
AI Branches

Desenvolva com os recursos atuais de IA

🏕️
AI Canopy

Projete sistemas GenAI confiáveis

🌲
AI Forest

Envie produtos de IA com responsabilidade

🔨

Mestria em IA

✏️
AI Sketch

Fundações de engenharia para construtores de IA

🪨
AI Chisel

Padrões para resolver problemas mais difíceis

⚒️
AI Craft

Projete sistemas que dimensionem a IA

💎
AI Polish

Comunique-se e lidere na era da IA

🏆
AI Masterpiece

Seu ponto culminante de IA de produção

🚀

Preparação para Carreira

🚀
Plataforma de Lançamento de Entrevistas

Navegue no mercado de trabalho de engenharia de IA

🌟
Domínio Comportamental

Conte a história de como você cria impacto

💻
Entrevistas Técnicas

Resolva, projete e comunique-se sob pressão

🤖
Entrevistas de IA e ML

Prepare-se para entrevistas modernas com ML e GenAI

🏆
Oferta e Além

Dê o próximo passo confiante e informado

Ver Todos os Programas→

Laboratório

7 experimentos carregados
🧠Playground de Rede Neural🤖IA ou Humano?💬Laboratório de Prompts🎨Gerador de Imagens😊Analisador de Sentimento💡Construtor de Chatbots⚖️Simulador de Ética
🎯Entrevista simuladaEntrar no Laboratório→
JornadaBlogue
🎯
Sobre

Tornar a educação em IA acessível para todos, em todo lugar

❓
Perguntas frequentes

Perguntas frequentes respondidas

🧰
Ferramentas de IA

Ferramentas selecionadas que usamos e recomendamos

✉️
Contato

Entre em contacto connosco

⭐
Codigo aberto

Construído de forma aberta no GitHub

Preços
Começar
AI EducademyAIEducademy

© 2026 AI Educademy. Todos os direitos reservados.

Aprender

  • Programas
  • Aulas
  • Laboratório
  • Kit inicial de IA
  • Preços

Comunidade

  • GitHub
  • Contribuir
  • Código de Conduta
  • Sobre
  • Perguntas Frequentes

Suporte

  • Me Pague um Café ☕
  • Termos de Serviço
  • Política de Privacidade
  • Contato
  • Sitemap
Programas de IA e Engenharia›⚒️ AI Craft›Aulas›Fundamentos de Design de Sistema – Os Blocos de Construção de Sistemas Escaláveis
🏗️
AI Craft • Avançado⏱️ 20 min de leitura

Fundamentos de Design de Sistema – Os Blocos de Construção de Sistemas Escaláveis

🤖

Esta lição foi traduzida automaticamente para português e ainda não foi revisada por uma pessoa. Se algo parecer estranho, a versão em inglês é a definitiva.

Por que o design do sistema é importante

Cada aplicação em larga escala é montada a partir dos mesmos blocos de construção fundamentais. Os entrevistadores não esperam que você invente novas tecnologias - eles querem que você selecione e combine os componentes certos para um determinado problema. Esta lição aborda o kit de ferramentas que você usará em cada entrevista de design.

Arquitetura Cliente-Servidor

Basicamente, a web segue um modelo simples: clientes enviam solicitações, servidores as processam e as respostas fluem de volta. Mas os sistemas modernos adicionam camadas entre esses dois endpoints para lidar com escala, confiabilidade e desempenho.

Uma solicitação típica pode passar por: cliente → CDN → balanceador de carga → gateway de API → servidor de aplicativos → cache → banco de dados. Cada camada resolve um problema específico, e entender quando cada camada é necessária separa os candidatos fortes dos medianos.

💡

Nas entrevistas, sempre comece esboçando o fluxo cliente-servidor de alto nível antes de mergulhar nos detalhes. Mostra pensamento estruturado.

Balanceadores de carga: distribuindo tráfego

Um único servidor tem capacidade finita. Os balanceadores de carga distribuem solicitações recebidas em vários servidores usando estratégias como:

  • Round-robin - as solicitações percorrem os servidores sequencialmente
  • Menos conexões - rotas para o servidor que lida com o menor número de solicitações ativas
  • Hashing consistente - mapeia solicitações para servidores específicos com base em uma chave (útil para armazenamento em cache)

Os balanceadores de carga também realizam verificações de integridade, removendo automaticamente servidores não íntegros do pool. Em ambientes de nuvem, serviços como AWS ALB ou Azure Front Door lidam com isso de forma transparente.

🧠Verificação Rápida

Um serviço de feed de mídia social recebe 10 vezes mais leituras do que gravações. Qual abordagem de balanceamento de carga garante melhor que os usuários acessem consistentemente o mesmo servidor com cache quente?

Cache: velocidade em todas as camadas

O cache armazena dados acessados ​​com frequência mais perto do consumidor. Existe em vários níveis:

Lição 1 de 100% concluído
←Voltar ao programa
Continuar: Projete um encurtador de URL - sua primeira entrevista de design de sistema→

Discussão

Inicie sessão para participar na discussão

Sugerir uma edição nesta lição

| Camada | Exemplo | Latência | |-------|---------|-----| | Cache do navegador | Ativos estáticos, respostas de API | ~0ms | | CDN | Imagens, CSS, arquivos JS | ~10-50ms | | Cache do aplicativo | Redis, Memcached | ~1-5ms | | Cache de banco de dados | Cache de resultados da consulta | ~5-10ms |

Invalidação de cache é notoriamente um dos problemas mais difíceis da computação. Estratégias comuns incluem TTL (time-to-live), write-through (atualizar cache em cada gravação) e cache-aside (o aplicativo gerencia o cache explicitamente).

🤯

A famosa citação de Phil Karlton - "Existem apenas duas coisas difíceis na Ciência da Computação: invalidação de cache e nomeação de coisas" - é tão amplamente citada que é praticamente um rito de passagem em entrevistas de design de sistemas.

Bancos de dados: SQL vs NoSQL

Escolher o banco de dados certo é uma das decisões de design mais impactantes:

Bancos de dados SQL (PostgreSQL, MySQL) oferecem transações ACID, forte consistência e esquemas estruturados. Eles se destacam quando os dados têm relacionamentos claros e você precisa de consultas complexas com junções.

Bancos de dados NoSQL vêm em vários tipos:

  • Lojas de documentos (MongoDB) – esquemas flexíveis, ótimos para estruturas de dados variadas
  • Armazenamentos de valores-chave (DynamoDB, Redis) - pesquisas extremamente rápidas por chave
  • Lojas de colunas largas (Cassandra) - grande capacidade de gravação, distribuída por design
  • Bancos de dados gráficos (Neo4j) - dados de relacionamento intenso, como redes sociais
🧠Verificação Rápida

Você está projetando um sistema que armazena perfis de usuário com dados semiestruturados que mudam frequentemente (campos diferentes por tipo de usuário). Qual tipo de banco de dados é mais adequado?

Filas de mensagens: processamento assíncrono

Nem toda operação precisa de uma resposta imediata. As filas de mensagens (RabbitMQ, Apache Kafka, AWS SQS) separam produtores de consumidores, permitindo:

  • Processamento assíncrono - envie um e-mail após a inscrição sem bloquear a resposta
  • Nivelamento de carga - absorve picos de tráfego armazenando solicitações em buffer
  • Tolerância a falhas - se um consumidor travar, as mensagens aguardam na fila

Kafka merece menção especial: não é apenas uma fila, mas um log de eventos distribuído, permitindo arquiteturas orientadas a eventos onde vários consumidores podem processar independentemente o mesmo fluxo de eventos.

Diagrama de arquitetura mostrando cliente, balanceador de carga, servidores de aplicativos, camada de cache, banco de dados e fila de mensagens
Os blocos de construção fundamentais de um sistema escalável – cada camada aborda uma preocupação específica.

Microsserviços vs Monolith

| Aspecto | Monólito | Microsserviços | |--------|----------|---------------| | Implantação | Unidade única | Serviços independentes | | Dimensionamento | Dimensione tudo junto | Dimensionar serviços individuais | | Complexidade | Mais simples de começar | Despesas operacionais | | Dados | Banco de dados compartilhado | Banco de dados por serviço |

Comece o monolith, extraia microsserviços quando necessário. A maioria dos entrevistadores aprecia os candidatos que reconhecem que os microsserviços introduzem complexidade de sistema distribuído (falhas de rede, consistência de dados, orquestração de implantação) e nem sempre são a escolha certa.

🤔
Think about it:

A Netflix migrou de um monólito para microsserviços ao longo de vários anos. Mas o Shopify – que lida com bilhões em transações – ainda opera um monólito modular. Que fatores podem tornar uma abordagem melhor que a outra para uma determinada empresa?

Teorema CAP simplificado

O teorema CAP afirma que um sistema distribuído pode garantir apenas duas das três propriedades simultaneamente:

  • Consistência - cada leitura retorna a gravação mais recente
  • Disponibilidade - cada solicitação recebe uma resposta
  • Tolerância de partição - o sistema continua operando apesar de falhas de rede

Como as partições de rede são inevitáveis ​​em sistemas distribuídos, a verdadeira escolha é entre CP (consistência sobre disponibilidade) e AP (disponibilidade sobre consistência).

  • Sistemas CP (por exemplo, HBase, MongoDB com leituras majoritárias) - retornam erros em vez de dados obsoletos
  • Sistemas AP (por exemplo, Cassandra, DynamoDB) - sempre respondem, mas os dados podem estar um pouco obsoletos
🧠Verificação Rápida

Você está projetando um sistema de transações bancárias onde saldos incorretos podem causar perdas financeiras. Qual compromisso da PAC você deve priorizar?

A estrutura da entrevista

Ao entrar em uma entrevista de design de sistema, siga esta estrutura:

  1. Requisitos - esclarecer requisitos funcionais e não funcionais (5 min)
  2. Design de API - defina os principais endpoints ou interfaces (5 min)
  3. Modelo de dados - escolha bancos de dados e defina esquemas (5 min)
  4. Arquitetura de alto nível – esboce o sistema usando os blocos de construção atuais (10 min)
  5. Aprofundamentos - dimensionar gargalos, lidar com falhas, otimizar (15 min)
🤔
Think about it:

Pense em um sistema que você usa diariamente – Instagram, Uber ou Spotify. Você consegue identificar quais blocos de construção desta lição ela provavelmente usa? Onde ficaria o balanceador de carga? O que seria armazenado em cache? Qual tipo de banco de dados se ajusta ao seu modelo de dados?

Principais conclusões

  • Todo sistema escalável usa os mesmos blocos de construção básicos - aprenda-os uma vez, aplique-os em qualquer lugar
  • Balanceadores de carga, caches e filas de mensagens resolvem desafios distintos de escalabilidade
  • A escolha do banco de dados (SQL vs NoSQL) depende do formato dos dados, das necessidades de consistência e dos padrões de acesso
  • O teorema CAP força trade-offs - saiba que lado o seu sistema deve favorecer
  • Siga a estrutura de entrevista estruturada: requisitos → API → dados → arquitetura → aprofundamentos

A seguir: aplicaremos esses fundamentos para projetar um encurtador de URL do zero.