Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[Codare Talks ] Spring Cloud : Desenvolvimento de microsserviços com Java

[Codare Talks ] Spring Cloud : Desenvolvimento de microsserviços com Java

Transcript

  1. Spring Cloud: Primeiros passos para o desenvolvimento de microsserviços utilizando

    Java e Spring Kamila Santos
  2. Desenvolvedora Back-end na Ame Digital, Microsoft MVP, Bacharel em Ciência

    da Cohmputação e co-organizadora das comunidades WoMakersCode, DevsJavaGirl e Perifacode. Kamila Santos @kamila_code
  3. @kamila_code MICROSSERVIÇOS São uma abordagem de arquitetura no qual o

    software consiste de pequenas serviços independentes que se comunicam entre si e são organizados de acordo com seus domínios de negócio
  4. MICROSSERVIÇOS Em arquiteturas monolíticas, os processos são extremamente acoplados e

    são executados como um único serviço, se uma parte desse sistema tiver um pico de demanda, todo o restante da arquitetura deverá escalar. @kamila_code
  5. MICROSSERVIÇOS A complexidade e acoplamente dificulta a implementação de novas

    tecnologias, já que afeta a aplicação como um todo. @kamila_code
  6. MICROSSERVIÇOS Arquiteturas monolíticas aumentam o risco de disponibilidade dos aplicativos,

    processos altamente dependentes e acoplados podem causar uma falha geral nesse único processo. @kamila_code
  7. MICROSSERVIÇOS Já com a arquitetura de microsserviços, a arquitetura é

    criada com seus componentes indepentes que executam cada processo do aplicativo como um serviço. @kamila_code
  8. MICROSSERVIÇOS Como são executados de forma independente, cada serviço pode

    ser desenvolvido em uma tecnologia diferente, ser escalado e atualizado indepentede um dos outros. @kamila_code
  9. AUTÔNOMOS Cada serviço pode ser desenvolvido, implantado e escalado sem

    interferir em outros serviços. Não precisam compartilhar nenhum código e a comunicação ocorre através de APIs @kamila_code
  10. ESPECIALISTAS Cada serviço é desenhado para resolver um problema específico,

    se começar a ser necessário adicionar código de outras responsabilidades, é melhor separar esse serviço. @kamila_code
  11. RESILIÊNCIA A independência do serviço aumenta a resiliência a falhas

    na arquitetura , se um deles tiver problema , só afetará aquela parte do fluxo . @kamila_code
  12. REUTILIZAÇÃO DE CÓDIGO A divisão em módulos com responsabilidades bem

    definidas permite que funções específicas de algum serviço possam ser utilizados para complementar features em outros sem precisar reescrever o código. @kamila_code
  13. LIBERDADE DE ESCOLHA DE STACK Os responsáveis por cada serviço

    podem decidir qual a melhor stack para o foco daquele serviço @kamila_code
  14. FÁCIL IMPLANTAÇÃO É possível fazer entregas contínuas e testes a

    cada nova feature de cada novo serviço . @kamila_code
  15. ESCALABILIDADE FLEXÍVEL Cada serviço pode ser escalado de forma independente

    para atender demandas específicas @kamila_code
  16. SPRING CLOUD Fornece uma série de ferramentas que facilita a

    criação de aplicações distribuídas @kamila_code
  17. SPRING CLOUD Possui algumas ferramentas que facilitam o gerenciamento de

    configurações , implementação de service discovery , roteamento , comunicação entre serviços , load balance , circuit breakers e mensageria , @kamila_code
  18. TWELVE FACTOR APPS E SPRING ? Algumas das funcionalidades contidas

    no Spring facilitam a implementação de algumas "regras " do twelve factor apps ...você conhece quais são eles ? @kamila_code
  19. TWELVE FACTOR APPS E SPRING ? O twelve -factor são

    um metodologia para desenvolvimento de aplicações Saas ( software -as -a -service )/cloud native são esses os fatores : @kamila_code
  20. CODEBASE Um repositório com controle de versão e vários deploys

    , cada microsserviço deve ter sua própria base de dados /código . @kamila_code
  21. CODEBASE NO SPRING Spring oferece diversas maneiras de fazer o

    bootstrap da sua aplicação, por ex o initializer, com ele gerado, já podemos vinculá-lo a um repositório @kamila_code
  22. DEPENDENCIES Declare e isole as dependências do seu projeto, incluindo

    dependências externas: serviços de terceiros. banco de dados.. @kamila_code
  23. CONFIG Armazene suas configurações no ambiente, ex: config-server @kamila_code

  24. BACKING SERVICES Trate os serviços que são "apoio" como recursos

    interlligados, eles devem ser acessados via URL/endpoint , essa comunicação deve ser o mais simples possível. @kamila_code
  25. BACKING SERVICES NO SPRING Spring JPA torna o código um

    pouco mais agnóstico ao banco de dados, só precisamos definir um @Repository para poder realizar as operações básicas, @kamila_code
  26. BUILD, RELEASE, RUN Separe bem os builds e os execute

    em estágios/esteiras diferentes Build: Transformar o repositório de código em um package executável. Release: O pacote executável gerado anteriormente é aplicado em um ambiente para execução com todas as configurações necessárias. Run: Iniciar essa aplicação em um ambiente @kamila_code
  27. PROCESSES Execute a aplicação como um ou mais processos sem

    armazenar seu estado (stateless). @kamila_code
  28. PORT BINDING Exporte serviços via port binding, quando necessário, a

    visibilidade entre os serviços ocorra entre "portas visiveis", podendo se comunicar quando necessário. @kamila_code
  29. CONCURRENCY Dimensione seus serviços por um modelo de processo, quando

    for necessário escalar a sua aplicação que deve ser replicada, com uma máquina mais potente. @kamila_code
  30. DISPOSABILITY Maximize a robustez de suas aplicações com inicialização e

    "término" rápidos, @kamila_code
  31. DEV/PROD PARITY Mantenha os ambientes de desenvolvimento, homologação e produção

    o mais semelhante possível, @kamila _code
  32. LOGS Trate logs como fluxo de eventos. Ex: Sleuth @kamila

    _code
  33. ADMIN PROCESSES Executar tarefas de gerenciamento/administração como processos pontuais, @kamila

    _code
  34. SERVICE DISCOVERY @kamila _code

  35. Service discovery possibilita que microsserviços descubram facilmente a rota dos

    outros serviços que precisam acessar @kamila _code
  36. Mais conhecidos: Spring Cloud Netflix Eureka Spring Cloud Consul @kamila

    _code
  37. INTERFACE: @kamila _code

  38. GATEWAY @kamila _code

  39. Gateways tem o papel de ser um intermediário nas nossas

    requisições para outros serviços . Os mais conhecidos : Zuul e Spring Cloud Gateway @kamila _code
  40. SPRING CLOUD GATEWAY Desenvolvido com o Spring Framework 5 ,

    Project reator e Netty Server @kamila _code
  41. CONFIG SERVER Permite armazenar configurações das aplicações de modo centralizado

    . @kamila _code
  42. LOAD BALANCER Ribon (depreciado ), tem como alternativa o Spring

    Cloud Load Balancer @kamila _code
  43. FEIGN Facilita a utilização de clients de forma declarativa e

    simplificada . @kamila _code
  44. CIRCUIT BREAKER Controle sobre falhas e altas taxas de latência

    dentre os serviços @kamila _code
  45. EXEMPLO: @kamila _code https ://github .com /Kamilahsantos /Microsservicos -SpringCloud

  46. REFERÊNCIAS: @kamila _code https ://aws .amazon .com /pt /microservices /

    https ://spring .io /projects /spring -cloud https ://www .youtube .com /watch ?v =aO 3W -lYnw -o https ://www .youtube .com /watch ?v =hgp 6dlJJaCI https ://www .youtube .com /watch ?v =RocBZk 2V 8xM https ://www .youtube .com /watch ?v =OzP 2WBTvsGs https ://www .youtube .com /watch ?v =v 8CsnghDA 2g &list =PLO 0KWyajXMh 4u -DhB 7bXoRQ 21rfkF _cSU &index =1 https ://www .youtube .com /watch ?v =y 8IQb 4ofjDo &list =PLqq -6Pq 4lTTZSKAFG 6aCDVDP 86Qx 4lNas https ://www .youtube .com /watch ?v =o 8RO 38KbWvA &list =PLqq -6Pq 4lTTbXZY _elyGv 7IkKrfkSrX 5e https ://www .youtube .com /watch ?v =upoIwn 4rWCo &list =PLqq -6Pq 4lTTaoaVoQVfRJPqvNTCjcTvJB &index =1
  47. REFERÊNCIAS: @kamila _code https ://www .youtube .com /watch ?v =T

    36Usw _QbP 0 https ://www .youtube .com /watch ?v =GboiMJm 6WlA https ://www .youtube .com /watch ?v =41SmBj 16u 8k &list =PLmySAPXhfGyCovxvqpndBQaNm 5SRDsBuC https ://www .baeldung .com /spring -cloud -netflix -eureka https ://medium .com /swlh /spring -cloud -service -discovery -with -eureka -16f 32068e 5c 7\
  48. REFERÊNCIAS: @kamila _code https ://www .youtube .com /watch ?v =6aG

    0xFpeNFw https ://www .youtube .com /watch ?v =ZoTsZPZiPVw https ://www .youtube .com /watch ?v =vxeMnM 15gsI &list =PL 62G 310vn 6nH _iMQoPMhIlK _ey 1npyUUl https ://www .youtube .com /watch ?v =g 91lFo 8OTDY https ://www .baeldung .com /spring -cloud -gateway https ://www .devglan .com /spring -cloud /spring -cloud -gateway -example https ://spring .io /guides /gs /routing -and -filtering / https ://www .baeldung .com /spring -rest -with -zuul -proxy https ://github .com /spring -guides /gs -routing -and -filtering https ://github .com /only 2dhir /spring -cloud -gateway -demo
  49. REFERÊNCIAS: @kamila _code https ://www .youtube .com /watch ?v =KP

    3xJTb 5lME &list =PLO 0KWyajXMh 4u -DhB 7bXoRQ 21rfkF _cSU &index =6 https ://www .youtube .com /watch ?v =b 2ih 5RCuxTM https ://www .baeldung .com /spring -cloud -configuration https ://spring .io /guides /gs /centralized -configuration /
  50. REFERÊNCIAS: @kamila _code https ://www .youtube .com /watch ?v =ueyVjOnDHYQ

    https ://www .youtube .com /playlist ?list =PLTyWtrsGknYeOJHtd 3Ll 93GRf 28hrjlHV https ://www .youtube .com /watch ?v =-PbnWGddmcM https ://www .youtube .com /watch ?v =V 4pRwqucC 8E https ://spring .io /guides /gs /client -side -load -balancing / https ://www .baeldung .com /spring -cloud -rest -client -with -netflix -ribbon
  51. REFERÊNCIAS: @kamila _code https ://www .youtube .com /watch ?v =_MMf

    2SvNqxo https ://www .youtube .com /watch ?v =a 6Sxyc 1v 7U 4 https ://www .baeldung .com /spring -cloud -openfeign https ://www .devglan .com /spring -cloud /spring -cloud -feign -example
  52. REFERÊNCIAS: @kamila _code https ://www .youtube .com /watch ?v =mJ

    8JSach 2P 4 https ://www .youtube .com /watch ?v =s 5-leUCti 5o https ://www .youtube .com /watch ?v =SxJ 2uLZWOyw https ://www .youtube .com /watch ?v =SvZ 98jLVdM 8 https ://spring .io /guides /gs /circuit -breaker / https ://www .baeldung .com /resilience 4j Ilustrações by storyset
  53. OBRIGADA :) @kamila _code