Criando Microsserviços – 2ª Edição

Projetando sistemas com componentes menores e mais especializados

Criando Microsserviços – 2ª Edição
× Criando Microsserviços – 2ª Edição

Criando Microsserviços – 2ª Edição

Compartilhar

Autor: Sam Newman

ISBN impresso: 978-65-86057-88-1
ISBN ebook: 978-65-86057-89-8
Ano: 2022
Páginas: 688
Preço impresso: R$ 159,00 O ebook deste livro está disponível na Amazon.

1 opinião | Opine sobre este livro

Descrição do livro

À medida que as empresas passam de aplicações monolíticas para microsserviços menores e autocontidos, os sistemas distribuídos começam a ter um número maior de componentes. No entanto, o desenvolvimento desses novos sistemas traz consigo o seu próprio conjunto de problemas. Esta segunda edição expandida apresenta uma visão holística dos assuntos que você deve considerar ao criar, gerenciar e escalar arquiteturas de microsserviços.

Por meio de exemplos claros e conselho práticos, o autor Sam Newman oferece a todos – de arquitetos a desenvolvedores ou profissionais da área de teste e operadores de TI – uma base sólida sobre os conceitos. Você explorará as soluções mais recentes para modelagem, integração, testes, implantação e monitoração de seus próprios serviços autônomos. Casos reais revelam como as empresas atualmente conseguem tirar o máximo de proveito dessas arquiteturas.

As tecnologias associadas aos microsserviços continuam mudando rapidamente. Este livro deixará você em dia com as últimas novidades.

• Obtenha novas informações sobre interfaces de usuário, orquestração de contêineres e a tecnologia serverless.

• Alinhe o design de seus sistemas com os objetivos de sua empresa.

• Explore opções para integrar um serviço ao seu sistema.

• Saiba como implantar microsserviços de forma independente.

• Analise as complexidades dos testes e da monitoração de serviços distribuídos.

• Administre a segurança com mais conteúdo a respeito de modelos de usuário para serviço e de serviço para serviço.

Ver menos ▲

