SlideShare une entreprise Scribd logo
1  sur  34
Microservices
Entendendo o Estilo Arquitetural
Quem sou eu?
• Mais de 12 anos na área de Software;
• Eterno estudante de Tecnologia;
• Javeiro das Antigas;
• Amante do NodeJS;
• Trabalhando como Arquiteto de Soluções Digitais na Everis
• Envolvido em projetos de chatboots;
Introdução
Onde tudo começou?
•Aplicações de diversas tecnologias se comunicando;
•Integração por arquivo;
•Integração por XML;
•Integração por Socket TCP/IP;
•Integração com o que tem, no prazo que der!
Arquitetura Macarrônica
Arquitetura Orientada a Serviços
ESB como peça fundamental
•Um protocolo comum: SOAP;
•Um bus que concentra todas as integrações;
•Criação de um catálogo de serviços;
•Produtos consolidados no mercado;
•Escalabilidade do bus como um todo;
•Muitas empresas usaram com ITIL;
•Foco na arquitetura monolítica;
Arquitetura Monolítica
O Famoso Pacotão
•Diferentes requisitos de negócio no mesmo pacote.
•Múltiplas equipes trabalham no mesmo projeto.
•Existe apenas um pipeline de entrega.
•Muito merge.
•Dificuldade em atender diferentes áreas de negócio
•Entregas são lentas
Monolito com CI e CD
É possível alcançar uma certa
agilidade neste tipo de arquitetura,
colocando ferramentas como:
Jenkins / Artifactory
Problemas a resolver
O desenvolvimento de software está cada vez mais ágil
● Clientes querem entregas cada vez mais rápidas;
● Precisamos olhar para cada cenário e escolher a melhor
tecnologia que atende;
● A complexidade dos softwares cresce cada vez mais;
● Melhorar a escalabilidade da aplicação;
● Áreas de negócio diferentes não querem depender suas
entregas uma das outras.
Afinal, o que são microserviços?
“ the microservice architectural style is an approach to developing a single application as a
suite of small services, each running in its own process and communicating with lightweight
mechanisms, often an HTTP resource API”
-Martin Fowler
https://martinfowler.com/articles/microservices.html
Alguns pilares
Os serviços desacoplados podem ser facilmente
distribuídos horizontalmente em vários
servidores, possibilitando dimensionar os
recursos / serviços adequadamente
As falhas podem ser localizadas em uma pequena parte
do aplicativo e contidas antes que o aplicativo inteiro
sofra uma interrupção. Isso também permite que os
aplicativos sejam descartados normalmente em caso de
erro irrecuperável
Quanto menor a unidade de código com a qual está
trabalhando, menos complicado é alterar o código e
menos tempo leva para testar a implantação do código
Em resumo, é isso:
Refatorando o Monolito
● Fronteiras bem definidas;
● Um banco de dados por MS;
● Um servidor de aplicação por
microserviço.
● Um pipeline de CI/CD por MS;
● Um repositório de código fonte
por MS;
● Um banco de dados por MS.
Novos Paradigmas
Granularidade do Microservice
Como eu garanto que realmente meus microserviços estão
fazendo apenas o necessário.
“Bounded Context”
https://martinfowler.com/bliki/BoundedContext.html
Aprendendo com os outros
O caso Netflix
https://www.youtube.com/watch?v=CZ3wIuvmHeM
Josh Evans é diretor de engenharia de operações da Netflix,
com experiência em e-commerce, ferramentas, testes e operações.
Nos últimos três anos, ele liderou uma organização que cria, integra
e evangeliza soluções e práticas técnicas comprovadas, como
entrega contínua, percepção operacional em tempo real e
engenharia do caos para alcançar a excelência operacional em
escala.
Netflix Open Source Software
E tem muito mais além desses:
https://netflix.github.io/
Spring Boot e Spring Cloud
Spring Boot
O Spring Boot é a principal tecnologia usada em Java para implementação de Microserviços. O
Spring Boot simplifica muito o desenvolvimento de Microsserviços, simplificando as principais tarefas
de construir microsserviços baseados em REST. O Spring Boot também simplifica bastante o
mapeamento de verbos no estilo HTTP (GET, PUT, POST e DELETE) para URLs e a serialização
do protocolo JSON para e de objetos Java, bem como o mapeamento de exceções Java de volta
para códigos de erro HTTP padrão.
Padrões de Microservices
Fonte:
https://microservices.io
Spring Cloud
Implementar todos os padrões de microservices do zero seria muito trabalhoso.
Felizmente para nós, a equipe da Spring integrou um grande número de projetos
de código aberto testados no dia a dia, em um subprojeto Spring conhecido
coletivamente como Spring Cloud. (http://projects.spring.io/spring-cloud/).
A Spring Cloud possui a participação de empresas que possuem projetos open-
source como a Pivotal, HashiCorp e Netflix padrões.
Config Server
Spring Cloud Config Server
Pensando nas Configurações
Spring Cloud Config cuida do gerenciamento de dados de configuração de aplicativos por
meio de um serviço centralizado, de forma que os dados de configuração do aplicativo
sejam separados de forma clara do microsserviço implantado. Isso garante que,
independentemente da quantidade de instâncias de microsserviço estejam rodando, elas
sempre terão a mesma configuração.
O Spring Cloud Config possui seu próprio repositório de gerenciamento de propriedade,
mas também se integra a projetos de software livre, como os seguintes:
Git - O Spring Cloud Config pode se integrar a um repositório com suporte do Git e ler os
dados de configuração do aplicativo fora do repositório.
Consul - O Consul também inclui banco de dados baseado em armazenamento de valor-
chave que pode ser usado pelo Spring Cloud Config para armazenar dados de
configuração do aplicativo.
Eureka - O Eureka também tem um banco de dados de valor-chave que pode ser usado
com o Spring Cloud Config.
Service Discovery
Spring Cloud Netflix Eureka Server
Muitos Containers, Muitos IPs
Com o Spring Cloud Service Discovery, você pode abstrair o local físico (IP e / ou nome do servidor)
de onde seus servidores são implantados a partir dos clientes que consomem o serviço. Os
consumidores de serviço invocam lógica de negócios para os servidores por meio de um nome lógico
em vez de um local físico.
O Spring Cloud Service Discovery também lida com o registro e o cancelamento do registro de
instâncias de serviços quando eles são iniciados e desativados.
A descoberta de serviços do Spring Cloud pode ser implementada usando:
● Consul (https://www.consul.io/)
● Eureka (https://github.com/Netflix/eureka)
Circuit Breaker
Spring Cloud Netflix Hystrix
Resiliência
O Spring Cloud se integra fortemente aos projetos de código aberto da Netflix. Para os padrões
de resiliência do cliente de microsserviço, o Spring Cloud utiliza as bibliotecas:
● Netflix Hystrix (https://github.com/Netflix/Hystrix)
● Ribbon (https://github.com/Netflix/Ribbon)
Usando as bibliotecas Netstrix Hystrix, você pode implementar rapidamente os padrões de
resiliência do cliente de serviço, como os padrões circuit breaker e bulkhead.
Embora o projeto do Netflix Ribbon simplifique a integração com agentes de detecção de
serviço, como o Eureka, ele também fornece o balanceamento de carga do cliente de
chamadas de serviço de um consumidor de serviço. Isso possibilita que um cliente continue
fazendo chamadas de serviço, mesmo se o agente de detecção de serviço estiver
temporariamente indisponível
API Gateway
Spring Cloud Netflix Zuul
Definindo uma porta de entrada
A Spring Cloud usa o projeto Netflix Zuul (https://github.com/Netflix/zuul) para fornecer recursos
de roteamento de serviços para seu aplicativo de microsserviço. O Zuul é um gateway de serviço
que faz o proxy das solicitações de serviço e garante que todas as chamadas para seus
microsserviços sejam executadas por uma única “porta da frente” antes que o serviço de destino
seja chamado. Com essa centralização de chamadas de serviço, você pode impor políticas de
serviço como:
● Forçar padrões de segurança baseado em tokens;
● Filtragem de conteúdo;
● Regras de roteamento.
Event Driven Microservices
Spring Cloud Stream
Spring Cloud Stream
O Spring Cloud Stream (https://cloud.spring.io/spring-cloud-stream/) é uma tecnologia que
permite integrar facilmente o processamento de mensagens leves ao seu microsserviço. Usando
o Spring Cloud Stream, você pode criar microsserviços inteligentes que podem usar eventos
assíncronos conforme eles ocorrem.
Com o Spring Cloud Stream, você pode integrar rapidamente seus microsserviços a agentes de
mensagens, como:
● RabbitMQ (https://www.rabbitmq.com/)
● Kafka (http://kafka.apache.org/)
Distribuited Tracing
Spring Cloud Sleuth
Spring Cloud Sleuth
O Spring Cloud Sleuth (https://cloud.spring.io/spring-cloud-sleuth/) permite que você integre
identificadores de rastreamento exclusivos nas chamadas HTTP e nos canais de mensagens
(RabbitMQ, Apache Kafka) que estão sendo usados ​​em seu aplicativo.
Esses números de rastreamento, às vezes chamados de “Correlation IDs”, permitem rastrear uma
transação conforme ela flui pelos diferentes serviços em seu aplicativo. Com o Spring Cloud Sleuth,
esses IDs de rastreio são automaticamente adicionados a qualquer declaração de log que você fizer no
seu microsserviço.
Integrando
A verdadeira beleza do Spring Cloud Sleuth é vista quando combinada com ferramentas de
tecnologia de agregação de registros, como:
● Papertrail (http://papertrailapp.com)
● Zipkin (http://zipkin.io).
Papertrail é uma plataforma de registro em nuvem usada para agregar logs em tempo real de
diferentes microsserviços em um banco de dados consultavel.
O Open Zipkin coleta dados produzidos pelo Spring Cloud Sleuth e permite que você visualize o fluxo
de suas chamadas de serviço envolvidas em uma única transação.
Obrigado!
Contato:
E-mail:
natanael.vaz@gmail.com
Linkedin
https://www.linkedin.com/in/nat
anaelfonseca/
Grupo do Telegram
MicroservicesBR

Contenu connexe

Tendances

Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxAlmir Neto
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Cloud native application 입문
Cloud native application 입문Cloud native application 입문
Cloud native application 입문Seong-Bok Lee
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao FlywayJadson Santos
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilJaffer Veronezi
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Leinylson Fontinele
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cactiIsraelCunha
 
As vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoAs vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoGabriel Galdino
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 
Network policy @ k8s day
Network policy @ k8s dayNetwork policy @ k8s day
Network policy @ k8s dayChia-Chun Shih
 
Ap i unidade 3 - levantamento de requisitos
Ap i   unidade 3 - levantamento de requisitosAp i   unidade 3 - levantamento de requisitos
Ap i unidade 3 - levantamento de requisitosGlauber Aquino
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Modern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafModern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafLAY Leangsros
 

Tendances (20)

MVC
MVCMVC
MVC
 
Manual power point
Manual power pointManual power point
Manual power point
 
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e AjaxDesenvolvimento em Três Camadas com PHP, MVC e Ajax
Desenvolvimento em Três Camadas com PHP, MVC e Ajax
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Cloud native application 입문
Cloud native application 입문Cloud native application 입문
Cloud native application 입문
 
Introdução ao Flyway
Introdução ao FlywayIntrodução ao Flyway
Introdução ao Flyway
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia Ágil
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cacti
 
As vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoAs vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projeto
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Network policy @ k8s day
Network policy @ k8s dayNetwork policy @ k8s day
Network policy @ k8s day
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Aula 3 banco de dados
Aula 3   banco de dadosAula 3   banco de dados
Aula 3 banco de dados
 
Ap i unidade 3 - levantamento de requisitos
Ap i   unidade 3 - levantamento de requisitosAp i   unidade 3 - levantamento de requisitos
Ap i unidade 3 - levantamento de requisitos
 
Clean Code
Clean CodeClean Code
Clean Code
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Modern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and ThymeleafModern Java web applications with Spring Boot and Thymeleaf
Modern Java web applications with Spring Boot and Thymeleaf
 
Road to Microservices
Road to MicroservicesRoad to Microservices
Road to Microservices
 

Similaire à Microservices: Entendendo o Estilo Arquitetural

Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoDarlan Segalin
 
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...Dan El Pierre Rezende
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlabJackson F. de A. Mafra
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro ServiçosFernando Ike
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de MicroserviçosNorberto Enomoto
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudRodrigo Cândido da Silva
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingDaniel Checchia
 
SATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSSATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSAnderson Contreira
 
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...Victor Cavalcante
 
Arquitetura Serverless na AWS
Arquitetura Serverless na AWSArquitetura Serverless na AWS
Arquitetura Serverless na AWSStefan Horochovec
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Renato Groff
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...Renato Groff
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 

Similaire à Microservices: Entendendo o Estilo Arquitetural (20)

Transformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualizaçãoTransformando a ti com cloud computing e virtualização
Transformando a ti com cloud computing e virtualização
 
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Phprs meetup - deploys automatizados com gitlab
Phprs   meetup - deploys automatizados com gitlabPhprs   meetup - deploys automatizados com gitlab
Phprs meetup - deploys automatizados com gitlab
 
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de Microservices
 
Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
 
Microservices
MicroservicesMicroservices
Microservices
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
 
Melhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud ComputingMelhores práticas para Arquitetura em Cloud Computing
Melhores práticas para Arquitetura em Cloud Computing
 
SATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWSSATADS 2019 - Desenvolvimento com recursos da AWS
SATADS 2019 - Desenvolvimento com recursos da AWS
 
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
Introdução ao IBM Bluemix - Silvia Matsuora (Solution IT Architect - Ecosyste...
 
Arquitetura Serverless na AWS
Arquitetura Serverless na AWSArquitetura Serverless na AWS
Arquitetura Serverless na AWS
 
Microserviços
MicroserviçosMicroserviços
Microserviços
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 

Plus de Natanael Fonseca

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service MeshNatanael Fonseca
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Natanael Fonseca
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Natanael Fonseca
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidNatanael Fonseca
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)Natanael Fonseca
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509Natanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509Natanael Fonseca
 
Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Natanael Fonseca
 
Introdução a criptografia
Introdução a criptografiaIntrodução a criptografia
Introdução a criptografiaNatanael Fonseca
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitaisNatanael Fonseca
 

Plus de Natanael Fonseca (19)

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service Mesh
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Aula05
Aula05Aula05
Aula05
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma Android
 
Fragmentos
FragmentosFragmentos
Fragmentos
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
 
Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)
 
Introdução a criptografia
Introdução a criptografiaIntrodução a criptografia
Introdução a criptografia
 
Transações em EJB
Transações em EJBTransações em EJB
Transações em EJB
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Java annotation
Java annotationJava annotation
Java annotation
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitais
 

Microservices: Entendendo o Estilo Arquitetural

  • 2. Quem sou eu? • Mais de 12 anos na área de Software; • Eterno estudante de Tecnologia; • Javeiro das Antigas; • Amante do NodeJS; • Trabalhando como Arquiteto de Soluções Digitais na Everis • Envolvido em projetos de chatboots;
  • 4. Onde tudo começou? •Aplicações de diversas tecnologias se comunicando; •Integração por arquivo; •Integração por XML; •Integração por Socket TCP/IP; •Integração com o que tem, no prazo que der! Arquitetura Macarrônica
  • 5. Arquitetura Orientada a Serviços ESB como peça fundamental •Um protocolo comum: SOAP; •Um bus que concentra todas as integrações; •Criação de um catálogo de serviços; •Produtos consolidados no mercado; •Escalabilidade do bus como um todo; •Muitas empresas usaram com ITIL; •Foco na arquitetura monolítica;
  • 6. Arquitetura Monolítica O Famoso Pacotão •Diferentes requisitos de negócio no mesmo pacote. •Múltiplas equipes trabalham no mesmo projeto. •Existe apenas um pipeline de entrega. •Muito merge. •Dificuldade em atender diferentes áreas de negócio •Entregas são lentas
  • 7. Monolito com CI e CD É possível alcançar uma certa agilidade neste tipo de arquitetura, colocando ferramentas como: Jenkins / Artifactory
  • 8. Problemas a resolver O desenvolvimento de software está cada vez mais ágil ● Clientes querem entregas cada vez mais rápidas; ● Precisamos olhar para cada cenário e escolher a melhor tecnologia que atende; ● A complexidade dos softwares cresce cada vez mais; ● Melhorar a escalabilidade da aplicação; ● Áreas de negócio diferentes não querem depender suas entregas uma das outras.
  • 9. Afinal, o que são microserviços? “ the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API” -Martin Fowler https://martinfowler.com/articles/microservices.html
  • 10. Alguns pilares Os serviços desacoplados podem ser facilmente distribuídos horizontalmente em vários servidores, possibilitando dimensionar os recursos / serviços adequadamente As falhas podem ser localizadas em uma pequena parte do aplicativo e contidas antes que o aplicativo inteiro sofra uma interrupção. Isso também permite que os aplicativos sejam descartados normalmente em caso de erro irrecuperável Quanto menor a unidade de código com a qual está trabalhando, menos complicado é alterar o código e menos tempo leva para testar a implantação do código
  • 11. Em resumo, é isso:
  • 12. Refatorando o Monolito ● Fronteiras bem definidas; ● Um banco de dados por MS; ● Um servidor de aplicação por microserviço. ● Um pipeline de CI/CD por MS; ● Um repositório de código fonte por MS; ● Um banco de dados por MS.
  • 14. Granularidade do Microservice Como eu garanto que realmente meus microserviços estão fazendo apenas o necessário. “Bounded Context” https://martinfowler.com/bliki/BoundedContext.html
  • 15. Aprendendo com os outros O caso Netflix https://www.youtube.com/watch?v=CZ3wIuvmHeM Josh Evans é diretor de engenharia de operações da Netflix, com experiência em e-commerce, ferramentas, testes e operações. Nos últimos três anos, ele liderou uma organização que cria, integra e evangeliza soluções e práticas técnicas comprovadas, como entrega contínua, percepção operacional em tempo real e engenharia do caos para alcançar a excelência operacional em escala.
  • 16. Netflix Open Source Software E tem muito mais além desses: https://netflix.github.io/
  • 17. Spring Boot e Spring Cloud
  • 18. Spring Boot O Spring Boot é a principal tecnologia usada em Java para implementação de Microserviços. O Spring Boot simplifica muito o desenvolvimento de Microsserviços, simplificando as principais tarefas de construir microsserviços baseados em REST. O Spring Boot também simplifica bastante o mapeamento de verbos no estilo HTTP (GET, PUT, POST e DELETE) para URLs e a serialização do protocolo JSON para e de objetos Java, bem como o mapeamento de exceções Java de volta para códigos de erro HTTP padrão.
  • 20. Spring Cloud Implementar todos os padrões de microservices do zero seria muito trabalhoso. Felizmente para nós, a equipe da Spring integrou um grande número de projetos de código aberto testados no dia a dia, em um subprojeto Spring conhecido coletivamente como Spring Cloud. (http://projects.spring.io/spring-cloud/). A Spring Cloud possui a participação de empresas que possuem projetos open- source como a Pivotal, HashiCorp e Netflix padrões.
  • 21. Config Server Spring Cloud Config Server
  • 22. Pensando nas Configurações Spring Cloud Config cuida do gerenciamento de dados de configuração de aplicativos por meio de um serviço centralizado, de forma que os dados de configuração do aplicativo sejam separados de forma clara do microsserviço implantado. Isso garante que, independentemente da quantidade de instâncias de microsserviço estejam rodando, elas sempre terão a mesma configuração. O Spring Cloud Config possui seu próprio repositório de gerenciamento de propriedade, mas também se integra a projetos de software livre, como os seguintes: Git - O Spring Cloud Config pode se integrar a um repositório com suporte do Git e ler os dados de configuração do aplicativo fora do repositório. Consul - O Consul também inclui banco de dados baseado em armazenamento de valor- chave que pode ser usado pelo Spring Cloud Config para armazenar dados de configuração do aplicativo. Eureka - O Eureka também tem um banco de dados de valor-chave que pode ser usado com o Spring Cloud Config.
  • 23. Service Discovery Spring Cloud Netflix Eureka Server
  • 24. Muitos Containers, Muitos IPs Com o Spring Cloud Service Discovery, você pode abstrair o local físico (IP e / ou nome do servidor) de onde seus servidores são implantados a partir dos clientes que consomem o serviço. Os consumidores de serviço invocam lógica de negócios para os servidores por meio de um nome lógico em vez de um local físico. O Spring Cloud Service Discovery também lida com o registro e o cancelamento do registro de instâncias de serviços quando eles são iniciados e desativados. A descoberta de serviços do Spring Cloud pode ser implementada usando: ● Consul (https://www.consul.io/) ● Eureka (https://github.com/Netflix/eureka)
  • 25. Circuit Breaker Spring Cloud Netflix Hystrix
  • 26. Resiliência O Spring Cloud se integra fortemente aos projetos de código aberto da Netflix. Para os padrões de resiliência do cliente de microsserviço, o Spring Cloud utiliza as bibliotecas: ● Netflix Hystrix (https://github.com/Netflix/Hystrix) ● Ribbon (https://github.com/Netflix/Ribbon) Usando as bibliotecas Netstrix Hystrix, você pode implementar rapidamente os padrões de resiliência do cliente de serviço, como os padrões circuit breaker e bulkhead. Embora o projeto do Netflix Ribbon simplifique a integração com agentes de detecção de serviço, como o Eureka, ele também fornece o balanceamento de carga do cliente de chamadas de serviço de um consumidor de serviço. Isso possibilita que um cliente continue fazendo chamadas de serviço, mesmo se o agente de detecção de serviço estiver temporariamente indisponível
  • 27. API Gateway Spring Cloud Netflix Zuul
  • 28. Definindo uma porta de entrada A Spring Cloud usa o projeto Netflix Zuul (https://github.com/Netflix/zuul) para fornecer recursos de roteamento de serviços para seu aplicativo de microsserviço. O Zuul é um gateway de serviço que faz o proxy das solicitações de serviço e garante que todas as chamadas para seus microsserviços sejam executadas por uma única “porta da frente” antes que o serviço de destino seja chamado. Com essa centralização de chamadas de serviço, você pode impor políticas de serviço como: ● Forçar padrões de segurança baseado em tokens; ● Filtragem de conteúdo; ● Regras de roteamento.
  • 30. Spring Cloud Stream O Spring Cloud Stream (https://cloud.spring.io/spring-cloud-stream/) é uma tecnologia que permite integrar facilmente o processamento de mensagens leves ao seu microsserviço. Usando o Spring Cloud Stream, você pode criar microsserviços inteligentes que podem usar eventos assíncronos conforme eles ocorrem. Com o Spring Cloud Stream, você pode integrar rapidamente seus microsserviços a agentes de mensagens, como: ● RabbitMQ (https://www.rabbitmq.com/) ● Kafka (http://kafka.apache.org/)
  • 32. Spring Cloud Sleuth O Spring Cloud Sleuth (https://cloud.spring.io/spring-cloud-sleuth/) permite que você integre identificadores de rastreamento exclusivos nas chamadas HTTP e nos canais de mensagens (RabbitMQ, Apache Kafka) que estão sendo usados ​​em seu aplicativo. Esses números de rastreamento, às vezes chamados de “Correlation IDs”, permitem rastrear uma transação conforme ela flui pelos diferentes serviços em seu aplicativo. Com o Spring Cloud Sleuth, esses IDs de rastreio são automaticamente adicionados a qualquer declaração de log que você fizer no seu microsserviço.
  • 33. Integrando A verdadeira beleza do Spring Cloud Sleuth é vista quando combinada com ferramentas de tecnologia de agregação de registros, como: ● Papertrail (http://papertrailapp.com) ● Zipkin (http://zipkin.io). Papertrail é uma plataforma de registro em nuvem usada para agregar logs em tempo real de diferentes microsserviços em um banco de dados consultavel. O Open Zipkin coleta dados produzidos pelo Spring Cloud Sleuth e permite que você visualize o fluxo de suas chamadas de serviço envolvidas em uma única transação.