O documento introduz os conceitos de arquitetura monolítica e microsserviços, comparando seus prós e contras. Ele também discute como migrar de uma arquitetura monolítica para microsserviços usando Spring Cloud para comunicação e integração.
Alternativas para implementação de Microsserviços no Azure | MVPConf Latam 2021
JUGVale 14 - 14/09/2019
1. INTRODUÇÃO A MICROSSERVIÇOS
COM SPRING CLOUD
Jether Rodrigues
Software Developer Specialist |
OCAJP8 | Kotlin | Remote Work
Bruna Souza
Software Engineer |
Java | Android
2. Apresentação
Bruna Souza
Formada em Sistemas de Informação pela Unicamp, pós graduada em Engenharia de Software,
tenho 3 anos de experiência com java desenvolvendo aplicações WEB, desktop e mobile com
Vaadin, JavaFX e Android.
Linkedin: https://www.linkedin.com/in/bruna-souza-4ab20859/
Jether Rodrigues
Bacharel em Ciência da Computação, MBA em Tecnologia da Informação, certificado OCAJP
8. Desenvolvedor de Software.
https://github.com/jether2011
3. ARQUITETURA MONOLÍTICA
ARQUITETURA DE MICROSSERVIÇOS
PRÓS E CONTRAS - MONOLITO
PRÓS E CONTRAS - MICROSSERVIÇOS
MIGRANDO PARA MICROSSERVIÇOS
COMUNICAÇÃO E INTEGRAÇÃO
MSA COM SPRING CLOUD
MSA NATIVE CLOUD TOOLS
REFERÊNCIAS
4. Arquitetura Monolítica
Uma arquitetura monolítica é um modelo unificado para projetar uma solução de software.
Todos os componentes de software nesta arquitetura são interconectados e interdependentes.
Em uma arquitetura tão fortemente acoplada, cada componente e seus componentes
relacionados devem estar funcionais para que o código seja executado ou compilado com
êxito.
5. Arquitetura de Microsserviços
A arquitetura de microsserviços, é uma abordagem modular para projetar uma solução de
software. Nesta arquitetura, um aplicativo de software é construído com um grupo
independente de componentes que executam cada processo de aplicativo como um serviço.
A arquitetura de microsserviços é fracamente acoplada, um componente é independente do
outro, pode ser escrito em diferentes linguagens de programação, usar diferentes
armazenamentos de dados e serve apenas uma função específica.
6.
7. Prós e Contras
Vantagens
● Menos sobrecarga operacional.
● Base de código centralizado
● Configuração mais simples
● Monitoramento mais simples
● Mais facilidade de executar testes integrados
● Controle de versionamento e compatibilidade
● Implantação mais simples (Deploy)
Desvantagem
● Ponto único de falha
● Complexidade de código
● Time maior e com menos flexibilidade na adoção
de tecnologias
● Lentidão (Uso de muito recurso, sobrecargas dos
webservers, IDE)
● Escalabilidade reduzida e mais cara
● Produtividade reduzida
● Implantação lenta e com janelas reduzidas
Monolito
8. Prós e Contras
Vantagens
● Fracamente acoplado com outro serviço
● Possibilidade de separação de base de dados
● Sem ponto único de falha (isolamento)
● Manutenção e produtividade facilitada
● Implantação contínua e independente
● Times poliglotas
● Substituição com facilidade
● Escalabilidade independente
● Inicialização da aplicação mais rápida
Desvantagem
● Implantação e execução mais complexa.
● Testes de integração e contrato mais complexos.
● Monitoramento complexo.
● Relacionamentos Ocultos: Nesta arquitetura não fica
evidente qual microsserviço chama outro.
● A forte modularização torna a refatoração um desafio,
se existir funcionalidades para serem movidas.
● Sistemas distribuídos são complexos. As chamadas
entre microsserviços podem falhar devido a rede e
podem ser mais lentas do que dentro de um processo.
Microsserviços
9. Migrando para microsserviços
● Aplicar decomposição
● Por negócio
● Por subdomínio
● Aplicação do conceito de desenvolvimento orientado a domínio (DDD -
Domain-Driven Design)
● Utilização do padrão de estrangulamento (Strangler Pattern)
● Utilização de Arquitetura Hexagonal (Ports and Adapter Pattern)
11. Comunicação e Integração
● Protocolo HTTP 1.1
● Estilo arquitetural REST e a implementação RESTFul
○ Verbos HTTP
○ Stateless
○ https://restfulapi.net/
● gRPC (Protobuf, HTTP2)
● Mensageria (RabbitMQ, Kafka, ...)
● Segurança
○ Confiabilidade (HTTPS)
○ Autenticação, Autorização e Integridade (OAuth2, JWT)
12. MSA com Spring Cloud
● Stack completa para desenvolvimento de microsserviços e mantida pela Pivotal
● Netflix OSS - https://netflix.github.io/
● Desvantagem em basear o desenvolvimento totalmente no framework e suas ferramentas