Pular para o conteúdo
← Back to Skalablog

Published article

Arquiteto de Software: os 4 livros essenciais

Software Engineering

Arquiteto de software é quem decide entre tradeoffs com base no contexto do negócio, não quem domina a sintaxe mais exótica. Quatro leituras formam o repertório essencial: tipos de arquitetura e tradeoffs, DDD estratégico, sistemas intensivos em dados e System Design. Este artigo mostra a ordem, o que cada etapa entrega e como estudar sem desistir.

O que é arquiteto de software na prática

Arquiteto de software é quem analisa o contexto de um problema, levanta soluções possíveis, compara os tradeoffs de cada uma e decide qual se encaixa melhor na empresa. Escrever código continua fazendo parte, mas a decisão vem antes da implementação e envolve tanto restrições técnicas quanto perguntas de negócio.

Um tradeoff é um problema que você aceita ter para alcançar a solução desejada. Alta disponibilidade ilustra bem: manter um sistema no ar 24 horas por dia, 7 dias por semana, normalmente exige múltiplas instâncias de banco de dados, e coordenar escritas entre elas costuma custar consistência imediata. Se você recebe a escrita em um banco e replica para os outros, essa replicação leva tempo, então algum leitor pode ver dado desatualizado. Esse dado desatualizado é o preço aceito em troca da disponibilidade.

O teorema CAP, formulado por Eric Brewer e depois refinado por Seth Gilbert e Nancy Lynch, formaliza esse tipo de escolha em sistemas distribuídos. Uma revisão de 2012 do próprio Brewer argumenta que as decisões reais são mais graduais do que o teorema sugere, mas o ponto central permanece: partições de rede acontecem, e a resposta a elas é uma decisão de arquitetura, não um detalhe de implementação.

Por que a IA mudou o que se espera do arquiteto de software

Escrever código deixou de ser o diferencial de carreira que era há alguns anos, porque a IA já escreve boa parte dele. O profissional que continua relevante é o que sabe arquitetar sistemas e usa IA para o trabalho braçal enquanto fica com as decisões técnicas e de negócio.

Isso muda a divisão de trabalho dentro do time. Quem decide a arquitetura, a tecnologia e o padrão a ser seguido é o arquiteto; a IA executa trabalho de implementação dentro do desenho definido. Um arquiteto com repertório técnico guia a IA melhor, porque consegue dizer qual abordagem seguir em vez de aceitar a primeira sugestão.

Essa é a razão prática de estudar arquitetura agora, e não daqui a cinco anos. As empresas procuram quem decide, e decisão se sustenta em repertório.

Arquiteto de software entende de negócio antes de tecnologia

Arquiteto de software precisa fazer perguntas de negócio antes de propor tecnologia, porque o mesmo pedido gera arquiteturas completamente diferentes conforme o volume e o padrão de uso. Se alguém pede um sistema parecido com o YouTube, saber quantos usuários acessam por dia e quantos vídeos cada um assiste muda o desenho inteiro.

Sem esse olhar de produto, você não sabe o que perguntar e acaba projetando para um volume imaginado. O exercício vale para qualquer demanda:

  • Quantos usuários por dia o sistema precisa atender?
  • Qual o pico de acessos, não só a média?
  • Quantas operações de escrita por segundo chegam ao banco?
  • Por quanto tempo os dados precisam ficar disponíveis?
  • Qual a tolerância a inconsistência?

Essa conversa acontece com product managers, product owners e outras pessoas de negócio, o que torna a comunicação uma habilidade técnica dentro da função. Linguagem ubíqua e modelagem de domínio entram justamente aí, e é por isso que o estudo de Domain-Driven Design aparece tão cedo no roteiro.

Comece pelos tipos de arquitetura, não pelas ferramentas

