Anúncio

Microservices com Spring Boot e Spring Cloud Netflix

Senior Architecture Manager em Personal Content
6 de Dec de 2018
Anúncio

Mais conteúdo relacionado

Apresentações para você(20)

Similar a Microservices com Spring Boot e Spring Cloud Netflix(20)

Anúncio

Último(20)

Anúncio

Microservices com Spring Boot e Spring Cloud Netflix

  1. 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;
  3. Introdução
  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.
  13. Novos Paradigmas
  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.
  19. Padrões de Microservices Fonte: https://microservices.io
  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.
  29. Event Driven Microservices Spring Cloud Stream
  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/)
  31. Distribuited Tracing Spring Cloud Sleuth
  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.
  34. Obrigado! Contato: E-mail: natanael.vaz@gmail.com Linkedin https://www.linkedin.com/in/nat anaelfonseca/ Grupo do Telegram MicroservicesBR
Anúncio