Title: Desenvolvimento de Software / NATS
Tags: Desenvolvimento_de_Software Resumo
On every note of this deck, unless a note says otherwise:
tldr: - NATS é um Message Oriented Middleware (MoM) para sistemas distribuídos modernos, focado em conectividade em tempo real, mensageria e microsserviços; servidor opera tipicamente em TCP 4222.
- Diferenciais:
- Endereçamento/descoberta por “assuntos” (subjects) em vez de IP/host/porta
- Conectividade M:N por padrão (do simples 1:1 ao complexo muitos-para-muitos)
- Clientes não precisam mudar/reiniciar quando o deployment do NATS muda (baixo acoplamento)
- Subjects:
- São strings (geralmente ASCII) com hierarquia por . (ex.: autarquia.brasil.sul)
- Consumidores podem usar wildcards:
  - * (um token): ex. autarquia.*.sul
  - > (vários tokens, só no fim): ex. autarquia.brasil.>
- Publicadores devem publicar no subject completo (sem curingas).
- Pub/Sub e mensagem:
- Publicador envia para um subject; consumidores inscritos recebem
- Mensagem inclui: subject, payload (bytes), headers, e reply-to opcional (habilita request-reply)
- Limite padrão de payload 1MB (configurável até 64MB; recomendado ≤ 8MB)
- Queue Groups (grupos de fila):
- Sem fila: fan-out 1:N (todos recebem)
- Com queue group: apenas um consumidor do grupo recebe cada mensagem (balanceamento de carga nativo)
- JetStream:
- Camada nativa de persistência/streams no NATS, com retenção, replay e controle de consumo
- Define limites (tempo, tamanho, qtd mensagens, tamanho por mensagem, etc.) e política de descarte (remover mais antigo/mais novo)
- Suporta replicação (número de cópias em nós) e armazenamento como key-value ou objetos
- Mapeamento de assuntos (subject mapping):
- Redireciona mensagens de um subject para outro (útil em canary, A/B, migração)
- Pode usar pesos para dividir tráfego (ex.: 98% v1 / 2% v2)
link: https://documentacao.online/estudos/z8ps.html

front: (Inédita/Prof. ) Assinale a alternativa que apresenta um sistema de mensageria com encaminhamento de mensagens e descoberta de nós baseada em assuntos (subjects):
a) ActiveMQ
b) RabbitMQ
c) Apache Kafka
d) NATS
response: Alternativa D
comment: Das alternativas apresentadas, o único que apresenta essa abordagem é o NATS. (Gabarito: Letra D)
title: NATS
Other fields (not shown on cards):
back: Alternativa D - Das alternativas apresentadas, o único que apresenta essa abordagem é o NATS. (Gabarito: Letra D)

front: (Inédita/Prof. ) A empresa XPTO deseja adicionar uma camada de persistência no seu sistema de mensageria, armazenando mensagens de destaque no formato chave-valor. Como a empresa utiliza o sistema NATS para controlar a comunicação no seu sistema distribuído, o componente a ser utilizado para garantir a persistência é o/a:
a) JetData
b) DataFlow
c) DataStream
d) JetStream
e) JetStore
response: Alternativa D
comment: A ferramenta responsável por adicionar uma camada de persistência aos dados, criando um diferencial para sistemas de mensageria tradicional, é o JetStream. (Gabarito: Letra D)
title: NATS
Other fields (not shown on cards):
back: Alternativa D - A ferramenta responsável por adicionar uma camada de persistência aos dados, criando um diferencial para sistemas de mensageria tradicional, é o JetStream. (Gabarito: Letra D)

front: (Inédita/Prof. ) Um desenvolvedor estava operando um sistema de mensageria desenvolvido em MAPS e se deparou com a seguinte linha de código: acompanhamento.sul:acompanhamento.centro Sobre essa linha, é correto afirmar que ela está fazendo uma operação de mapeamento, direcionando as mensagens de acompanhamento.sul também para acompanhamento.centro.
response: Correto
comment: myservice.requests: [ { destination: myservice.requests.v1, weight: 98% }, { destination: myservice.requests.v2, weight: 2% } ] Perfeito! O uso dos dois pontos indica uma operação de mapeamento, em que encaminhamos uma mensagem de um broker para outro. (Gabarito: Certo)
title: NATS
Other fields (not shown on cards):
back: Correto - myservice.requests: [ { destination: myservice.requests.v1, weight: 98% }, { destination: myservice.requests.v2, weight: 2% } ] Perfeito! O uso dos dois pontos indica uma operação de mapeamento, em que encaminhamos uma mensagem de um broker para outro. (Gabarito: Certo)

front: (Inédita/Prof. ) Julgue a afirmativa abaixo, acerca dos conhecimentos do NATS (Neural Atomic Transport System). O NATS é um sistema de mensageria, que atua tanto no padrão pub-sub, quanto no padrão point- to-point.
response: Correto
comment: Perfeito! O NATS é um sistema de mensageria altamente escalável, com ambos os modelos de mensageria - pub/sub, a abordagem mais tradicional, e p2p, através de um modelo de request/response.
title: NATS
Other fields (not shown on cards):
back: Correto - Perfeito! O NATS é um sistema de mensageria altamente escalável, com ambos os modelos de mensageria - pub/sub, a abordagem mais tradicional, e p2p, através de um modelo de request/response.

front: (Inédita/Prof. ) Julgue a afirmativa abaixo, acerca dos conhecimentos do NATS (Neural Atomic Transport System). O NATS mantém um registro de todas as mensagens que passaram pelo seu broker.
response: Errado
comment: Cuidado, o NATS utiliza um sistema chamado de “fire and forget”, ou disparar e esquecer. Nele, as mensagens são apagadas assim que entregue ao usuário final. Portanto, incorreta a afirmativa.
title: NATS
Other fields (not shown on cards):
back: Errado - Cuidado, o NATS utiliza um sistema chamado de “fire and forget”, ou disparar e esquecer. Nele, as mensagens são apagadas assim que entregue ao usuário final. Portanto, incorreta a afirmativa.