O primeiro passo prático é entender os tipos de arquitetura e quando cada um faz sentido, porque isso amplia o repertório antes de você escolher uma especialização. Microsserviços, arquitetura orientada a eventos, monolito e serverless resolvem problemas diferentes e cobram preços diferentes em operação, latência e complexidade.

Tipo de arquiteturaProblema que resolve bemPreço em troca
MonolitoEquipe pequena, domínio ainda incertoEscala junto com o time, deploy único
MicrosserviçosTimes independentes, partes com escalas distintasCoordenação, observabilidade e operação mais caras
Orientada a eventosIntegração assíncrona entre partesRastrear fluxo e depurar fica mais difícil
ServerlessCarga irregular, pouca operaçãoLimites da plataforma e latência de partida

Estudar primeiro o tipo de arquitetura que você já encontra no trabalho tem uma vantagem concreta: você aplica o conceito na segunda-feira. Ver aplicabilidade no que se estuda é o que sustenta a constância, e constância é o que faz o aprendizado acumular ao longo de meses.

Junto com os tipos de arquitetura vêm os atributos de qualidade que aparecem em toda discussão: escalabilidade, performance, disponibilidade e consistência. Esses quatro termos são os eixos nos quais os tradeoffs acontecem, e reconhecê-los é o que permite comparar duas soluções sem cair em preferência pessoal.

A sequência de leitura para virar arquiteto de software

A sequência de leitura sugerida tem quatro livros, do mais introdutório ao mais específico, e cada um cobre uma camada distinta do trabalho. Ler fora de ordem funciona, mas a progressão abaixo evita que você encare replicação e particionamento antes de entender por que eles existem.

  1. Fundamentals of Software Architecture, de Mark Richards e Neal Ford, apresenta tipos de arquitetura, critérios de escolha e os tradeoffs de cada estilo.
  2. Implementing Domain-Driven Design, de Vaughn Vernon, foca em entender o negócio antes de decidir tecnologia.
  3. Designing Data-Intensive Applications, de Martin Kleppmann, aprofunda bancos de dados, índices, replicação e processamento assíncrono.
  4. System Design Interview, de Alex Xu, é mais curto e voltado para quem pretende processos seletivos internacionais.

A recomendação de leitura é sempre a mesma: de capa a capa, anotando e sem pressa. Quem estuda em livro físico costuma marcar passagens e colar post-its, e esse gesto ajuda a fixar o conteúdo. Uma rotina de meia hora por dia durante alguns meses produz mais retenção do que uma leitura rápida de fim de semana.

Como ler cada livro sem largar no meio

Anotar, voltar aos trechos marcados e usar o conteúdo no trabalho na mesma semana são as três práticas que mantêm o ritmo. Livros técnicos extensos não foram feitos para maratonar; foram feitos para voltar. Aquele capítulo sobre replicação faz mais sentido depois que você discutiu replicação em um problema real, e reler o capítulo com essa experiência na cabeça rende mais que a primeira leitura.

DDD estratégico: por que ele vem antes do código

DDD estratégico é o ramo do Domain-Driven Design que trata de como estruturar a aplicação em sistemas e serviços delimitados, enquanto o DDD tático trata de como escrever o código dentro de cada parte. Para quem está começando em arquitetura, o estratégico rende mais, porque aparece em praticamente qualquer empresa.

Aplicar DDD tático de forma integral é raro em projetos reais. O estratégico, por outro lado, ajuda a responder onde investir capacidade de engenharia. Em um serviço de delivery, por exemplo, a experiência de pedido costuma ser o núcleo do negócio, enquanto o processamento de pagamento pode ser contratado de um fornecedor externo.

Essa distinção entre domínio central, subdomínios de apoio e subdomínios genéricos é uma decisão de alocação de pessoas, não só de software. Colocar os engenheiros mais experientes no núcleo do negócio e usar soluções prontas nas bordas é uma escolha de arquitetura com efeito direto no orçamento.

A documentação oficial do Domain-Driven Design é um complemento útil para a parte de modelagem.

