Sistemas reativos Não confundir com sistemas radioativos
Guilherme Virgs MoraesConteúdo
Com cada vez mais conexões, mais dados e usuários mais exigentes, manter a responsividade de um sistema de microsserviços tem se tornado uma tarefa dolorosa. Por sorte, isso não precisa ser assim. É para amenizar essa dor que existem os sistemas reativos. Sistemas criados como reativos são muito mais flexíveis, desacoplados e escaláveis, o que os torna mais fáceis para desenvolver e mais abertos a mudanças.
Neste livro, Guilherme Moraes aborda a aplicação da perspectiva reativa no desenvolvimento para garantir que seus sistemas sejam mais resilientes, elásticos e responsivos. Você passará por conceitos complexos da Arquitetura de Software e sistemas distribuídos, mas em uma aprendizagem envolvente com doses cavalares de humor e descontração, estabelecendo relações práticas com muito do que você já faz em seu dia a dia. E, meio sem perceber, você ampliará sua perspectiva sobre software e nunca mais reagirá da mesma maneira ao escutar a seguinte pergunta: "A gente já chegou?".
Sumário
Parte 1: A qualidade e o propósito
- 1 O bom e o ruim
- 1.1 O propósito do código
- 1.2 O código bom
- 1.3 Como ler o livro
Parte 2: Mais uma vez microsserviços...
- 2 Afinal, o que são microsserviços?
- 2.1 Definição de microsserviços
- 2.2 Justificativa
- 2.3 Conclusão
- 3 Características dos microsserviços
- 3.1 Autonomia, autonomia, autonomia e compensação
- 3.2 Conclusão
- 4 Microsserviços e a Orientação a Objetos
- 4.1 Princípios de OO nos microsserviços
- 4.2 Princípios SOLID nos microsserviços
- 4.3 Conclusão
Parte 3: Sistemas reativos
- 5 Um discurso de ódio à proatividade
- 5.1 Diga, não peça
- 5.2 Conclusão
- 6 A Reatividade diz "olar"
- 6.1 Propriedades reativas
- 6.2 Conclusão
- 7 Dificuldades da reatividade
- 7.1 Distribuição de dados
- 7.2 Desempenho reativo
- 7.3 Conversão à reatividade
- 7.4 Conclusão
- 8 Orientação a Objeto Orientada a Mensagens Reativas
- 8.1 Regras da OOOMR
- 8.2 Serviços | Objetos
- 8.3 E não é que funciona?
- 8.4 Resultado do experimento
- 8.5 Conclusão
Parte 4: Orientação a Mensagens
- 9 Mensagens distribuídas
- 9.1 Conceito
- 9.2 Decomposição de mensagens
- 9.3 CQRS
- 9.4 Orientação a Mensagens vs Orientação a Eventos
- 9.5 Conclusão
- 10 Controle de vazão
- 10.1 Processamento em lote
- 10.2 Contrapressão
- 10.3 Conclusão
- 11 Mensagens poliglotas
- 11.1 Protocolos de comunicação
- 11.2 Fluxos poliglotas
- 11.3 Conclusão
- 12 Por que (de novo) REST/http?
- 12.1 Dando número aos bois
- 12.2 Por que http?
- 12.3 Por que não http?
- 12.4 Conclusão
- 13 Distribuição elástica
- 13.1 Química dos dados
- 13.2 Transações ACID
- 13.3 Transações BASE
- 13.4 Balanceamento ACID-BASE
- 13.5 Conclusão
- 14 Jogo de dados
- 14.1 Disputa de dados
- 14.2 Transações frustradas
- 14.3 Teorema CAP
- 14.4 Escalabilidade
- 14.5 Escalabilidade dinâmica
- 14.6 Técnicas de escalabilidade
- 14.7 Conclusão
- 15 Inconsistência distribuída
- 15.1 Erros de fluxos concorrentes
- 15.2 Princípio do Escritor Único
- 15.3 Lá e de volta outra vez: ACID 2.0
- 15.4 Conclusão
- 16 O inferno da consistência
- 16.1 O que é consistência
- 16.2 Consistência no mundo distribuído
- 16.3 Modelos de consistência
- 16.4 Conclusão
- 17 Fluxos resilientes
- 17.1 Disponibilidade
- 17.2 Defeitos, erros e falhas
- 17.3 Padrões de resiliência
- 17.4 A resiliência corrói a robustez
- 17.5 Conclusão
- 18 Transações distribuídas
- 18.1 Uma jornada inesperada
- 18.2 Confirmação de duas fases (2PC)
- 18.3 SAGA
- 18.4 Conclusão
- 19 Coordenação de fluxos
- 19.1 Orquestração
- 19.2 Coreografia
- 19.3 Orquestração vs. coreografia
- 19.4 Abordagem híbrida
- 19.5 Conclusão
- 20 Observabilidade de sistemas
- 20.1 Observabilidade
- 20.2 Alertas
- 20.3 Pilares da observabilidade
- 20.4 Conclusão
- 21 O negócio e a responsividade
- 21.1 Capacidade de resposta
- 21.2 Usuário vs. desenvolvedor
- 21.3 O propósito do sistema
- 21.4 Conclusão
- 22 Fim
- 23 Bibliografia
Parte 5: Elasticidade
Parte 6: Resiliência
Parte 7: Responsividade
Parte 8: Considerações finais
Autor
Guilherme Virgs Moraes
Nascido e criado em Fortaleza (CE) e também conhecido como a cintura mais solta do oeste, comecei a tentar programar com apenas 13 anos e hoje, orgulhosamente, digo que ainda estou na peleja. Quase 20 anos depois, virei bacharel em Ciências da Computação com ênfase em Engenharia de Software, especialista em Engenharia de Software Ágil e 32% mestre em Computação Aplicada que, pelo andar da carruagem, só devo concluir por volta de 2045. Tive também a oportunidade de trabalhar em empresas das quais me orgulho muito, como ThoughtWorks, iFood e Amazon Web Services (AWS) - Canadá e nas mais diversas áreas, como desenvolvimento web, internet das coisas, sistemas embarcados e até desenvolvimento de jogos. Dedico muito do meu tempo ao desenvolvimento de uma infinidade de projetos pessoais que podem ser conferidos em pagehub.me/virgs e github.com/virgs.
Dados do produto
- Número de páginas:
- 322
- ISBN:
- 978-65-86110-82-1
- Data publicação:
- 09/2021