INTRODUÇÃO A MICROSSERVIÇOS
COM SPRING CLOUD
Jether Rodrigues
Software	Developer	Specialist	|	
OCAJP8	|	Kotlin	|	Remote	Work
Bruna Souza
Software	Engineer	|	
Java	|	Android
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
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
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.
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.
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
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
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)
Arquitetura de Microsserviços
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)
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
MSA - Native Cloud Tools
Links Úteis
● https://github.com/jether2011/jugvale
● https://microservices.io/patterns/index.html
● https://github.com/cncf/trailmap
● https://landscape.cncf.io
● https://geemus.gitbooks.io/http-api-design/content/en/index.html
● https://12factor.net/pt_br/
● https://httpstatuses.com/
● https://herbertograca.com/2017/09/14/ports-adapters-architecture/
● https://martinfowler.com/articles/microservices.html
● https://github.com/donnemartin/system-design-primer
Referências
JUGVale 14 - 14/09/2019

JUGVale 14 - 14/09/2019

  • 1.
    INTRODUÇÃO A MICROSSERVIÇOS COMSPRING CLOUD Jether Rodrigues Software Developer Specialist | OCAJP8 | Kotlin | Remote Work Bruna Souza Software Engineer | Java | Android
  • 2.
    Apresentação Bruna Souza Formada emSistemas 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 DEMICROSSERVIÇ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 arquiteturamonolí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 Aarquitetura 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.
  • 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)
  • 10.
  • 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 SpringCloud ● 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
  • 18.
    MSA - NativeCloud Tools
  • 19.
    Links Úteis ● https://github.com/jether2011/jugvale ●https://microservices.io/patterns/index.html ● https://github.com/cncf/trailmap ● https://landscape.cncf.io ● https://geemus.gitbooks.io/http-api-design/content/en/index.html ● https://12factor.net/pt_br/ ● https://httpstatuses.com/ ● https://herbertograca.com/2017/09/14/ports-adapters-architecture/ ● https://martinfowler.com/articles/microservices.html ● https://github.com/donnemartin/system-design-primer
  • 20.