Sistemas intensivos em dados: bancos, índices e replicação

Designing Data-Intensive Applications usa "data-intensive" para descrever sistemas em que volume de dados, taxa de escrita e padrões de acesso, e não a complexidade do cálculo, determinam a arquitetura. É o livro que constrói o repertório técnico para escolher entre tipos de índice, estratégias de replicação e modelos de consistência.

Os tópicos centrais incluem:

  • Replicação single-leader e multi-leader.
  • Replicação síncrona, assíncrona e semissíncrona.
  • Índices como o B-tree e estruturas baseadas em log.
  • Bancos relacionais e não relacionais.
  • Filas, mensageria e processamento assíncrono.

Cada um desses itens é uma ferramenta a mais no leque de soluções disponíveis. Se você recebe um problema e sabe que pode usar replicação assíncrona, um índice B-tree, um banco não relacional ou uma arquitetura serverless, você escolhe com critério em vez de repetir o que já viu.

System Design Interview e o mercado internacional

System Design Interview é um livro mais curto e mais leve que os anteriores, voltado para entrevistas em que o entrevistador pede o desenho de um sistema completo. O formato costuma começar por requisitos funcionais e não funcionais, passar por estimativas de capacidade e terminar com a análise de tradeoffs.

Um exemplo recorrente de exercício é projetar um encurtador de URLs que suporte 10.000 leituras por segundo e 1.000 escritas por segundo. Resolver esse tipo de problema exige separar o que o sistema precisa fazer do quanto ele precisa suportar, porque a segunda parte determina banco, cache e estratégia de replicação.

O livro é útil principalmente para quem busca posições em big techs ou empresas internacionais, mas o hábito de estimar capacidade antes de escolher tecnologia serve em qualquer contexto. Ele aparece depois dos três primeiros porque pressupõe familiaridade com os conceitos de sistemas distribuídos. Também é o mais opcional da lista, já que Designing Data-Intensive Applications cobre boa parte dos mesmos temas com mais profundidade.

Como estudar arquitetura de software sem desistir

Estudo ativo é a prática de interagir com o texto enquanto lê: fazer perguntas sobre o que acabou de ser lido, tentar explicar o conceito em voz alta e verificar se ele se aplica ao trabalho atual. A retenção melhora porque o cérebro precisa reconstruir a ideia em vez de apenas reconhecê-la.

Perguntas úteis durante a leitura: isso fez sentido para mim? Consigo aplicar isso no meu trabalho hoje? Por que isso é feito dessa forma e não daquela? Quem lê em silêncio, respondendo a essas perguntas para si mesmo, fixa mais do que quem passa os olhos pela página.

Explicar o conteúdo para outra pessoa, inclusive gravando vídeos ou escrevendo, é uma extensão natural desse método. Quem ensina precisa organizar o raciocínio, e essa organização revela lacunas que a leitura passiva esconde. Ensinar não é generosidade apenas com quem assiste; é a forma mais rápida de descobrir o que você ainda não sabe.

Esse hábito combina com uma rotina modesta e constante. Trinta minutos por dia durante três meses cobrem um livro técnico extenso com folga, enquanto leituras longas de fim de semana costumam terminar em abandono.

Os cinco passos, em ordem

A sequência resumida tem cinco etapas, e cada uma depende da anterior. Pular direto para replicação de banco de dados sem entender tradeoffs produz decisões sem justificativa; estudar negócio sem conhecer tipos de arquitetura produz abstração sem aplicação.

  1. Entender tradeoffs, contexto e os atributos de escalabilidade, performance, disponibilidade e consistência.
  2. Estudar os tipos de arquitetura e quando usar cada um, começando pelo que você já encontra no trabalho.
  3. Aprender DDD estratégico e linguagem ubíqua para conversar com product managers e product owners.
  4. Aprofundar bancos de dados, índices, replicação e processamento assíncrono.
  5. Praticar System Design com estimativas de capacidade e análise de tradeoffs.

