Construindo Microservices Auto-curáveis com Spring Cloud e Netflix OSS. Rodrigo Cândido da

Documentos relacionados
Arquitetura Java Pastoreando gatos

Eclipse MicroProfile for the Busy Developer

CONFIGURAÇÕES DISTRIBUÍDAS COM SPRING CLOUD CONFIG Trilha Arquitetura Java

Um Repositório Chave-Valor com Garantia de Localidade de Dados. Patrick A. Bungama Wendel M. de Oliveira Flávio R. C. Sousa Carmem S.

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Apis Rest Autoescaláveis

Replicação em sistemas web

WAN Automation. Acelere e Reduza custos da operação. Renato Barboza Engenheiro de Sistemas Sênior

LanUn1vers1ty 6421: CONFIGURANDO E SOLUCIONANDO PROBLEMAS EM UMA INFRAESTRUTURA DE REDES WINDOWS SERVER 2008

Web APIs e delivery. Matando a fome de 1 milhão de pedidos mensais no. Tiago Dolphine

Replicação em sistemas web

Topic Title. API-first

Micro Serviço desacoplamento arquitetura

Sistemas Distribuídos Aula 10

SNMP Simple Network Management Protocol MIBs padrões

Configuração de exemplo para o BGP com dois provedores de serviço diferentes (multilocal)

Configuração de exemplo para o BGP com dois provedores de serviço diferentes (multilocal)

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

SUPORTE ATLASSIAN 2017 SUPORTE ATLASSIAN

Um Servidor HTTP/2 Reativo em Scala

Arquitetura de sistemas distribuídos

Computação móvel na nuvem Grover E. Castro Guzman Computação Móvel MAC5743 IME-USP

Microservices em Produção: e agora? Vitor

Eduardo Barasal Morales Tiago Jun Nakamura Maputo, Moçambique 18/07/17-21/07/17

Capacitação IPv6.br. Serviços em IPv6. Serviços rev

Hiperconvergência. Casos de uso. Rodrigo Missiaggia - Principal Solutions Architect - Red Hat 19 de Setembro 2017

SISTEMA DISTRIBUÍDO PARA GERENCIAMENTO DE LIBERAÇÃO DE RELEASES DE SOFTWARE

Arquitetura de Micro Serviços: uma Comparação com Sistemas Monolíticos

Encontro Técnico de Infraestrutura de TI. Emmanuel Sanches

Revisão de Introdução às TCP-IP INTERNET. Redes de Computadores TCP/IP

Policy Routing with Catalyst 3550 Series Switch Configuration Example

Integrações e o ecossistema Java. Fabric8 ao Resgate!

Programação Distribuída. Metas de um Sistema Distribuído

falhas em sistemas distribuídos

Como uma arquitetura de nuvem flexível e escalável com OpenShift trouxe maior eficiência e agilidade à T.I.

Introdução. capítulo

Bruno Antunes da Silva UFSCar - Sorocaba

Developing Microsoft Azure Solutions (20532)

Desenvolvimento Baseado em Componentes: Tecnologia J2EE

Python para web com Flask. #PythonAmazonas

Arquitetura Cliente-Servidor Generalizada com identificação de tiers. Arquitetura Cliente-Servidor Generalizada com identificação de tiers

3 rd platform strategies: It s a Hybrid Cloud World. António Miguel Ferreira, Managing Director

Developing Microsoft Azure Solutions (20532)

Introdução a Computação em Nuvem

Ricardo R. Lecheta. Novatec

Sistemas Distribuídos

Flexible NetFlow que filtra com monitoramento de desempenho

Que são áreas do OSPF e enlaces virtuais?

SISTEMAS DISTRIBUÍDOS

Migrando seu site para o Azure utilizando

Conheça o IBM Cloud Functions A plataforma Serverless da IBM

Configurando Perfis de discagem para construir uma ponte sobre usando o ISDN

Guia Técnico v6.1 SNMP TG Conteúdo

RADIUS avançado para clientes PPP de discagem

Como Evitar Loops de Roteamento ao Usar NAT Dinâmico

Comunicação. capítulo

XIII ERIC (ISSN ) Eixo Temático Administração e Tecnologias Virtuais sala nº 27 (ARTIGO)

Matando WebForms e modernizando um Grande Varejista. Como é possível modernizarmos o velho, mantermos compatibilidades e garantirmos o negócio?

Formação de DBAs SQL Server 2008

Camadas de Serviço de Hardware e Software em Sistemas Distribuídos. Introdução. Um Serviço Provido por Múltiplos Servidores

Sistemas Distribuídos Aula 8

Hardware para Virtualização Construindo uma solução física para uma infraestrutura virtualizada

Estilos Arquiteturais

Desenvolvimento de Aplicações Distribuídas

