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

[CLOUD-CONFERENCE-DAY] Spring Cloud

[CLOUD-CONFERENCE-DAY] Spring Cloud

More Decks by Kamila de fatima santos oliveira

Other Decks in Programming

Transcript

  1. 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
  2. @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
  3. @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.
  4. @kamilah_santos MICROSSERVIÇOS A complexidade e acoplamento dificulta a implementação de

    novas tecnologias, já que afeta a aplicação como um todo.
  5. @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.
  6. @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.
  7. @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.
  8. @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
  9. @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.
  10. @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.
  11. @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.
  12. @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
  13. @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,
  14. @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?
  15. @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:
  16. @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.
  17. 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
  18. @kamilah_santos DEPENDENCIES Declare e isole as dependências do seu projeto,

    incluindo dependências externas: serviços de terceiros. banco de dados..
  19. @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.
  20. 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
  21. @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
  22. @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.
  23. @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.
  24. SERVICE DISCOVERY POSSIBILITA QUE MICROSSERVIÇOS DESCUBRAM FACILMENTE A ROTA DOS

    OUTROS SERVIÇOS QUE PRECISAM ACESSAR @kamilah_santos
  25. 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
  26. SPRING CLOUD GATEWAY Desenvolvido com o Spring Framework 5 ,

    Project reator e Netty Server @kamilah_santos
  27. @kamilah_santos SQS É um serviço de filas de mensagens gerenciado

    que possibilita o desacoplamento e a escalabilidade .
  28. @kamilah_santos SNS É um serviço de mensagens para comunicação de

    sistema para sistema e de aplicativo para pessoa (A2P)