Sumário

  • Prefácio
    • Conceitos básicos
  • Capítulo 1 ■ O que são microsserviços?
  • Apresentação rápida dos microsserviços
  • Conceitos essenciais dos microsserviços
    • Implantações independentes
    • Modelagem com base em um domínio de negócios
    • Responsáveis pelo próprio estado
    • Tamanho
    • Flexibilidade
    • Alinhamento entre arquitetura e organização
  • Sistema monolítico
    • Sistema monolítico com um único processo
    • Sistema monolítico modular
    • Sistema monolítico distribuído
    • Sistemas monolíticos e desavença nas entregas
    • Vantagens dos sistemas monolíticos
  • Tecnologias que viabilizam os microsserviços
    • Agregação de logs e tracing distribuído
    • Contêineres e Kubernetes
    • Streaming
    • Nuvem pública e produtos serverless
  • Vantagens dos microsserviços
    • Heterogeneidade de tecnologias
    • Robustez
    • Escalabilidade
    • Facilidade de implantação
    • Alinhamento organizacional
    • Composição
  • Complexidades dos microsserviços
    • Experiência dos desenvolvedores
    • Sobrecarga tecnológica
    • Custos
    • Relatórios
    • Monitoração e resolução de problemas
    • Segurança
    • Testes
    • Latência
    • Consistência dos dados
  • Devo usar microsserviços?
    • A quem os microsserviços talvez não sejam apropriados
    • Quando os microsserviços funcionam bem
  • Resumo
  • Capítulo 2 ■ Como modelar microsserviços
  • Apresentando a MusicCorp
  • O que é uma boa fronteira para um microsserviço?
    • Ocultação de informações
    • Coesão
    • Acoplamento
    • Interação entre acoplamento e coesão
  • Tipos de acoplamento
    • Acoplamento de domínio
    • Acoplamento de passagem
    • Acoplamento de dados em comum
    • Acoplamento de conteúdo
  • Apenas o suficiente sobre design orientado a domínios
    • Linguagem ubíqua
    • Agregado
    • Contexto delimitado
    • Mapeando agregados e contextos delimitados aos microsserviços
    • Event storming
  • Design Orientado a Domínios no caso dos microsserviços
  • Alternativas às fronteiras baseadas em domínios de negócios
    • Volatilidade
    • Dados
    • Tecnologia
    • Estrutura organizacional
  • Combinando modelos e exceções
  • Resumo
  • Capítulo 3 ■ Dividindo o sistema monolítico
  • Tenha um objetivo
  • Migração gradual
  • O sistema monolítico raramente é o inimigo
    • Perigos de uma decomposição prematura
  • O que separar antes?
  • Decomposição por camadas
    • Código antes
    • Dados antes
  • Padrões convenientes para decomposição
    • Padrão strangler fig
    • Execução paralela
    • Flag de funcionalidade
  • Preocupações na decomposição de dados
    • Desempenho
    • Integridade dos dados
    • Transações
    • Ferramentas
    • Banco de dados para relatórios
  • Resumo
  • Capítulo 4 ■ Estilos de comunicação entre microsserviços
  • Da comunicação interna ao processo à comunicação entre processos
    • Desempenho
    • Alterando as interfaces
    • Tratamento de erros
  • Tecnologias para comunicação entre processos: muitas opções
  • Estilos de comunicação entre microsserviços
    • Estilos mistos
  • Padrão: síncrono bloqueante
    • Vantagens
    • Desvantagens
    • Quando usar
  • Padrão: assíncrono não bloqueante
    • Vantagens
    • Desvantagens
    • Quando usar
  • Padrão: comunicação por meio de dados em comum
    • Implementação
    • Vantagens
    • Desvantagens
    • Quando usar
  • Padrão: comunicação por meio de requisição-resposta
    • Implementação: síncrono versus assíncrono
    • Quando usar
  • Padrão: comunicação orientada a eventos
    • Implementação
    • O que há em um evento?
    • Quando usar
  • Prossiga com cautela
  • Resumo
    • Implementação
  • Capítulo 5 ■ Implementando a comunicação entre microsserviços
  • Em busca da tecnologia ideal
    • Facilite a compatibilidade com versões anteriores
    • Deixe sua interface explícita
    • Mantenha suas APIs independentes de tecnologia
    • Deixe seu serviço simples para os consumidores
    • Oculte detalhes de implementação internos
  • Opções de tecnologia
    • Remote procedure calls
    • REST
    • GraphQL
    • Brokers de mensagens
  • Formatos de serialização
    • Formatos textuais
    • Formatos binários
  • Esquemas
    • Incompatibilidades de contrato estruturais versus semânticas
    • Devemos usar esquemas?
  • Lidando com mudanças entre microsserviços
  • Evitando mudanças que causam incompatibilidade
    • Mudanças com expansão
    • Leitor tolerante
    • Tecnologia correta
    • Interface explícita
    • Identifique rapidamente as mudanças que causam incompatibilidades acidentais
  • Gerenciando mudanças que causam incompatibilidade
    • Implantação sincronizada
    • Permitir a coexistência de versões incompatíveis de microsserviços
    • Emular a interface antiga
    • Qual é a minha abordagem preferida?
    • Contrato social
    • Monitorando o uso
    • Medidas extremas
  • DRY e os perigos da reutilização de código em um mundo de microsserviços
    • Compartilhando código por meio de bibliotecas
  • Descoberta de serviços
    • Domain Name System (DNS)
    • Registros dinâmicos de serviços
    • Não se esqueça das pessoas!
  • Service meshes e gateways de API
    • Gateways de API
    • Service meshes
    • E quanto aos outros protocolos?
  • Documentação dos serviços
    • Esquemas explícitos
    • Sistema que se autodescreve
  • Resumo
  • Capítulo 6 ■ Fluxo de trabalho
  • Transações em bancos de dados
    • Transações ACID
    • Ainda ACID, mas sem atomicidade?
  • Transações distribuídas – commit de duas fases
  • Transações distribuídas – simplesmente diga não
  • Sagas
    • Modos de falha das sagas
    • Implementando sagas
    • Sagas versus transações distribuídas
  • Resumo
  • Capítulo 7 ■ Construção
  • Uma rápida introdução à integração contínua
    • Você realmente coloca a CI em prática?
    • Modelos de branching
  • Pipelines de construção e entrega contínua
    • Ferramentas
    • Relação de custo-benefício e ambientes
    • Criação de artefatos
  • Mapeando códigos-fontes e builds aos microsserviços
    • Um repositório gigante, uma build gigante
    • Padrão: um repositório por microsserviço (também conhecido como multirepo)
    • Padrão: monorepo
    • Qual abordagem devo utilizar?
  • Resumo
  • Capítulo 8 ■ Implantação
  • Do lógico ao físico
    • Várias instâncias
    • Banco de dados
    • Ambientes
  • Princípios da implantação de microsserviços
    • Execução isolada
    • Foco na automação
    • Infraestrutura como código
    • Implantação sem downtime
    • Gerenciamento de estado desejado
  • Opções para implantação
    • Máquinas físicas
    • Máquinas virtuais
    • Contêineres
    • Contêineres de aplicações
    • Plataforma como Serviço (PaaS)
    • Função como Serviço (FaaS)
  • Qual é a opção de implantação correta para você?
  • Kubernetes e a orquestração de contêineres
    • Razões para a orquestração de contêineres
    • Uma visão simplificada dos conceitos do Kubernetes
    • Multitenancy e federação
    • Cloud Native Computing Foundation
    • Plataformas e portabilidade
    • Helm, Operator e CRDs, minha nossa!
    • E o Knative
    • Futuro
    • Devo usá-lo?
  • Entrega progressiva
    • Diferenciando implantação de lançamento
    • Em direção a uma entrega progressiva
    • Flags de funcionalidade
    • Lançamento canário
    • Execução paralela
  • Resumo
  • Capítulo 9 ■ Testes
  • Tipos de testes
  • Escopo dos testes
    • Testes de unidade
    • Testes de serviço
    • Testes fim a fim
    • Custo-benefício
  • Implementando testes de serviço
    • Mocks ou stubs
    • Um serviço de stubs mais inteligente
  • Implementando (aqueles complicados) testes fim a fim
    • Testes frágeis e instáveis
    • Quem escreve esses testes fim a fim?
    • Por quanto tempo os testes fim a fim devem ser executados?
    • Acúmulo de alterações
    • Metaversão
    • Incapacidade de testar de forma independente
  • Devemos evitar testes fim a fim?
    • Testes de contrato e CDCs
    • Palavra final
  • Experiência dos desenvolvedores
  • Dos testes em pré-produção aos testes em produção
    • Tipos de testes no ambiente de produção
    • Deixando os testes em produção seguros
    • MTTR em vez de MTBF?
  • Testes multifuncionais
    • Testes de desempenho
    • Testes de robustez
  • Resumo
  • Capítulo 10 ■ Da monitoração à observabilidade
  • Instabilidade, pânico e confusão
  • Um único microsserviço, um único servidor
  • Um único microsserviço, vários servidores
  • Vários serviços, vários servidores
  • Observabilidade versus monitoração
    • Os pilares da observabilidade? Espere um pouco
  • Blocos de construção para a observabilidade
    • Agregação de logs
    • Agregação de métricas
    • Tracing distribuído
    • Estamos indo bem?
    • Alertas
    • Monitoração semântica
    • Testes no ambiente de produção
  • Padronização
  • Seleção de ferramentas
    • Democráticos
    • Fáceis de integrar
    • Fornecem contexto
    • Tempo real
    • Apropriados para a sua escala
  • Inteligência na máquina
  • Por onde começar
  • Resumo
  • Capítulo 11 ■ Segurança
  • Princípios básicos
    • Princípio do privilégio mínimo
    • Defesa em profundidade
    • Automação
    • Incluindo a segurança no processo de entregas
  • As cinco funções da cibersegurança
    • Identificar
    • Proteger
    • Detectar
    • Responder
    • Recuperar-se
  • Fundamentos da segurança de aplicações
    • Credenciais
    • Patching
    • Backups
    • Reconstrução
  • Confiança implícita versus confiança zero
    • Confiança implícita
    • Confiança zero
    • É um espectro
  • Protegendo os dados
    • Dados em trânsito
    • Dados em repouso
  • Autenticação e autorização
    • Autenticação de serviço a serviço
    • Autenticação de pessoas
    • Implementações comuns de SSO
    • Gateway de SSO
    • Autorizações mais específicas
    • Problema do confused deputy
    • Autorização upstream centralizada
    • Descentralizando a autorização
    • JSON Web Tokens
  • Resumo
  • Capítulo 12 ■ Resiliência
  • O que é resiliência?
    • Robustez
    • Recuperação
    • Extensibilidade com elegância
    • Adaptabilidade sustentável
    • E a arquitetura de microsserviços
  • As falhas estão em todos os lugares
  • Quando é demais?
  • Degradação das funcionalidades
  • Padrões de estabilidade
    • Timeouts
    • Novas tentativas
    • Bulkheads
    • Circuit breakers
    • Isolamento
    • Redundância
    • Middleware
    • Idempotência
  • Diluindo o seu risco
  • Teorema CAP
    • Sacrificando a consistência
    • Sacrificando a disponibilidade
    • Sacrificando a tolerância à partição?
    • AP ou CP?
    • Não é uma questão de tudo ou nada
    • E o mundo real
  • Engenharia de caos
    • Game Days
    • Experimentos no ambiente de produção
    • Partindo da robustez e indo além
  • Acusações
  • Resumo
  • Capítulo 13 ■ Escalabilidade
  • Quatro eixos da escalabilidade
    • Escalabilidade vertical
    • Duplicação horizontal
    • Partição de dados
    • Decomposição funcional
  • Combinando modelos
  • Comece em pequena escala
  • Caching
    • Para desempenho
    • Para escalabilidade
    • Para robustez
    • Onde usar um cache
    • Invalidação
    • Regra de ouro do caching
    • Dados atualizados versus otimização
    • Envenenamento de cache: uma lição
  • Escalabilidade automática
  • Começando de novo
  • Resumo
    • Pessoas
  • Capítulo 14 ■ Interfaces de usuário
  • Em direção ao digital
  • Modelos de responsabilidade
    • Razões para haver equipes dedicadas de frontend
  • Em direção a equipes alinhadas a fluxos
    • Compartilhando especialistas
    • Garantindo a consistência
    • Resolvendo os desafios técnicos
  • Padrão: frontend monolítico
    • Quando usar
  • Padrão: microfrontends
    • Implementação
    • Quando usar
  • Padrão: decomposição baseada em páginas
    • Quando usar
  • Padrão: decomposição baseada em widgets
    • Implementação
    • Quando usar
  • Limitações
  • Padrão: gateway de agregação central
    • Responsabilidade
    • Diferentes tipos de interfaces de usuário
    • Preocupações variadas
    • Quando usar
  • Padrão: backend para frontend (BFF)
    • Quantos BFFs?
    • Reutilização de código e BFFs
    • BFFs para web desktop e além
    • Quando usar
  • GraphQL
  • Uma abordagem híbrida
  • Resumo
  • Capítulo 15 ■ Estruturas organizacionais
  • Empresas com baixo acoplamento
  • Lei de Conway
    • Evidências
  • Tamanho das equipes
  • Entendendo a lei de Conway
  • Equipes pequenas, empresa grande
  • Sobre a autonomia
  • Responsabilidade forte versus coletiva
    • Responsabilidade forte
    • Responsabilidade coletiva
    • No nível de uma equipe versus no nível organizacional
    • Achando um equilíbrio entre os modelos
  • Equipes de capacitação
    • Comunidades de prática
    • A plataforma
  • Microsserviços compartilhados
    • Difícil demais para separar
    • Alterações abrangentes
    • Gargalos na entrega
  • Open source interno
    • Papel dos core committers
    • Maturidade
    • Ferramentas
  • Microsserviços modulares e plugáveis
    • Revisões de alterações
  • Serviço órfão
  • Estudo de caso: realestate com au
  • Distribuição geográfica
  • Lei de Conway ao inverso
  • Pessoas
  • Resumo
  • Capítulo 16 ■ O arquiteto em evolução
  • O que há em um nome?
  • O que é arquitetura de software?
  • Tornando as mudanças possíveis
  • Uma visão evolucionária para o arquiteto
  • Definindo as fronteiras do sistema
  • Uma construção social
  • Habitabilidade
  • Uma abordagem com princípios
    • Objetivos estratégicos
    • Princípios
    • Práticas
    • Combinado princípios e práticas
    • Um exemplo do mundo real
  • Direcionando uma arquitetura em evolução
  • Arquitetura em uma empresa alinhada a fluxos
  • Construindo uma equipe
  • Padrão necessário
    • Monitoração
    • Interfaces
    • Segurança na arquitetura
  • Governança e a estrada pavimentada
    • Exemplares
    • Template personalizado para os microsserviços
    • Estrada pavimentada em escala
  • Débito técnico
  • Tratamento de exceções
  • Resumo
  • Posfácio: reunindo tudo
  • Bibliografia
  • Glossário
  • Índice remissivo
Ver sumário completo ▼

Sobre o autor

Sam Newman

Depois de ter trabalhado em várias startups e durante doze anos na ThoughtWorks, Sam Newman atualmente atua como consultor independente. Especialista em microsserviços, nuvem e entrega contínua, Sam ajuda os clientes no mundo todo a entregar softwares de modo mais rápido e confiável por meio de treinamento e consultoria. É um palestrante experiente,… Ver perfil completo ▶

Opinião dos leitores

Jose R A

Excelente livro

Ver todas ▼