
Antonio Muniz
Já inspirou mais de 30 mil pessoas em cursos de MBA, bootcamps, videoaulas, workshops, consultorias e palestras em empresas líderes de mercado, como SulAmérica, Vivo, Itaú, Oi, Furnas, Eletrobras, DHL, Banco do Brasil, Ernst & Young, Finep, Sebrae, UOL, Pagseguro, Makro, Totvs, Jucesp, Ambev Tech e Dafiti.
Como fundador e líder da Jornada Colaborativa, mobilizou milhares de coautores e novas lideranças para escrever 20 livros sobre tecnologia, desenvolvimento de software, agilidade, inovação e liderança.
Sua formação tem uma base multidisciplinar em negócios, tecnologia e liderança, com mestrado em administração no Ibmec, MBA em telecomunicações na FGV, graduação em tecnologia na Unigranrio e certificações de agilidade, Lean tecnologia, projetos, processos e serviços.
Contato: munizprofessor@gmail.

Roan Brasil Monteiro
Nascido em Cachoeiro de Itapemirim (ES) e criado na Bahia. Bacharelado em Sistemas de Informação na UNIME, especialização em Engenharia de Software na Unicamp e MBA em Gestão em Tecnologia da Informação na FGV. Tem trabalhado com TI há mais de 14 anos (já trabalhou na IBM, Getnet, FATEC-Americana, Cielo, Comexport e FIAP) e vive hoje em Montreal trabalhando alocado pela Astek Canada em um grande banco canadense. Escreveu o livro “Jornada Microsserviços”, está envolvido no projeto Eclipse NoSQL na revisão da documentação e escreve artigos em diversas fontes. Além disso, é JCP Member e um dos organizadores do Jornada Summit.

Albert Xavier
Bacharel em Ciência da Computação (2001) e mestre em Engenharia Elétrica/Inteligência Artificial (2011). Atualmente é professor e coordenador de pós-graduação em regime parcial na Fiap. Possui experiência na área de ciência da computação com ênfase em desenvolvimento, arquitetura de sistemas, machine learning e visão computacional.

André Pontes Sampaio
Mestre em Engenharia de Telecomunicações, MBA em Gerenciamento de Projetos e formado em Ciência da Computação. Mais de 15 anos de experiência no mercado de TI. Experiência profissional como Diretor de Operações e Infraestrutura, além de ter atuado como líder e consultor técnico em instituição do governo do estado de SP e empresas do setor financeiro e de telecomunicações. Professor de cursos de MBA da FIAP.

Dorival Querino
Tech Lead na empresa Zup Innovation, especialista em cloud e AWS, coordenador e coautor na Jornada Colaborativa, ajuda Devs Java a obter o melhor da computação em nuvem e da arquitetura de microsserviços.

Eduardo Costa
Desenvolvedor especialista em arquitetura microsserviços e cloud, adora compartilhar conhecimento, mentorar e contribuir para o desenvolvimento das pessoas. Sua missão é ajudar desenvolvedores a construir e “deployar” aplicações nativas para as nuvens que sejam seguras, escaláveis e resilientes.

Norberto Hideaki Enomoto
Arquiteto de Soluções com perfil mão na massa (hands-on). Formado em Ciência da Computação pela Universidade Federal de Viçosa. Pós-graduado em Gerenciamento de Projeto pela Universidade Federal do Rio de Janeiro e Internet das Coisas (IoT) pelo Instituto Nacional de Telecomunicações (Inatel). Atualmente tem liderado projetos de Transformação Digital utilizando tecnologias como arquitetura de microsserviços, APIs, DevSecOps e internet das coisas.

