Sistemas reativos Não confundir com sistemas radioativos
Guilherme Virgs Moraes
Sobre o livro
Com cada vez mais conexões, mais dados e usuários mais ranzinzas – agradeça à geração dos millennials –, manter a responsividade de um sistema de microsserviços se tornou uma tarefa dolorosa, exatamente no meio do caminho entre a depressão e o desespero. Por sorte, isso não precisa ser assim. É para amenizar essa dor que existem os sistemas reativos.
Por meio da elasticidade e resiliência, os sistemas reativos promovem a responsividade e tentam satisfazer os anseios de usuários cada vez mais exigentes - o que deve ser o objetivo de qualquer empresa que deseja competir no mercado atual.
De maneira não usual e com doses cavalares de um humor duvidoso, este livro apresenta conceitos como consistência, disponibilidade e observabilidade para amantes da computação, especialmente para aqueles que são, como eu, apaixonados pela arquitetura de microsserviços. O conteúdo apresentado, a escassez de linhas de código e parágrafos práticos fazem com que o livro seja mais bem apreciado por quem já possui um conhecimento mínimo prévio sobre arquitetura de microsserviços, o que o torna não recomendado para completos iniciantes.
Aquilo que você provavelmente já sabe e aplica no seu dia a dia passará a ser aplicado também nos sistemas que desenvolve: a cômoda perspectiva reativa. A aplicação dessa perspectiva garantirá que, após a leitura, seus sistemas sejam mais responsivos e, principalmente, que você nunca mais reaja da mesma maneira ao escutar a seguinte pergunta: "A gente já chegou?".
Prefácio por Alexandre Aquiles
Este é um livro peculiar.
Não apenas por abordar conceitos profundos de assuntos complexos como Arquitetura de Software e Sistemas Distribuídos. Também não somente pela abundância de imagens (e de citações). Ou pelas linhas de código que, apesar de poucas, vão alterar sua percepção sobre programação. Nem por definir uma lei e fundar um novo paradigma!
A principal singularidade deste livro é o humor. Já leu um livro técnico em que você gargalhou? Não estou falando de uma risadinha não, mas de rachar de rir mesmo! Qual livro técnico cita Simone, Shrek, Matrix, Xuxa, Chaves, um ex-BBB e até a famigerada final do Paulistão de 1999?
E, meio sem perceber, você ampliará sua perspectiva sobre software e conhecerá o Quarteto Fantástico da Reatividade!
A pergunta que fica é: já chegamos lá?
Alexandre Aquiles, Tech Lead no Grupo Alura
Prefácio por Biharck Araújo
Para algumas pessoas, leituras técnicas são como um momento de conforto e relaxamento. Mesmo que a leitura entre em detalhes sobre sistemas reativos, ela pode ser ainda mais prazerosa quando conectada a uma linguagem leve, corriqueira e divertida.
Guilherme Moraes (Virgs) desenvolveu todo um storytelling de modo que os leitores e leitoras se sentem envolvidos durante todo o contexto do livro. Em momentos em que o conteúdo se torna denso, uma piada esperta traz de volta a leveza ao conteúdo, que é riquíssimo e muito limitado principalmente em nosso idioma.
O conteúdo é bem completo, passando por introduções de microsserviços, contextos, dificuldades de sistemas reativos e desempenho até se desdobrar no mundo da elasticidade, resiliência e responsividade per se.
Para os que tiveram o prazer em trabalhar com Virgs, este livro é uma viagem, é como se estivessem trabalhando ou tomando um café com ele. E, para aqueles que ainda não o conhecem, esta é uma oportunidade de sentir como seria o dia a dia trabalhando ao seu lado. Que, por sinal, é exatamente assim.
Quem sabe em um futuro próximo teremos algo sobre Rubik!
Biharck Araújo, Engenheiro de Software e autor do livro "Hands-On RESTful Web Services with TypeScript 3".
Sobre o autor
Nascido e criado em Fortaleza (CE), ex-animador de batismo e eterno meia-atacante nas peladas no Juraci às sextas-feiras à noite, comecei a tentar desenvolver sistemas com apenas 13 anos e hoje, orgulhosamente, digo que ainda estou aprendendo.
Com mais da metade da minha vida imersa no mundo do desenvolvimento de software, eu me formei em Ciências da Computação com ênfase em Engenharia de Software, sou 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.
Ao longo desse período, acumulei experiência, amizades e, principalmente, dívidas financeiras Brasil afora. Tive também a oportunidade de trabalhar em empresas das quais me orgulho muito, como ThoughtWorks, iFood e, atualmente, Amazon Web Services (AWS) - Canadá. Dedico muito do meu tempo ao desenvolvimento de uma infinidade de projetos pessoais (saiba mais em: https://pagehub.me/virgs e https://github.com/virgs). Acredito que essas honrarias e muitas aulas e palestras ministradas me credenciam para compartilhar conhecimento e alegria nas páginas que virão a seguir.
Além disso, sou profundamente viciado em cubos mágicos e em jogos não mainstream, como campo minado, paciência, sudoku e futebol. Mas prefiro não falar sobre o último por ainda carregar comigo a mágoa de nunca ter sido convocado para a seleção brasileira.
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
- Parte 5: Elasticidade
- 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
- Parte 6: Resiliência
- 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
- Parte 7: Responsividade
- 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
- Parte 8: Considerações finais
- 22 Fim
- 23 Bibliografia
Dados do produto
- Número de páginas:
- 322
- ISBN:
- 978-65-86110-82-1
- Data publicação:
- 09/2021