Fundamentos da Arquitetura de Software – 2ª Edição
Uma Abordagem Moderna de Engenharia
Descrição do livro
Desenvolvedores que desejam ir além da codificação para avançar em suas carreiras almejam se tornar arquitetos de software, mas não existia nenhum guia para ajudá-los a fazer isso até agora. Esta edição atualizada fornece uma visão geral abrangente dos diversos aspectos da arquitetura de software, com vários capítulos totalmente novos abordando os insights mais recentes da área. Quem já é arquiteto e quem ainda será conhecerão as características da arquitetura, padrões de arquitetura, a determinação de componentes, a diagramação de arquitetura, a governança, dados, a IA generativa, topologias de equipe e muitos outros tópicos.
Mark Richards e Neal Ford — profissionais experientes que há anos ministram aulas de arquitetura de software — se concentram em princípios de arquitetura que se aplicam a todas as pilhas de tecnologia. Você explorará a arquitetura de software sob uma ótica moderna, levando em conta todas as inovações da última década.
Este livro aborda:
• Estilos e padrões de arquitetura: microsserviços, monólitos modulares, microkernels, arquiteturas em camadas e muito mais.
• Componentes: identificação, acoplamento, coesão, particionamento e granularidade.
• Habilidades sociais: gerenciamento eficaz da equipe, colaboração, modelos de engajamento de negócios, negociação, apresentações etc.
• Práticas modernas de engenharia: métodos e abordagens operacionais que mudaram radicalmente nos últimos anos, incluindo considerações de nuvem e IA generativa.
• Arquitetura como disciplina de engenharia: resultados repetíveis, métricas e avaliações concretas que adicionam rigor à arquitetura de software.
“Um recurso indispensável para a exploração da arquitetura de software moderna considerada por um ponto de vista contemporâneo. Seja você um arquiteto acidental assumindo a função ou um veterano experiente buscando refinar suas habilidades, este livro oferecerá as ferramentas e o conhecimento necessários para que se destaque em seu trabalho” – Raju Gandhi, autor de Head First Git e coautor de Head First Software Architecture
Ver menos ▲Sumário
- Prefácio
- Capítulo 1: Introdução
- Definindo a arquitetura de software
- Leis da arquitetura de software
- O que se espera de um arquiteto
- Tomar decisões de arquitetura
- Analisar continuamente a arquitetura
- Manter-se atualizado com as últimas tendências
- Assegurar a conformidade com as decisões
- Conhecer várias tecnologias
- Conhecer o domínio dos negócios
- Ter habilidades interpessoais
- Conhecer e lidar com a política organizacional
- Roteiro
- Parte I: Fundamentos
- Capítulo 2: Pensamento arquitetural
- Arquitetura versus design
- Decisões estratégicas versus táticas
- Nível de esforço
- Relevância dos trade-offs
- Amplitude técnica
- A regra dos 20 minutos
- Desenvolvendo um radar pessoal
- Analisando trade-offs
- Entendendo os impulsionadores do negócio
- Encontrando equilíbrio entre arquitetura e codificação prática
- O pensamento arquitetural não é só isso
- Capítulo 3: Modularidade
- Modularidade versus granularidade
- Definindo modularidade
- Medindo a modularidade
- Coesão
- Acoplamento
- Métricas básicas
- Distância da sequência principal
- Conascência
- Dos módulos aos componentes
- Capítulo 4: Definição das características arquiteturais
- Características arquiteturais e design do sistema
- Características arquiteturais (parcialmente) listadas
- Características arquiteturais operacionais
- Características arquiteturais estruturais
- Características de nuvem
- Características arquiteturais transversais
- Trade-offs e a arquitetura menos pior
- Capítulo 5: Identificando características arquiteturais
- Extraindo características arquiteturais de preocupações de domínio
- Características arquiteturais compostas
- Extraindo características arquiteturais
- Trabalhando com katas
- Kata: Silicon Sandwiches
- Características explícitas
- Características implícitas
- Limitando e priorizando características arquiteturais
- Capítulo 6: Medindo e controlando as características arquiteturais
- Medindo as características arquiteturais
- Medições operacionais
- Medições estruturais
- Medições de processo
- Governança e funções de aptidão
- Governança das características arquiteturais
- Funções de aptidão
- Capítulo 7: Escopo das características arquiteturais
- Quanta arquitetural e granularidade
- Comunicação síncrona
- Impacto do escopo
- Escopo e estilo arquitetural
- Kata: Going Green
- Escopo e a nuvem
- Capítulo 8: Pensamento baseado em componentes
- Definindo componentes lógicos
- Arquitetura lógica versus física
- Criando uma arquitetura lógica
- Identificando componentes básicos
- Atribuindo histórias de usuário aos componentes
- Analisando papéis e responsabilidades
- Analisando características arquiteturais
- Reestruturando componentes
- Acoplamento de componentes
- Acoplamento estático
- Acoplamento temporal
- Lei de Demeter
- Estudo de caso: Going, Going, Gone — descobrindo componentes
- Parte II: Estilos de arquitetura
- Capítulo 9: Fundamentos
- Estilos versus padrões
- Padrões básicos
- Grande Bola de Lama
- Arquitetura unitária
- Cliente/servidor
- Particionamento da arquitetura
- Kata: Silicon Sandwiches — Particionamento
- Arquiteturas monolíticas versus distribuídas
- Falácia #1: A rede é confiável
- Falácia #2: A latência é zero
- Falácia #3: A largura de banda é infinita
- Falácia #4: A rede é segura
- Falácia #5: A topologia nunca muda
- Falácia #6: Existe apenas um administrador
- Falácia #7: O custo do transporte é zero
- Falácia #8: A rede é homogênea
- As outras falácias
- Topologias de equipe e arquitetura
- Agora passaremos para estilos específicos
- Capítulo 10: Estilo arquitetural em camadas
- Topologia
- Particularidades do estilo
- Camadas de isolamento
- Adicionando camadas
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Governança
- Considerações da topologia de equipe
- Características do estilo
- Quando usar
- Quando não usar
- Exemplos e casos de uso
- Capítulo 11: Estilo arquitetural de monólito modular
- Topologia
- Particularidades do estilo
- Estrutura monolítica
- Estrutura modular
- Comunicação entre módulos
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Governança
- Considerações de topologia de equipe
- Características do estilo
- Quando usar
- Quando não usar
- Exemplos e casos de uso
- Capítulo 12: Estilo arquitetural de pipeline
- Topologia
- Particularidades do estilo
- Filtros
- Pipes
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Governança
- Considerações de topologia de equipe
- Características do estilo
- Quando usar
- Quando não usar
- Exemplos e casos de uso
- Capítulo 13: Estilo arquitetural de microkernel
- Topologia
- Particularidades do estilo
- Sistema central
- Componentes de plug-in
- O espectro da “microkernalidade”
- Registro
- Contratos
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Sistema central volátil
- Dependências entre plug-ins
- Governança
- Considerações de topologia de equipe
- Classificações das características arquiteturais
- Exemplos e casos de uso
- Capítulo 14: Estilo arquitetural baseado em serviço
- Topologia
- Particularidades do estilo
- Design e granularidade do serviço
- Opções de interface de usuário
- Opções de gateway de API
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Governança
- Considerações de topologia de equipe
- Características do estilo
- Exemplos e casos de uso
- Capítulo 15: Estilo arquitetural orientado a eventos
- Topologia
- Particularidades do estilo
- Eventos versus mensagens
- Eventos derivados
- Acionando eventos extensíveis
- Capacidades assíncronas
- Capacidades de transmissão
- Payload de evento
- O antipadrão Enxame de Mosquitos
- Manipulação de erros
- Impedindo a perda de dados
- Processamento de requisição-resposta
- Arquitetura orientada a eventos mediada
- Topologias de dados
- Topologia de banco de dados monolítico
- Topologia de banco de dados de domínio
- Topologia de dados dedicada
- Considerações de nuvem
- Riscos comuns
- Governança
- Considerações de topologia de equipe
- Características do estilo
- Escolhendo entre modelos baseados em requisição e baseados em eventos
- Exemplos e casos de uso
- Capítulo 16: Estilo arquitetural baseado em espaço
- Topologia
- Particularidades do estilo
- Unidade de processamento
- Middleware virtualizado
- Grade de mensagens
- Grade de dados
- Grade de processamento
- Gerenciador de implantação
- Data Pumps
- Gravadores de dados
- Leitores de dados
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Leituras frequentes no banco de dados
- Sincronização e consistência dos dados
- Altos volumes de dados
- Colisões de dados
- Governança
- Considerações de topologia de equipe
- Características do estilo
- Exemplos e casos de uso
- Sistema de ingressos para shows
- Sistema de leilão online
- Capítulo 17: Arquitetura orientada a serviços baseada em orquestração
- Topologia
- Particularidades do estilo
- Taxonomia
- Reutilização… e acoplamento
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Governança
- Considerações de topologia de equipe
- Características do estilo
- Exemplos e casos de uso
- Capítulo 18: Arquitetura de microsserviços
- Topologia
- Particularidades do estilo
- Contexto delimitado
- Granularidade
- Isolamento dos dados
- Camada de API
- Reutilização operacional
- Front-ends
- Comunicação
- Coreografia e orquestração
- Transações e sagas
- Topologias de dados
- Considerações de nuvem
- Riscos comuns
- Governança
- Considerações de topologia de equipe
- Características do estilo
- Exemplos e casos de uso
- Capítulo 19: Selecionando o estilo arquitetural apropriado
- Mudança de “modismo” na arquitetura
- Critérios de decisão
- Estudo de caso de monólito: Silicon Sandwiches
- Monólito modular
- Microkernel
- Estudo de caso distribuído: Going, Going, Gone
- Capítulo 20: Padrões arquiteturais
- Reutilização
- Separando o acoplamento de domínio e o acoplamento operacional
- Comunicação
- Orquestração versus coreografia
- CQRS
- Infraestrutura
- Padrão Broker-Domain
- Parte III: Técnicas e habilidades sociais
- Capítulo 21: Decisões arquiteturais
- Antipadrões de decisões arquiteturais
- Antipadrão Covering Your Assets
- Antipadrão Groundhog Day
- Antipadrão Email-Driven Architecture
- Relevância arquitetural
- Registros de Decisões Arquiteturais
- Estrutura básica
- Exemplo
- Armazenando ADRs
- ADRs como documentação
- Usando ADRs para padrões
- Usando ADRs com sistemas existentes
- Usando IA generativa e LLMs em decisões arquiteturais
- Capítulo 22: Analisando o risco arquitetural
- Matriz de riscos
- Avaliações de riscos
- Risk Storming
- Fase 1: Identificação
- Fase 2: Consenso
- Fase 3: Mitigação de risco
- Análise de riscos de histórias de usuário
- Caso de uso de risk storming
- Disponibilidade
- Elasticidade
- Segurança
- Resumo
- Capítulo 23: Diagramando a arquitetura
- Diagramação
- Ferramentas
- Padrões de diagramação: UML, C4 e ArchiMate
- Diretrizes do diagrama
- Resumo
- Capítulo 24: Tornando as equipes eficazes
- Colaboração
- Restrições e limites
- Personalidades dos arquitetos
- O arquiteto controlador
- O arquiteto de poltrona
- O arquiteto eficaz
- O quanto se envolver?
- Sinais de alerta da equipe
- Perda no processo
- Ignorância pluralística
- Usando listas de verificação
- Lista de verificação de conclusão de código de desenvolvedor
- Listas de verificação de testes de unidade e funcionais
- Lista de verificação de lançamentos de software
- Fornecendo orientação
- Resumo
- Capítulo 25: Habilidades de negociação e liderança
- Negociação e facilitação
- Negociando com os stakeholders do negócio
- Negociando com outros arquitetos
- Negociando com desenvolvedores
- O arquiteto de software como líder
- Os 4 Cs da arquitetura
- Seja pragmático, e mesmo assim visionário
- Liderando equipes pelo exemplo
- Integrando-se com a equipe de desenvolvimento
- Resumo
- Capítulo 26: Interseções arquiteturais
- Arquitetura e implementação
- Preocupações operacionais
- Integridade estrutural
- Restrições arquiteturais
- Arquitetura e infraestrutura
- Arquitetura e topologias de dados
- Topologia de banco de dados
- Características arquiteturais
- Estrutura de dados
- Prioridade de leitura/gravação
- Arquitetura e práticas de engenharia
- Arquitetura e topologias de equipe
- Arquitetura e integração de sistemas
- Arquitetura e a empresa
- Arquitetura e o ambiente de negócios
- Arquitetura e IA generativa
- Incorporando IA generativa à arquitetura
- IA generativa como assistente do arquiteto
- Resumo
- Capítulo 27: As leis da arquitetura de software revisitadas
- Primeira lei: tudo na arquitetura de software é um trade-off
- Biblioteca compartilhada versus serviço compartilhado
- Mensagens síncronas versus assíncronas
- Primeiro corolário: ausência de trade-offs
- Segundo corolário: você não pode fazer apenas uma vez
- Segunda lei: por que é mais importante do que como
- Antipadrão Fora de Contexto
- O espectro entre os extremos
- Conselhos finais
- Apêndice: Perguntas para discussão
- Índice remissivo
Sobre os autores
Mark Richards é um arquiteto de software experiente e prático envolvido na arquitetura, design e implementação de microsserviços e outros sistemas distribuídos. É autor de vários livros técnicos e vídeos da O’Reilly.… Ver perfil completo ▶
Neal Ford é diretor, arquiteto de software e meme wrangler na Thoughtworks, além de um especialista reconhecido internacionalmente em desenvolvimento e entrega de software. É autor de oito livros (por enquanto), de vários artigos em revistas e muitas apresentações em vídeo.… Ver perfil completo ▶






