Slide 1

Slide 1 text

SPRING CLOUD Kamila Santos

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

@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

Slide 4

Slide 4 text

@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.

Slide 5

Slide 5 text

@kamilah_santos MICROSSERVIÇOS A complexidade e acoplamento dificulta a implementação de novas tecnologias, já que afeta a aplicação como um todo.

Slide 6

Slide 6 text

@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.

Slide 7

Slide 7 text

@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.

Slide 8

Slide 8 text

@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.

Slide 9

Slide 9 text

@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

Slide 10

Slide 10 text

@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.

Slide 11

Slide 11 text

@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.

Slide 12

Slide 12 text

@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.

Slide 13

Slide 13 text

@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

Slide 14

Slide 14 text

@kamilah_santos FÁCIL IMPLANTAÇÃO É possível fazer entregas contínuas e testes a cada nova feature de cada novo serviço.

Slide 15

Slide 15 text

@kamilah_santos ESCALABILIDADE FLEXÍVEL Cada serviço pode ser escalado de forma independente para atender demandas específicas

Slide 16

Slide 16 text

@kamilah_santos SPRING CLOUD Fornece uma série de ferramentas que facilita a criação de aplicações distribuídas

Slide 17

Slide 17 text

@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,

Slide 18

Slide 18 text

@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?

Slide 19

Slide 19 text

@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:

Slide 20

Slide 20 text

@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.

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

@kamilah_santos CODEBASE NO SPRING

Slide 23

Slide 23 text

@kamilah_santos DEPENDENCIES Declare e isole as dependências do seu projeto, incluindo dependências externas: serviços de terceiros. banco de dados..

Slide 24

Slide 24 text

@kamilah_santos DEPENDENCIES NO SPRING

Slide 25

Slide 25 text

DEPENDENCIES NO SPRING @kamilah_santos

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

@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.

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

@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

Slide 30

Slide 30 text

@kamilah_santos PROCESSES Execute a aplicação como um ou mais processos sem armazenar seu estado (stateless).

Slide 31

Slide 31 text

@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.

Slide 32

Slide 32 text

@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.

Slide 33

Slide 33 text

@kamilah_santos DISPOSABILITY Maximize a robustez de suas aplicações com inicialização e "término" rápidos,

Slide 34

Slide 34 text

@kamilah_santos DEV/PROD PARITY Mantenha os ambientes de desenvolvimento, homologação e produção o mais semelhante possível,

Slide 35

Slide 35 text

@kamilah_santos LOGS Trate logs como fluxo de eventos. Ex: SL4j

Slide 36

Slide 36 text

@kamilah_santos

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

SERVICE DISCOVERY @kamilah_santos

Slide 39

Slide 39 text

SERVICE DISCOVERY POSSIBILITA QUE MICROSSERVIÇOS DESCUBRAM FACILMENTE A ROTA DOS OUTROS SERVIÇOS QUE PRECISAM ACESSAR @kamilah_santos

Slide 40

Slide 40 text

MAIS CONHECIDOS: SPRING CLOUD NETFLIX EUREKA SPRING CLOUD CONSUL @kamilah_santos

Slide 41

Slide 41 text

INTERFACE: @kamilah_santos

Slide 42

Slide 42 text

IMPLEMENTAÇÃO DO SERVER @kamilah_santos

Slide 43

Slide 43 text

IMPLEMENTAÇÃO DO SERVER @kamilah_santos

Slide 44

Slide 44 text

IMPLEMENTAÇÃO DO SERVER @kamilah_santos

Slide 45

Slide 45 text

IMPLEMENTAÇÃO DO CLIENT @kamilah_santos

Slide 46

Slide 46 text

IMPLEMENTAÇÃO DO CLIENT @kamilah_santos

Slide 47

Slide 47 text

IMPLEMENTAÇÃO DO CLIENT @kamilah_santos

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

GATEWAY @kamilah_santos

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

MAIS CONHECIDOS: ZUUL E SPRING CLOUD GATEWAY @kamilah_santos

Slide 55

Slide 55 text

SPRING CLOUD GATEWAY Desenvolvido com o Spring Framework 5 , Project reator e Netty Server @kamilah_santos

Slide 56

Slide 56 text

IMPLEMENTAÇÃO @kamilah_santos

Slide 57

Slide 57 text

IMPLEMENTAÇÃO @kamilah_santos

Slide 58

Slide 58 text

IMPLEMENTAÇÃO @kamilah_santos

Slide 59

Slide 59 text

@kamilah_santos

Slide 60

Slide 60 text

@kamilah_santos

Slide 61

Slide 61 text

@kamilah_santos

Slide 62

Slide 62 text

@kamilah_santos

Slide 63

Slide 63 text

@kamilah_santos

Slide 64

Slide 64 text

@kamilah_santos

Slide 65

Slide 65 text

ZUUL @kamilah_santos

Slide 66

Slide 66 text

@kamilah_santos

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

SERVICE @kamilah_santos

Slide 69

Slide 69 text

SERVICE @kamilah_santos

Slide 70

Slide 70 text

SERVICE @kamilah_santos

Slide 71

Slide 71 text

SERVICE @kamilah_santos

Slide 72

Slide 72 text

@kamilah_santos LOAD BALANCER Ribon (depreciado), tem como alternativa o Spring Cloud Load Balancer

Slide 73

Slide 73 text

@kamilah_santos

Slide 74

Slide 74 text

@kamilah_santos LOAD BALANCER

Slide 75

Slide 75 text

@kamilah_santos LOAD BALANCER

Slide 76

Slide 76 text

@kamilah_santos LOAD BALANCER

Slide 77

Slide 77 text

@kamilah_santos LOAD BALANCER

Slide 78

Slide 78 text

LOAD BALANCER @kamilah_santos

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

@kamilah_santos

Slide 81

Slide 81 text

@kamilah_santos

Slide 82

Slide 82 text

@kamilah_santos

Slide 83

Slide 83 text

@kamilah_santos CIRCUIT BREAKER Facilita a utilização de clients de forma declarativa e simplificada.

Slide 84

Slide 84 text

@kamilah_santos

Slide 85

Slide 85 text

@kamilah_santos CIRCUIT BREAKER

Slide 86

Slide 86 text

@kamilah_santos CIRCUIT BREAKER

Slide 87

Slide 87 text

@kamilah_santos CIRCUIT BREAKER

Slide 88

Slide 88 text

@kamilah_santos

Slide 89

Slide 89 text

@kamilah_santos

Slide 90

Slide 90 text

@kamilah_santos

Slide 91

Slide 91 text

@kamilah_santos SQS É um serviço de filas de mensagens gerenciado que possibilita o desacoplamento e a escalabilidade .

Slide 92

Slide 92 text

@kamilah_santos SQS

Slide 93

Slide 93 text

@kamilah_santos SQS

Slide 94

Slide 94 text

@kamilah_santos SQS

Slide 95

Slide 95 text

@kamilah_santos SQS

Slide 96

Slide 96 text

@kamilah_santos SNS É um serviço de mensagens para comunicação de sistema para sistema e de aplicativo para pessoa (A2P)

Slide 97

Slide 97 text

@kamilah_santos SNS

Slide 98

Slide 98 text

@kamilah_santos SNS

Slide 99

Slide 99 text

@kamilah_santos SNS

Slide 100

Slide 100 text

@kamilah_santos ELASTIC CACHE

Slide 101

Slide 101 text

@kamilah_santos

Slide 102

Slide 102 text

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