ACELERE SUA JORNADA DE DADOS RUMO A IA COM A NUVEM PRIVADA DA IBM

Introdução a Computação em Nuvem

Implantação automatizada de composições de serviços web de grande escala

Firewall - Inspeção com estado. (Stateful Inspection)

Este documento não se restringe a versões de software e hardware específicas.

Microserviços: flexibilidade e agilidade a que preço?

Planning for and Managing Devices in the Enterprise: Enterprise Management Suite (EMS) & On-Premises Tools (20398)

Core Solutions of Microsoft Skype for Business 2015 (20334)

ASSINATURAS LABORATÓRIOS AUGUST 2012

BGP Border Gateway Protocol

Chamada Remota de Procedimento (RPC)

Sistemas Distribuídos

Ligue LSA (tipo 8 LSA) e Intra-Área-prefixo (tipo 9 LSA)

O cliente VPN de AnyConnect no IOS Router com zona IO baseou o exemplo da configuração de firewall da política

Guia de Instalação Oracle Service Bus 12c com Eclipse OEPE

Configurando Modo de Roteador-config, Caractere Geral, Chaves Pré-compartilhadas, sem NAT

TÓPICOS EM COMPUTAÇÃO APLICADA

TRANSPORTE DE PREFIXOS VIA VPNV4

UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO TRABALHOS DE LABORATÓRIO GESTÃO DE REDES E DE SISTEMAS DISTRIBUÍDOS

Introdução (hardware) INTRODUÇÃO Hardware. Introdução (hardware) Introdução (hardware) Introdução (hardware) Introdução (hardware)

Projetando redes de discagem do provedor de serviços da larga escala com OSPF

Sistemas Distribuídos

MONITORANDO A QUALIDADE DO SEU PROJETO

Configurando um Gateway de Último Recurso Usando Comandos IP

Roteamento Multicaminhos em Redes Definidas por Software. Pedro H. A. Rezende Luis F. Faina Lásaro Camargos Rafael Pasquini

QCon Rio Matando um Sistema Monolítico Rumo Aos Microservices. Bernardo Fontes. Rio de Janeiro/RJ 27 de Agosto de 2015

S TP e inspeção de conexões ESMTP com exemplo de configuração do Cisco IOS Firewall

Características de Sistemas de Arquivos Distribuídos Serviços de nomes e diretórios

GT-FENDE. Carlos Raniery P. dos Santos Universidade Federal de Santa Maria

Autenticação do proxy de autenticação de partida - Nenhuma Cisco IOS Firewall ou configuração de NAT

Pós-Graduação em Computação Distribuída e Ubíqua

Evandro Deliberal Aula 04

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Práticas de Desenvolvimento de Software

Redes para Automação Industrial: Introdução às Redes de Computadores Luiz Affonso Guedes

Replicando dados para o Kafka com o Oracle GoldenGate DBA Brasil 4.0 #DB4BRASIL

Transcrição:

Construindo Microservices Auto-curáveis com Spring Cloud e Netflix OSS Rodrigo Cândido da Silva @rcandidosilva

About Me Software Architect http://integritastech.com JUG Leader do GUJavaSC http://gujavasc.org Twitter @rcandidosilva Contatos http://rodrigocandido.me

Agenda Monolito vs. Microservices Principais Desafios Spring Cloud + Netflix OOS Spring Cloud Config + Bus Netflix Eureka Netflix Ribbon Netflix Hystrix + Turbine Netflix Zuul Spring Cloud Security Conclusões Perguntas

Monolito vs. Microservices

Monolito vs. Microservices

Microservices "Small independent component with welldefined boundaries that s doing one thing, but doing it well" Características Pequenos Deployment interdependentes Independente de tecnologia Independente de infra-estrutura

Microservices Como torná-los auto-curáveis? Gerenciamento de configuração Registro e descoberta dos serviços Roteamento Balanceamento de carga Tolerância à falhas Monitoramento

Gerenciamento de Configuração

Registro e Descoberta de Serviços

Roteamento

Tolerância à Falhas

Balanceamento de Carga

API Routing / Health check Microservices Logging Data Management Eureka Hystrix + Turbine Ribbon Zuul + alguns outros

Spring Cloud Toolset designed for building distributed systems Conjunto de bibliotecas / componentes Não é apenas uma ferramenta Integrado ao Spring Boot Suporta diferentes arquiteturas e tecnologias em Cloud AWS, Netflix, Heroku, Cloud Foundry, etc Facilita a implementação de padrões necessários aos sistemas distribuídos

Spring Cloud Principais Componentes

Spring Cloud + Netflix OSS "Casamento perfeito para criação de microservices auto-curáveis" Gerenciamento de configuração Descoberta de serviços Balanceamento de carga Tolerância à falhas Roteamento Segurança Spring Cloud Config + Bus Netflix Eureka Netflix Ribbon Netflix Hystrix + Turbine Netflix Zuul Spring Cloud Security