Sandro Giacomozzi
Especialista em TI. Ajuda desenvolvedores Java que trabalham em aplicativos corporativos a se tornar especialistas em Java e DevOps praticando as habilidades certas. Voluntário e palestrante. Seu objetivo na indústria de software é tornar as organizações e as pessoas mais ágeis por meio de processos e ferramentas, com entregas mais rápidas, eficientes e de qualidade. Pessoas e tecnologia alinhadas à satisfação e entrega do cliente.
Livro Jornada Microsserviços: do zero ao avançado somando conceitos e práticas
Criado com a colaboração de experientes profissionais que transferiram o melhor de sua experiência para uma obra repleta de conhecimento técnico e de negócio, este livro explora o mundo cloud native, conceitos que envolvem essa arquitetura, prós e contras na aplicação e como isso tudo se encaixa no mundo dos microsserviços.
Embarque conosco nesta jornada e torne-se um profissional diferenciado, com um conhecimento sólido e profundo da arquitetura de microsserviços.
Era uma vez um professor universitário que sonhava lançar um livro quando finalizou o mestrado em 2006. O sonho começou a ser concretizado em 2017 com o livro “Jornada DevOps”, mas alguns obstáculos travaram sua evolução após a escrita de três capítulos.
Em setembro de 2018, durante sua palestra na PUC Minas, surgiu um click: “Será que outras pessoas apaixonadas por DevOps ajudariam com a escrita colaborativa?”
Dezenas de colaboradores aceitaram o convite e o livro foi lançado para 350 pessoas no dia 06 de junho de 2019 no Centro de Convenções SulAmérica, no Rio de Janeiro.
A escalada dos times gerou novas amizades, aprendizados, doação de R$ 332.590,00 para instituições com o lançamento de 16 livros e sonhamos transformar mais vidas com a inteligência coletiva e o apoio de empresas amigas.
Antonio Muniz
Fundador da Jornada Colaborativa e Mentor LiderProExpert.
Sandro Giacomozzi, Roan Brasil e Dorival Querino
Líderes do time organizador do livro, curadoria e revisão técnica.
Coautores
Abraão Santos
Albert Xavier
André Pontes Sampaio
Antonio Muniz
Carmem Pereira
Daniel Gomes
Dorival Querino
Edgar Silva
Eduardo Costa
Felipe Santos
Igor Simões
João Gilberto Magalhães
Jonas Santos
Kamila Santos
Karina Moraes
Natália Gonçalves Rosa
Norberto Hideaki Enomoto
Otavio Santana
Pedro Pereira
Regiane Moura Mendonça
Roan Brasil Monteiro
Rodrigo Branas
Rodrigo Moutinho
Ronaldo Fernandes
Sandro Giacomozzi
Vinicius Ferraz
Vitor Miranda
Revisores:
Abraão Santos
Beatriz Cruz dos Santos
Bruno Kaufmann
Bruno F. Antognolli
PARTE I. INTRODUÇÃO
1. Introdução aos microsserviços (Roan Brasil Monteiro)
2. Introdução aos sistemas distribuídos (Roan Brasil Monteiro)
Definição de sistemas distribuídos
Objetivos dos sistemas distribuídos
Tipos de sistemas distribuídos
3. Definindo microsserviços (Roan Brasil Monteiro)
Como diferenciar monolitos de microsserviços?
Características dos microsserviços
4. Vantagens e desvantagens dos microsserviços (Roan Brasil Monteiro)
Vantagens
Desvantagens
5. Teorema de CAP (Roan Brasil Monteiro)
PARTE II. ARQUITETURA
6. Conceitos (Eduardo Costa)
Tipos de arquitetura
Arquitetura evolutiva
Arquitetura multicamadas
Arquitetura hexagonal
Arquitetura orientada a eventos
Arquitetura monolítica
Arquitetura orientada a serviços (SOA) (Norberto Hideaki Enomoto)
7. Construindo aplicações nativas para a nuvem (Eduardo Costa)
Diferenças entre aplicações cloud native e tradicionais
Previsibilidade
Modo de operação
Capacidade de crescimento
Cooperatividade
Forma de desenvolvimento
Dependências
Escalabilidade
Recuperação de falhas
8. Orquestração de serviços (Daniel Gomes)
Introdução
O que é orquestração de serviços?
Explorando uma solução arquitetural
Conclusão
9. Coreografia (Daniel Gomes)
Introdução
O que é coreografia de serviços?
Explorando uma solução arquitetural
Orquestrar ou coreografar serviços?
Vantagens da orquestração sobre a coreografia
Vantagens da coreografia sobre a orquestração
Os benefícios dos serviços de coreografia com fluxos de eventos
Acoplamento de serviço independente para agilidade e tolerância a falhas
Conclusão
10. Especificações e frameworks (Daniel Gomes/Vitor Miranda/Jonas Santos/Vinicius Ferraz/Felipe Santos/Norberto Hideaki Enomoto/Natália Gonçalves Rosa)
Introdução
Spring Boot e Spring Cloud (Daniel Gomes)
Microsserviços com Spring Boot
Spring Cloud: ecossistema dos microsserviços
Exemplos
Conclusão
Micronaut (Vitor Miranda/Jonas Santos)
Criando aplicação pela interface web
Instalando o Micronaut
Criando um projeto Micronaut
Quarkus (Vinicius Ferraz/Felipe Santos)
Integração com Spring
Integração com Vert.x
Conclusão
Helidon (Norberto Hideaki Enomoto/Natália Gonçalves Rosa)
Arquitetura Helidon
Extensões
Conclusão
PARTE III. MODELAGEM E DESIGN
11. Domain-driven design (Albert Xavier)
Domínio
Bounded context
Conclusão
12. Melhores práticas de modelagem de API (Edgar Silva/Dorival Querino)
O Big Mandate da Amazon
Modelando APIs com Swagger e Open API
Introdução
Criando APIs efetivas e reutilizáveis
Práticas recomendadas e não recomendadas para APIs
Versionamento de APIs
Contratos de APIs como primeiro passo (API First)
Criando contratos com Swagger
Ferramentas Swagger: Swagger Editor
Outras ferramentas interessantes para Swagger/OAS
Conclusão
13. BFF (Backend For Frontend) (Jonas Santos)
Conclusão
14. Decomposição de monolitos em microsserviços (Dorival Querino)
Decomposição por business capabilities
Vantagens
Desvantagens
Conclusão
Decomposição por estrangulamento
Exemplo
Vantagens e desvantagens
Conclusão
Decomposição por subdomínio (Pedro Pereira/André Pontes Sampaio)
Mas qual é a solução para definir um subdomínio?
Conclusão
Decomposição da base de dados (Pedro Pereira)
Definindo uma abordagem para decomposição
Visualização de dados
Repositório por contexto limitado
Dividir banco de dados com base nos domínios e subdomínios
Decomposição incremental de cada banco de dados
Decomposição lógica e física
Potenciais problemas
Conclusão
PARTE IV. PADRÕES EM MICROSSERVIÇOS
15. Comunicação interprocessos (Karina Moraes)
Serviço de descoberta
Registro de serviços
Descoberta de serviços via router
Descoberta de serviços na aplicação cliente
16. Configuração externa (Carmem Pereira/Natália Gonçalves Rosa)
Tipos de armazenamento de configuração externa
Configuração em arquivo local
Configuração externalizada com Spring Boot
Configuração em armazenamento externo
Arquitetura do padrão
Prós e contras
Spring Cloud Config
Exemplo de código usando Spring (local YAML)
Conclusão
17. Comunicação síncrona de serviços (Karina Moraes)
Comunicação descentralizada e síncrona
Comunicação orquestrada, sequencial e síncrona
Comunicação orquestrada, paralela e síncrona
Desvantagens da comunicação síncrona
18. Circuit breaker (Norberto Hideaki Enomoto/Natália Gonçalves Rosa)
Estados do padrão de projeto circuit breaker
Estado fechado
Estado aberto
Estado semiaberto
Exemplo de código
Conclusão
19. Padrões para composição de microsserviços
CQRS (Otavio Santana)
Conclusão
API Gateway (Dorival Querino/Regiane Moura Mendonça)
O que é API Gateway?
Exemplos de API Gateway
Servidores dedicados
Serviços de gerenciamento de APIs (API management tools)
Vantagens do API Gateway
Cuidados com o API Gateway
Conclusão
O padrão SAGA (Rodrigo Branas/Roan Brasil Monteiro)
A importância do contexto transacional
Consistência em uma arquitetura de microsserviços
Tipos de implementação
Implementação do SAGA coreografado (Norberto Hideaki Enomoto)
Conclusão
20. Sistemas reativos (Norberto Hideaki Enomoto)
Introdução
Desenvolvimento orientado a mensagem (message-driver development)
Arquitetura de um message broker
Exemplo de código
Microsserviço “Producer”
Microsserviço “Consumer”
Desenvolvimento orientado a eventos (event-driven development) (Carmem Pereira/Natália Gonçalves Rosa)
Eventos
Características da EDA
Considerações para escolha da EDA
Topologia do event-driven
Consumidores de eventos e estilos de processamento
Padrões da EDA
Vantagens da EDA
Desvantagens da EDA
Microsserviços reativos – Spring Webflux (Kamila Santos)
Introdução
Quais problemas o Webflux resolve
Arquitetura
Prós e contra dessa arquitetura
Quando é recomendado (ou não) utilizar esta arquitetura
PARTE V. TÓPICOS AVANÇADOS – ECOSSISTEMA
21. Melhores práticas para microsserviços (Eduardo Costa)
Boas práticas para construção de aplicações nativas para nuvem com Twelve-Factor App
O versionamento da sua aplicação
Declaração explícita e isolamento de dependências
Configurações pertencentes ao ambiente
Tratar serviços de apoio como recursos que possam ser facilmente anexados
Criação de releases versionadas e imutáveis que possam ser facilmente implantadas e retiradas de produção
Aplicações não deverão possuir estado
Gestão de atribuições de hosts e portas pela infraestrutura
Maximização de robustez da aplicação com inicializações rápidas e desligamentos seguros
Manter ambientes similares
Escalando a aplicação horizontalmente
Tratamento de logs como um fluxo de eventos
Atenção às tarefas da administração
22. Virtualização (João Gilberto Magalhães)
23. Microsserviços na nuvem (Dorival Querino)
Exemplo de microsserviços na nuvem
Migrando a arquitetura para a nuvem
Escolha do provedor
Servidores na nuvem
Serviços de banco de dados
Armazenamento de objetos
Contêineres na nuvem
Serverless – microsserviços sem servidor
O que é serverless?
Funções serverless
API Gateway
Armazenamento de objetos
Banco de dados SQL serverless
Banco de dados NoSQL
Fila de mensagens
Orquestração de funções serverless
Contêineres serverless
Conclusão
24. Infrastructure as Code (IaC) (Dorival Querino)
Ferramentas de IaC
Terraform
Gravando a configuração com o Console Recorder for AWS
Conclusão
25. Introdução à malha de serviços (service mesh) (Norberto Hideaki Enomoto)
Istio
Arquitetura do Istio
Componentes do Istio
Envoy
Istiod
Conclusão
26. DevOps (Rodrigo Moutinho/Regiane Moura Mendonça/Abraão Santos)
Vantagens e desvantagens com microsserviços
27. Integração contínua (Rodrigo Moutinho)
Automatizando um microsserviço em Java
Entrega contínua vs. Implantação contínua
28. Observabilidade (André Pontes Sampaio)
A necessidade de observabilidade
O que é observabilidade?
Desafios de monitoramento de microsserviços para equipes DevOps
Monitoramento versus observabilidade
Observabilidade como cultura, e não como uma preocupação operacional
Os três pilares da observabilidade
Métricas
Logs de eventos
Rastreamento e monitoração sintética
Resolvendo gargalos nos microsserviços
Enfrentando os desafios no monitoramento de microsserviços
AIOps
O papel da AI/ML na monitoração das operações de TI
Alerta com base em dados de monitoramento
Melhores práticas para alertas
Quais sinais de monitoramento geram valor ao negócio?
Depurando falhas
Olhando para o futuro: OpenTelemetry para melhor cobertura
Conclusão
29. Segurança (Ronaldo Fernandes)
Autenticação
Autorização
SSL/TLS
JWT (Ronaldo Fernandes/Abraão Santos/Sandro Giacomozzi)
Token
Frameworks de segurança (Ronaldo Fernandes)
Boas práticas
Conclusão
30. Testes (Sandro Giacomozzi/Karina Moraes/Vitor Miranda/Jonas Santos)
Testes de unidade
JUnit
Mocks
Testcontainers (Sandro Giacomozzi)
Banco de dados
Estudo de caso com Spring Boot
Conclusão
Testes de integração e de contrato (Karina Moraes)
PACT
Implementação de teste de contrato no consumidor
Implementação de teste de contrato no produtor
PACT states
Conclusão
31. Quando não utilizar microsserviços (Otavio Santana)
As gerações de Santo Graal (no clue generation)
Os problemas dos microsserviços
Os erros mais comuns com microsserviços
32. Microsserviços e monitoração: quais os desafios? (Igor Simões)
Estudo de caso: instituição bancária brasileira
Conclusão: observabilidade como ferramenta de análise da arquitetura
Referências bibliográficas
Dedicatória e agradecimentos
Sobre os autores e curadores