Slide 1

Slide 1 text

ESCALANDO E CONSUMINDO QUEUES &

Slide 2

Slide 2 text

MATHEUS FIDELIS Desenvolvedor Web DevOps Twitter: @fidelissauro Web: http://nanoshots.com.br Github: https://github.com/msfidelis

Slide 3

Slide 3 text

O QUE SÃO QUEUES 1

Slide 4

Slide 4 text

O QUE SÃO QUEUES ◦ Lista de itens ◦ FIFO (First In, First Out)

Slide 5

Slide 5 text

PROCESSAMENTO DE QUEUES

Slide 6

Slide 6 text

PROCESSAMENTO ASSÍNCRONO DE QUEUES

Slide 7

Slide 7 text

COMO UMA QUEUES AJUDARIAM A ESCALAR MINHA API?

Slide 8

Slide 8 text

NO QUE ISSO ME AJUDA? ◦ Processamento transparente ◦ Desacoplagem de sistemas ◦ Facil integração ◦ Comunicação uniforme ◦ “Deixa comigo e segue teu caminho”

Slide 9

Slide 9 text

“ HISTORIA DE DESACOPLAMENTO (3,2 s) { NOME: JOÃO PRODUTOS: { { item: geladeira, valor: 1200.00 } }, cc : { numero: 123123123, cvv: 123123 validade 01/08/2028 } } {status : 200}

Slide 10

Slide 10 text

“ HISTORIA DE DESACOPLAMENTO (3,2 s) {status : 200}

Slide 11

Slide 11 text

“ HISTORIA DE DESACOPLAMENTO (3,5 s) (5,9 s) (4,3 s) (3,2 s)

Slide 12

Slide 12 text

“ HISTORIA DE DESACOPLAMENTO {status : 200}

Slide 13

Slide 13 text

“ HISTORIA DE DESACOPLAMENT (20 ms) {status : 200}

Slide 14

Slide 14 text

QUE LINGUA ISSO FALA? 3

Slide 15

Slide 15 text

QUE LINGUA ISSO FALA? ◦ AMQP ▫ (Mais) Um protocolo de comunicação em rede ▫ Cria um canal virtual dentro de uma conexão TCP ▫ TCP é custoso e demorado e limitado. ▫ Canais virtuais dentro do TCP ilimitados. ▫ Muitas threads compartilham a mesma conexão TCP

Slide 16

Slide 16 text

ARQUITETURA DO AMQP ◦ Publishers e Consumers ◦ Exchanges: Onde os Publishers publicam as mensagens ◦ Routes ou Bindings: Padrões que definem a Queue destino da mensagem. ◦ Queue: Armazena as mensagens que vão ser consumidas pelos Consumers.

Slide 17

Slide 17 text

ARQUITETURA DO AMQP

Slide 18

Slide 18 text

MENSAGENS PARA O EXCHANGES ◦ Payload: Corpo da mensagem. Pode ser um JSON, um XML, uma imagem, um vídeo, uma string e etc ◦ Label: Header que descreve o Payload e pra onde ele vai ser enviado (Queue)

Slide 19

Slide 19 text

CONSUMERS E QUEUES ◦ Classico Round-Robin ◦ A queue envia a mensagem para um consumer. ◦ O consumer pega a mensagem e envia o sucesso do recebimento/execução (ACK). ◦ O servidor apaga a mensagem da fila ◦ Em caso de erro, ou sem ACK, o servidor retorna para distribuição.

Slide 20

Slide 20 text

RABBITMQ Uma mão na roda na gestão de Queues em pequena, média e larga escala.

Slide 21

Slide 21 text

QUE LINGUA ISSO FALA? ◦ RabbitMQ ▫ É um servidor de mensagens ▫ Suporte a AMQP ▫ Escrito em Erlang ▫ Open Source ▫ Minimalista ▫ Possibilidade de Distribuição ▫ API ▫ CLI ▫ Web UI https://www.rabbitmq.com/