Spring Cloud + Netflix OSS Exemplo de Utilização

Spring Cloud Config Gerenciamento de configuração para microservices" Centraliza a configuração da aplicação Permite atualizações dinâmicas Versionado Suporte à rollback Suporta configuração via repositórios Git, SVN, filesystem Permite atualização via barramento Spring Cloud Bus

Spring Cloud Config

Spring Cloud Config (Server) ConfigServer.java @SpringBootApplication @EnableConfigServer public class ConfigServer {...} application.yml spring.cloud.config.git.uri: https://github.com/...

Spring Cloud Config (Client) application.yml spring.cloud.config.uri: ${vcap.services.configserver.credentials.uri}

Demo Gerenciamento de Configuração Spring Cloud Config + Spring Cloud Bus https://github.com/rcandidosilva/spring-cloud-sample

Netflix Eureka "Transparência de localização aos microservices" Registro de serviços REST based Suporte à replicação Cache aplicado no stub cliente Resiliente Rápido mas não consistente Fornece o alicerce para outros serviços Mantém registro de clientes com metadados

Netflix Eureka

Netflix Eureka EurekaServer.java @SpringBootApplication @EnableEurekaServer public class EurekaServer {...} Application.java @SpringBootApplication @EnableEurekaClient public class Application {...}

Demo Transparência de Localização Spring Cloud + Netflix Eureka https://github.com/rcandidosilva/spring-cloud-sample

Netflix Ribbon "Balanceamento de carga para microservices" Balanceamento decentralizado no cliente Resiliente Suporte à tolerância a falhas Trabalha com múltiplos protocolos HTTP, TCP, UDP Modelo assíncrono e reativo Suporte à caching e batching Múltiplos algoritmos de balanceamento

Netflix Ribbon

Demo Balanceamento de Carga Spring Cloud + Netflix Ribbon https://github.com/rcandidosilva/spring-cloud-sample

Netflix Hystrix Tolerância à falhas para microservices" Implementa padrão circuit breakers Fornece monitoramento aos serviços Hystrix dashboard Suporta comandos assíncronos Utiliza diferentes thread pools Pode implementar timeouts

Netflix Hystrix Circuit Breaker Pattern Máquina de estados Closed, Open, Half-Open Falha não é propagada para chamada do cliente

Netflix Hystrix

Hystrix Dashboard

Hystrix Dashboard + Turbine

Demo Tolerância a Falhas Spring Cloud + Netflix Hystrix https://github.com/rcandidosilva/spring-cloud-sample

Netflix Zuul Roteamento centralizado para microservices" Fornece único ponto de entrada para os serviços Roteamento e balanceamento na JVM Cria uma rota para cada serviço no Eureka Define filtros para pontos de entrada Similar outros roteamentos httpd, nginx, CF go router

Netflix Zuul

Demo Roteamento centralizado Spring Cloud + Netflix Zuul https://github.com/rcandidosilva/spring-cloud-sample

Spring Cloud Security Segurança aplicada para microservices" Integração Spring Security + OAuth2 SSO com OAuth2 e OpenID Connect Proteção dos serviços com tokens (JWT) Transmissão tokens entre SSO e apps OAuth2 + OpenID Connect + JWT ;)

Spring Cloud Security Validate (JWT) ID Token Client Relying Party Discovery Get an access token & an ID Token (JWT) Token Endpoint Authorization Endpoint JWKS Endpoint Registration Endpoint /.well-known /webfinger /openid-configura.on Check Session IFrame Authorization Server Iden.ty Provider or IDP or OpenID Provider or OP Use an access token End Session Endpoint JWKS Endpoint Userinfo Endpoint Important Stuff Resource Server

Conclusões Microservices são sistemas distribuídos Sistemas distribuídos são complexos Netflix OSS define ótimas ferramentas para implementação com microservices Spring Cloud Ótima abstração para Netflix OSS Fácil utilização (via anotações) Integração com ecossistema Spring Enjoy it ;)

Perguntas?

Referências http://projects.spring.io/spring-boot/ http://projects.spring.io/spring-cloud/ https://netflix.github.io/ https://github.com/netflix/zuul https://github.com/netflix/eureka https://github.com/netflix/ribbon https://github.com/netflix/hystrix http://www.pwc.com/us/en/technology-forecast/2014/cloud-computing/features/ microservices.html http://martinfowler.com/articles/microservices.html http://callistaenterprise.se/blogg/teknik/2015/04/10/building-microservices-withspring-cloud-and-netflix-oss-part-1/ http://www.javaworld.com/article/2927920/cloud-computing/build-self-healingdistributed-systems-with-spring-cloud.html

Muito obrigado! @rcandidosilva rodrigocandido.me