SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

AWS Black Belt Techシリーズ Amazon EMR
AWS Black Belt Techシリーズ  Amazon EMRAWS Black Belt Techシリーズ  Amazon EMR
AWS Black Belt Techシリーズ Amazon EMR
Amazon Web Services Japan
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用
QlikPresalesJapan
 
Cisco sddc solution 소개
Cisco sddc solution 소개Cisco sddc solution 소개
Cisco sddc solution 소개
Woo Hyung Choi
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
Jorge Ávila Miranda
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
Paul Mooney
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
 
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Web Services Japan
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
Amazon Web Services Japan
 
Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用
QlikPresalesJapan
 
MongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel BakışMongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel Bakış
Cihan Özhan
 
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster RecoveryAWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
Amazon Web Services Japan
 
Qlik Replicateでのタスク設定の詳細
Qlik Replicateでのタスク設定の詳細Qlik Replicateでのタスク設定の詳細
Qlik Replicateでのタスク設定の詳細
QlikPresalesJapan
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
wintechq
 
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用するQlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
QlikPresalesJapan
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NETAmazon Web Services Japan
 
もしOracleDBAがMySQLを管理することになったときの注意点など
もしOracleDBAがMySQLを管理することになったときの注意点などもしOracleDBAがMySQLを管理することになったときの注意点など
もしOracleDBAがMySQLを管理することになったときの注意点など
Kentaro Kitagawa
 
Monitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security Plugin
Monitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security PluginMonitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security Plugin
Monitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security Plugin
Alessandro Silva
 
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
Amazon Web Services Japan
 
SAP Connector.
SAP Connector.SAP Connector.
SAP Connector.
Fernando Silva
 

Mais procurados (20)

AWS Black Belt Techシリーズ Amazon EMR
AWS Black Belt Techシリーズ  Amazon EMRAWS Black Belt Techシリーズ  Amazon EMR
AWS Black Belt Techシリーズ Amazon EMR
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用
 
Cisco sddc solution 소개
Cisco sddc solution 소개Cisco sddc solution 소개
Cisco sddc solution 소개
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 
Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用
 
MongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel BakışMongoDB - JSON'a Genel Bakış
MongoDB - JSON'a Genel Bakış
 
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster RecoveryAWS Black Belt Online Seminar AWSで実現するDisaster Recovery
AWS Black Belt Online Seminar AWSで実現するDisaster Recovery
 
Qlik Replicateでのタスク設定の詳細
Qlik Replicateでのタスク設定の詳細Qlik Replicateでのタスク設定の詳細
Qlik Replicateでのタスク設定の詳細
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
 
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用するQlik Replicate - IBM DB2 for LUWをソースおよびターゲットエンドポイントとして使用する
Qlik Replicate - IBM DB2 for LUWを ソースおよびターゲットエンドポイントとして使用する
 
[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET[AWSマイスターシリーズ] AWS SDK for Java / .NET
[AWSマイスターシリーズ] AWS SDK for Java / .NET
 
もしOracleDBAがMySQLを管理することになったときの注意点など
もしOracleDBAがMySQLを管理することになったときの注意点などもしOracleDBAがMySQLを管理することになったときの注意点など
もしOracleDBAがMySQLを管理することになったときの注意点など
 
Monitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security Plugin
Monitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security PluginMonitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security Plugin
Monitoramento de Vulnerabilidades com Zabbix, RHEL e Yum Security Plugin
 
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
 
SAP Connector.
SAP Connector.SAP Connector.
SAP Connector.
 

Semelhante a Microservices com Spring Boot e Spring Cloud Netflix

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
Darlan 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ços
Thiago 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 gitlab
Jackson 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 Microservices
Deep Tech Brasil
 
Architecture performance using micro services
Architecture performance using micro servicesArchitecture performance using micro services
Architecture performance using micro services
Joao Galdino Mello de Souza
 
Microservices
MicroservicesMicroservices
Microservices
Rafael Sousa
 
Arquitetura de Micro Serviços
Arquitetura de Micro ServiçosArquitetura de Micro Serviços
Arquitetura de Micro Serviços
Fernando Ike
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
Norberto 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 Cloud
Rodrigo 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 Computing
Daniel 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 AWS
Anderson 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 AWS
Stefan Horochovec
 
Microserviços
MicroserviçosMicroserviços
Microserviços
Airton Fitarelli Junior
 
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 PHP
Flávio Lisboa
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
Rodrigo Cândido da Silva
 

Semelhante a Microservices com Spring Boot e Spring Cloud Netflix (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
 

Mais de Natanael Fonseca

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service Mesh
Natanael Fonseca
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
Natanael Fonseca
 
Aula05
Aula05Aula05
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
Natanael Fonseca
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
Natanael Fonseca
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
Natanael Fonseca
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
Natanael 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 Android
Natanael Fonseca
 
Fragmentos
FragmentosFragmentos
Fragmentos
Natanael 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 Android
Natanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
Natanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
Natanael 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 criptografia
Natanael Fonseca
 
Transações em EJB
Transações em EJBTransações em EJB
Transações em EJB
Natanael Fonseca
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
Natanael Fonseca
 
Java annotation
Java annotationJava annotation
Java annotation
Natanael Fonseca
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitais
Natanael Fonseca
 

Mais 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 com Spring Boot e Spring Cloud Netflix

  • 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.