Slide 22

Slide 22 text

Slide 23

Slide 23 text

CRIANDO UMA CONEXÃO COM O RABBITMQ $ npm install amqplib --save http://www.squaremobius.net/amqp.node/channel_api.html

Slide 24

Slide 24 text

“ CRIANDO UMA CONEXÃO COM O RABBITMQ

Slide 25

Slide 25 text

“ ENVIANDO UMA MENSAGEM SIMPLES

Slide 26

Slide 26 text

“ ENVIANDO UMA MENSAGEM SIMPLES

Slide 27

Slide 27 text

“ ENVIANDO UMA MENSAGEM SIMPLES

Slide 28

Slide 28 text

“ CONSUMINDO UMA MENSAGEM SIMPLES

Slide 29

Slide 29 text

“ CONSUMINDO UMA MENSAGEM SIMPLES

Slide 30

Slide 30 text

“ ENVIANDO VÁRIAS MENSAGENS - SIMULANDO CLIENTES

Slide 31

Slide 31 text

“ CONSUMINDO VÁRIAS MENSAGENS - SIMULANDO PROCESSAMENTO

Slide 32

Slide 32 text

ESCALANDO Como os Containers ajudam a escalar nossos consumers conforme a demanda

Slide 33

Slide 33 text

ESCALANDO CONTAINERS DE CONSUMERS ◦ Escalando sob demanda! ▫ Containers são rápidos ▫ Fácil replicação ▫ Escalar em quantidade horizontalmente ▫ Integração com ambientes de CI & CD ▫ Failover ▫ Poder ser Docker, LXC, Rocket e etc. ▫ Criar vários cenários

Slide 34

Slide 34 text

Docker ◦ Empacotador de ambientes ◦ Gerenciador de Containers LXC ESCALANDO CONTAINERS DE CONSUMERS Docker-Compose ◦ Orquestrador de Containers Docker ◦ Gerenciamento Simplista https://docs.docker.com/ https://docs.docker.com/compose/

Slide 35

Slide 35 text

“ DOCKERFILE DE BUILD

Slide 36

Slide 36 text

“ DOCKER COMPOSE COMO ORQUESTRADOR

Slide 37

Slide 37 text

FAZENDO DEPLOY DA NOSSA STACK $ docker-compose build $ docker-compose up

Slide 38

Slide 38 text

FAZENDO DEPLOY DA NOSSA STACK $ docker-compose ps

Slide 39

Slide 39 text

ESCALANDO SOB DEMANDA

Slide 40

Slide 40 text

ESCALANDO SOB DEMANDA

Slide 41

Slide 41 text

FAZENDO DEPLOY DA NOSSA STACK

Slide 42

Slide 42 text

FAZENDO DEPLOY DE 10 CONTAINERS DE CONSUMERS $ docker-compose scale consumer=10

Slide 43

Slide 43 text

FAZENDO DEPLOY DE 10 CONTAINERS DE CONSUMERS $ docker-compose ps

Slide 44

Slide 44 text

FAZENDO DEPLOY DE 10 CONTAINERS DE CONSUMERS

Slide 45

Slide 45 text

OPÇÕES MAIS AVANÇADAS DE ORQUESTRAÇÃO Docker Swarm Ferramenta de criação e orquestração de Clusters nativa do Docker. Pequena, média e grande escala. Google Kubernetes Ferramenta para gerenciamento de Clusters de Containers Docker ou Rocket. Média, grande e enorme escala. Rocket (Ou RKT) Ferramenta de orquestração de containers e clusters de CoreOS. Média, grande e enorme escala.

Slide 46

Slide 46 text

EXEMPLOS https://github.com/msfidelis/QueuesComNodeEDocker

Slide 47

Slide 47 text

Obrigado! PERGUNTAS? Contato: @fidelissauro [email protected] [email protected] https://github.com/msfidelis http://nanoshots.com.br