[CLOUD-CONFERENCE-DAY] Spring Cloud

[CLOUD-CONFERENCE-DAY] Spring Cloud

Transcript

  1. SPRING CLOUD Kamila Santos

  2. KAMILA SANTOS Dev Backend Ame Digital Desenvolvedora backend Java na

    Ame Digital, bacharel em ciência da computação e co-organizadora das comunidades womakerscode, devsjavagirl, perifacode e nerdzao. Já palestrei em algumas conferências como Java Global Summit 2020 e The Developers Conference, além de meetups locais. @kamilah_santos
  3. @kamilah_santos 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. @kamilah_santos 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.
  5. @kamilah_santos MICROSSERVIÇOS A complexidade e acoplamento dificulta a implementação de

    novas tecnologias, já que afeta a aplicação como um todo.
  6. @kamilah_santos 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.
  7. @kamilah_santos 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.
  8. @kamilah_santos MICROSSERVIÇOS Como são executados de forma independente, cada serviço

    pode ser desenvolvido em uma tecnologia diferente, ser escalado e atualizado independente um dos outros.
  9. @kamilah_santos 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
  10. @kamilah_santos 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.
  11. @kamilah_santos 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.
  12. @kamilah_santos 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.
  13. @kamilah_santos LIBERDADE DE ESCOLHA DE STACK Os responsáveis por cada

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

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

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

    a criação de aplicações distribuídas
  17. @kamilah_santos 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,
  18. @kamilah_santos 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?
  19. @kamilah_santos 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:
  20. @kamilah_santos 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.
  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 @kamilah_santos
  22. @kamilah_santos CODEBASE NO SPRING

  23. @kamilah_santos DEPENDENCIES Declare e isole as dependências do seu projeto,

    incluindo dependências externas: serviços de terceiros. banco de dados..
  24. @kamilah_santos DEPENDENCIES NO SPRING

  25. DEPENDENCIES NO SPRING @kamilah_santos

  26. @kamilah_santos CONFIG Armazene suas configurações no ambiente, ex: config-server

  27. @kamilah_santos 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.
  28. 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, @kamilah_santos
  29. @kamilah_santos 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
  30. @kamilah_santos PROCESSES Execute a aplicação como um ou mais processos

    sem armazenar seu estado (stateless).
  31. @kamilah_santos 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.
  32. @kamilah_santos 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.
  33. @kamilah_santos DISPOSABILITY Maximize a robustez de suas aplicações com inicialização

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

    produção o mais semelhante possível,
  35. @kamilah_santos LOGS Trate logs como fluxo de eventos. Ex: SL4j

  36. @kamilah_santos

  37. @kamilah_santos ADMIN PROCESSES Executar tarefas de gerenciamento/administração como processos pontuais,

  38. SERVICE DISCOVERY @kamilah_santos

  39. SERVICE DISCOVERY POSSIBILITA QUE MICROSSERVIÇOS DESCUBRAM FACILMENTE A ROTA DOS

    OUTROS SERVIÇOS QUE PRECISAM ACESSAR @kamilah_santos
  40. MAIS CONHECIDOS: SPRING CLOUD NETFLIX EUREKA SPRING CLOUD CONSUL @kamilah_santos

  41. INTERFACE: @kamilah_santos

  42. IMPLEMENTAÇÃO DO SERVER @kamilah_santos

  43. IMPLEMENTAÇÃO DO SERVER @kamilah_santos

  44. IMPLEMENTAÇÃO DO SERVER @kamilah_santos

  45. IMPLEMENTAÇÃO DO CLIENT @kamilah_santos

  46. IMPLEMENTAÇÃO DO CLIENT @kamilah_santos

  47. IMPLEMENTAÇÃO DO CLIENT @kamilah_santos

  48. TAMBÉM PODE SER UTILIZADO COM O SPRING BOOT ADMIN @kamilah_santos

  49. TAMBÉM PODE SER UTILIZADO COM O SPRING BOOT ADMIN @kamilah_santos

  50. TAMBÉM PODE SER UTILIZADO COM O SPRING BOOT ADMIN @kamilah_santos

  51. TAMBÉM PODE SER UTILIZADO COM O SPRING BOOT ADMIN @kamilah_santos

  52. GATEWAY @kamilah_santos

  53. 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 @kamilah_santos
  54. MAIS CONHECIDOS: ZUUL E SPRING CLOUD GATEWAY @kamilah_santos

  55. SPRING CLOUD GATEWAY Desenvolvido com o Spring Framework 5 ,

    Project reator e Netty Server @kamilah_santos
  56. IMPLEMENTAÇÃO @kamilah_santos

  57. IMPLEMENTAÇÃO @kamilah_santos

  58. IMPLEMENTAÇÃO @kamilah_santos

  59. @kamilah_santos

  60. @kamilah_santos

  61. @kamilah_santos

  62. @kamilah_santos

  63. @kamilah_santos

  64. @kamilah_santos

  65. ZUUL @kamilah_santos

  66. @kamilah_santos

  67. @kamilah_santos CONFIG SERVER Permite armazenar configurações das aplicações de modo

    centralizado.
  68. SERVICE @kamilah_santos

  69. SERVICE @kamilah_santos

  70. SERVICE @kamilah_santos

  71. SERVICE @kamilah_santos

  72. @kamilah_santos LOAD BALANCER Ribon (depreciado), tem como alternativa o Spring

    Cloud Load Balancer
  73. @kamilah_santos

  74. @kamilah_santos LOAD BALANCER

  75. @kamilah_santos LOAD BALANCER

  76. @kamilah_santos LOAD BALANCER

  77. @kamilah_santos LOAD BALANCER

  78. LOAD BALANCER @kamilah_santos

  79. @kamilah_santos FEIGN Facilita a utilização de clients de forma declarativa

    e simplificada.
  80. @kamilah_santos

  81. @kamilah_santos

  82. @kamilah_santos

  83. @kamilah_santos CIRCUIT BREAKER Facilita a utilização de clients de forma

    declarativa e simplificada.
  84. @kamilah_santos

  85. @kamilah_santos CIRCUIT BREAKER

  86. @kamilah_santos CIRCUIT BREAKER

  87. @kamilah_santos CIRCUIT BREAKER

  88. @kamilah_santos

  89. @kamilah_santos

  90. @kamilah_santos

  91. @kamilah_santos SQS É um serviço de filas de mensagens gerenciado

    que possibilita o desacoplamento e a escalabilidade .
  92. @kamilah_santos SQS

  93. @kamilah_santos SQS

  94. @kamilah_santos SQS

  95. @kamilah_santos SQS

  96. @kamilah_santos SNS É um serviço de mensagens para comunicação de

    sistema para sistema e de aplicativo para pessoa (A2P)
  97. @kamilah_santos SNS

  98. @kamilah_santos SNS

  99. @kamilah_santos SNS

  100. @kamilah_santos ELASTIC CACHE

  101. @kamilah_santos

  102. @kamilah_santos OUTRAS FEATURES DO SPRING CLOUD https://spring.io/projects/spring- cloud