Nenhuma dessas etapas depende de ferramenta específica. Elas treinam a capacidade de justificar uma decisão diante de restrições técnicas e de negócio, que é o que se espera de um arquiteto de software.

Quanto tempo leva para se tornar arquiteto de software?

Depende do ponto de partida e da constância. Lendo meia hora por dia, os quatro livros do roteiro levam cerca de um ano, e o aprendizado é contínuo porque cada projeto novo traz restrições diferentes. Se você já tem autonomia para resolver tarefas sozinho, chega mais rápido ao ponto em que as decisões de arquitetura fazem sentido.

Preciso ser desenvolvedor antes de estudar arquitetura de software?

Ajuda bastante, porque arquitetura exige repertório de implementação para avaliar custo e complexidade. Quem nunca escreveu código tende a propor soluções cujo custo de manutenção não consegue medir. Quem já resolve problemas sozinho aproveita melhor os estudos de arquitetura.

DDD tático ou estratégico primeiro?

Estratégico. Ele se aplica em praticamente qualquer empresa e ajuda a decidir onde investir capacidade de engenharia. O tático raramente é usado de forma integral nos projetos, segundo a experiência relatada por quem trabalha na área.

Qual livro de arquitetura de software ler primeiro?

Fundamentals of Software Architecture, de Mark Richards e Neal Ford, é o ponto de partida mais comum. Ele introduz tipos de arquitetura e critérios de escolha antes de entrar em temas distribuídos, e por isso é o único dos quatro que faz sentido como primeira leitura.

Designing Data-Intensive Applications é obrigatório?

Ele é o mais denso do roteiro e cobre bancos de dados, índices, replicação e mensageria. Para quem vai lidar com volume alto de dados, é a leitura que mais amplia o repertório técnico. Para quem trabalha em sistemas menores, ele rende menos no curto prazo, mas continua sendo a melhor referência sobre o assunto.

Vale a pena ler System Design Interview se não vou fazer entrevista?

Vale, porque o formato de estimar requisitos e capacidade antes de escolher tecnologia serve em qualquer projeto. O livro é mais curto que os demais e funciona como exercício prático. Quem nunca passou por uma entrevista desse tipo costuma subestimar quanto as estimativas mudam a decisão.

Arquitetura orientada a eventos é obrigatória?

Não. Você precisa entender quando cada tipo de arquitetura faz sentido, não dominar todas. O repertório serve para comparar alternativas diante de um problema concreto, e a escolha depende do contexto da empresa, não de preferência técnica.

A IA substitui o arquiteto de software?

Ela executa o trabalho de implementação dentro de um desenho definido. Escolher a tecnologia, o padrão e o caminho segue sendo decisão humana, porque envolve contexto de negócio e tradeoffs que precisam ser justificados. Um arquiteto com repertório guia a IA melhor do que um arquiteto sem repertório.

Preciso de pós-graduação para atuar como arquiteto de software?

Não é um requisito formal. O que sustenta a transição é repertório técnico, visão de negócio e prática de decisão, e esses três vêm de estudo consistente e de projetos reais. Uma pós-graduação pode acelerar o caminho e dar contato com quem já atua na função, mas não substitui a prática.

Como transformar o que você já ensina em artigo

A ideia que atravessa este artigo é simples: quem explica um conceito aprende mais do que quem só lê, e foi por isso que a criação de conteúdo entrou nesta conversa sobre arquitetura. Você provavelmente já fez isso em algum vídeo, comentando um tradeoff ou desmontando uma decisão de arquitetura para a sua audiência.

Esse mesmo raciocínio cabe em um texto, e o Skala Blog transforma vídeos do YouTube em artigos prontos para revisão: basta colar a URL, transcrever e gerar a versão escrita. Quem já explicou uma vez só precisa reaproveitar o material.

Assista ao vídeo original