Migrando Sistemas Monolíticos para Microsserviços
Padrões evolutivos para transformar seu sistema monolítico
Descrição do livro
Como decompor um sistema monolítico e migrar para uma arquitetura de microsserviços? Como fazer isso enquanto mantém os negócios funcionando como sempre? Como parceiro do livro extremamente popular de Sam Newman, Building Microservices, este novo livro detalha um método comprovado para a transição de um sistema monolítico existente para uma arquitetura de microsserviços.
Com vários exemplos ilustrativos, padrões de migração inteligentes e vários conselhos práticos para fazer a transição de seu sistema monolítico para uma plataforma de microsserviços, este guia prático descreve diversos cenários e estratégias para uma migração bem-sucedida, partindo do planejamento inicial e passando por todo o caminho até a decomposição da aplicação e do banco de dados. Você conhecerá diversos padrões e técnicas testados e comprovados, que poderão ser usados quando você fizer a migração de sua arquitetura atual.
Ver menos ▲Sumário
- Prefácio
- Capítulo 1 ■ Apenas o suficiente sobre os microsserviços
- O que são microsserviços?
- Implantações independentes
- Modelagem em torno de um domínio de negócio
- Seja responsável pelos seus próprios dados
- Quais as vantagens que os microsserviços podem trazer?
- Quais os problemas criados pelos microsserviços?
- Interfaces de usuário
- Tecnologia
- Tamanho
- Responsabilidade
- Arquitetura monolítica
- Sistema monolítico de um só processo
- Sistema monolítico distribuído
- Sistemas caixa-preta de terceiros
- Desafios dos sistemas monolíticos
- Vantagens dos sistemas monolíticos
- Sobre o acoplamento e a coesão
- Coesão
- Acoplamento
- Apenas o suficiente sobre design orientado a domínios
- Agregado
- Contexto delimitado
- Mapeando agregados e contextos delimitados aos microsserviços
- Leituras complementares
- Resumo
- O que são microsserviços?
- Capítulo 2 ■ Planejando uma migração
- Compreendendo o objetivo
- Três perguntas básicas
- Por que você optaria pelos microsserviços?
- Aumentar a autonomia das equipes
- Reduzir o tempo para chegar ao mercado
- Escalar para lidar com a carga, com um custo viável
- Aumentar a robustez
- Escalar o número de desenvolvedores
- Incorporar novas tecnologias
- Quando os microsserviços não seriam uma boa ideia?
- Domínio nebuloso
- Startups
- Software instalado e administrado pelos clientes
- Não ter um bom motivo!
- Custo-benefício
- Incluindo pessoas na jornada
- Mudanças organizacionais
- Estabelecimento de um senso de urgência
- Criação da coalizão para direcionar a mudança
- Desenvolvimento de uma visão e de uma estratégia
- Comunicação da visão sobre as mudanças
- Empoderamento dos funcionários para ações mais amplas
- Conquista de vitórias rápidas
- Consolidação dos ganhos e promoção de novas mudanças
- Inclusão das novas abordagens na cultura
- Importância da migração gradual
- É o ambiente de produção que conta
- Custo da mudança
- Decisões reversíveis e irreversíveis
- Pontos mais apropriados para um experimento
- Então, por onde devemos começar?
- Design orientado a domínios
- Até que ponto devemos ir?
- Event Storming
- Usando um modelo de domínios para atribuição de prioridades
- Um modelo combinado
- Reorganizando as equipes
- Modificando as estruturas
- Não há uma solução única para todos
- Fazendo uma mudança
- Outras habilidades
- Como você saberá que a transição está funcionando?
- Ter pontos de verificação regulares
- Critérios de avaliação quantitativos
- Critérios de avaliação qualitativos
- Evitando a falácia do custo irrecuperável
- Esteja aberto a novas abordagens
- Resumo
- Compreendendo o objetivo
- Capítulo 3 ■ Dividindo o sistema monolítico
- Mudar ou não mudar o sistema monolítico?
- Cortar, copiar ou reimplementar?
- Refatorando o sistema monolítico
- Padrões de migração
- Padrão: aplicação strangler fig
- Como o padrão funciona
- Quando usar o padrão
- Exemplo: proxy HTTP reverso
- Dados?
- Opções de proxy
- Mudança de protocolos
- Exemplo: FTP
- Exemplo: interceptação de mensagens
- Outros protocolos
- Outros exemplos do padrão strangler fig
- Mudança de comportamentos concomitantes à migração de funcionalidades
- Padrão: composição de UI
- Exemplo: composição de páginas
- Exemplo: composição de widgets
- Exemplo: Micro Frontends
- Quando usar o padrão
- Padrão: branch por abstração
- Como o padrão funciona
- Como método de fallback
- Quando usar o padrão
- Padrão: execução em paralelo
- Exemplo: comparando os cálculos de preços de derivativos de crédito
- Exemplo: geração de listas na Homegate
- Técnicas de verificação
- Usando Spies
- Scientist do GitHub
- Lançamento no escuro e versão canário
- Quando usar o padrão
- Padrão: colaborador decorador
- Exemplo: programa de fidelidade
- Quando usar o padrão
- Padrão: captura de dados modificados
- Exemplo: gerando cartões de fidelidade
- Implementando a captura de dados modificados
- Quando usar o padrão
- Resumo
- Mudar ou não mudar o sistema monolítico?
- Capítulo 4 ■ Decompondo o banco de dados
- Padrão: banco de dados compartilhado
- Padrões para lidar com o problema
- Quando usar o padrão
- Mas isso não é possível!
- Padrão: visão de banco de dados
- Banco de dados como um contrato público
- Visões a serem apresentadas
- Limitações
- Responsabilidade
- Quando usar o padrão
- Padrão: serviço de encapsulamento de banco de dados
- Quando usar o padrão
- Padrão: interface de banco de dados como serviço
- Implementando uma engine de mapeamento
- Comparação com as visões
- Quando usar o padrão
- Transferência de responsabilidades
- Padrão: sistema monolítico expondo agregados
- Padrão: mudança do responsável pelos dados
- Sincronização de dados
- Padrão: sincronização de dados na aplicação
- Passo 1: Sincronizar grandes volumes de dados
- Passo 2: Sincronizar na escrita, ler do esquema antigo
- Passo 3: Sincronizar na escrita, ler do novo esquema
- Quando usar esse padrão
- Padrão: tracer write
- Sincronização de dados
- Exemplo: pedidos na Square
- Quando usar o padrão
- Separando o banco de dados
- Separação física versus separação lógica de um banco de dados
- Separar o banco de dados ou o código antes?
- Separar o banco de dados antes
- Separar o código antes
- Separar o banco de dados e o código ao mesmo tempo
- Então, o que devo separar antes?
- Exemplos de separação de esquemas
- Padrão: separação de tabelas
- Quando usar o padrão
- Padrão: transferência de relacionamentos de chave estrangeira para o código
- Transferindo a junção
- Consistência dos dados
- Quando usar o padrão
- Exemplo: dados estáticos compartilhados
- Transações
- Transações ACID
- Continuar sendo ACID, mas sem atomicidade?
- Commits de duas fases
- Transações distribuídas – basta dizer não
- Sagas
- Modos de falha das sagas
- Implementando as sagas
- Sagas versus transações distribuídas
- Resumo
- Padrão: banco de dados compartilhado
- Capítulo 5 ■ Dificuldades crescentes
- Mais serviços, mais dificuldades
- Responsabilidade em escala
- Como esse problema pode se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Mudanças que causam incompatibilidade
- Como esse problema pode se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Relatórios
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Monitoração e resolução de problemas
- Quando esses problemas poderão ocorrer?
- Como esses problemas poderão ocorrer?
- Possíveis soluções
- Experiência do desenvolvedor local
- Como esse problema pode se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Administração de muitas tarefas
- Como esse problema poderia se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Testes fim a fim
- Como esse problema pode se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Otimização global versus local
- Como esse problema pode se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Robustez e resiliência
- Como esse problema pode se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Serviços órfãos
- Como esse problema pode se manifestar?
- Quando esse problema poderia ocorrer?
- Possíveis soluções
- Resumo
- Capítulo 6 ■ Palavras finais
- Apêndice A ■ Bibliografia
- Apêndice B ■ Índice de padrões
Sobre o autor
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 ▶
Livros relacionados
Recursos
Opinião dos leitores
Edson S de A
O livro oferece uma ótima referencia para migração de sistemas. As estratégias de "estrangulamento" são discutidas em uma disciplina de programação para Web no curso de Análise e Desenvolvimento de Sistemas






