# queue-advisor-pricing-app

Compare SQS, Kinesis, EventBridge e MSK por custo e encaixe antes de escolher a fila

- URL: https://fernando.moretes.com/open-source/queue-advisor-pricing-app

- Markdown: https://fernando.moretes.com/open-source/queue-advisor-pricing-app/guide.md?lang=pt

- GitHub: https://github.com/fernando-moretes/app-queue-advisor-pricing

- Homepage: https://queue.moretes.com

- Language: TypeScript

- Topics: aws, eventbridge, finops, kinesis, messaging, moretes, portfolio, pricing, pricing-calculator, sqs, typescript, vercel

- Stars: 1

- Forks: 0

- Updated: 2026-09-11T00:43:54Z

---

QueueAdvisor é uma aplicação Next.js que compara SQS, Kinesis, EventBridge e MSK lado a lado — custo estimado e encaixe técnico — a partir da sua vazão e da sua retenção, para que a escolha do serviço de mensageria seja feita com número na mesa e não com preferência de quem já usou um deles.

## Por que este repositório existe

A pergunta que mais ouvi em desenho de arquitetura não foi "qual fila usar?" — foi "quanto vai custar isso daqui a um ano, quando o volume for dez vezes maior?". Os quatro serviços de mensageria da AWS respondem a essa pergunta com modelos de cobrança diferentes, e é aí que a comparação de cabeça falha.

**SQS** cobra por milhão de requisições, com cada 64 KB de payload contando como uma requisição. **Kinesis Data Streams** cobra por shard-hora (ou por GB ingerido no modo on-demand) mais retenção estendida acima de 24 horas. **EventBridge** cobra por milhão de eventos publicados no barramento customizado. **MSK** cobra por broker-hora e por GB-mês de armazenamento, esteja o cluster ocupado ou não. Quatro unidades, quatro curvas: uma é linear com o número de mensagens, outra é degrau com o número de shards, outra é quase fixa independente do tráfego.

Eu já vi decisão tomada com base no preço de uma planilha de três meses atrás — e a conta chegar diferente porque ninguém contou o tamanho médio da mensagem. Este repositório existe para transformar essa conta num formulário: você informa vazão, tamanho de mensagem e retenção, a aplicação aplica o modelo de preço de cada serviço e mostra os quatro resultados na mesma tela. O objetivo não é substituir a AWS Pricing Calculator; é responder, em menos de um minuto, em que faixa de volume cada serviço deixa de fazer sentido.

## O que a ferramenta entrega

- **Comparação lado a lado:** SQS, Kinesis, EventBridge e MSK na mesma tela, com as mesmas entradas — sem abrir quatro abas da calculadora da AWS.
- **Simulação por uso:** o custo estimado reage à vazão, ao tamanho de mensagem e à retenção que você informa, e não a um cenário fixo.
- **Orientação de decisão:** além do número, a ferramenta sinaliza o encaixe técnico — ordenação, replay, fan-out, consumidor único ou múltiplo.
- **Sem backend, sem credencial:** é uma aplicação estática em Next.js + TypeScript + Tailwind; nada sai do navegador.
- **MIT e público:** o modelo de cálculo está no código, aberto para conferência e para pull request quando a AWS mudar uma tarifa.

## Como o fluxo funciona

Da entrada do arquiteto até a recomendação: tudo roda no cliente, a Vercel só serve os arquivos.

### ▲ Vercel — Next.js app

- Formulário msg/s · KB · dias (frontend)
- Modelo de preço TypeScript, por serviço (compute)
- Regras de encaixe ordenação · replay · fan-out (compute)
- Tabela comparativa custo/mês + veredito (frontend)

### 🟧 AWS — serviços comparados

- SQS por milhão de req (messaging)
- Kinesis shard-hora / GB (messaging)
- EventBridge por milhão de eventos (messaging)
- MSK broker-hora + GB-mês (messaging)

### Fluxos

- user -> form: preenche
- form -> model: parâmetros
- form -> fit: requisitos
- model -> table: custo estimado
- fit -> table: encaixe
- model -> sqs: tarifa pública
- model -> kinesis: tarifa pública
- model -> eb: tarifa pública
- model -> msk: tarifa pública

## Como a comparação é construída

A aplicação é um formulário e um modelo de cálculo em TypeScript. Não há chamada à API de preços da AWS em tempo de execução — as tarifas são constantes no código, o que mantém a ferramenta estática, rápida e sem credencial, com o custo de manutenção que vem junto: alguém precisa atualizar a constante quando a AWS muda a tabela.

**Entradas:** mensagens por segundo, tamanho médio da mensagem em KB, dias de retenção e, para o encaixe, o que a carga exige — ordenação estrita, replay de mensagens antigas, mais de um consumidor lendo o mesmo evento.

**Custo:** cada serviço tem sua própria função. Para SQS, o modelo converte vazão em requisições por mês e arredonda o payload para cima em blocos de 64 KB — é esse arredondamento que faz mensagem de 70 KB custar o dobro de mensagem de 64 KB. Para Kinesis, calcula o número de shards pelo maior entre `1 MB/s` de escrita e `1.000 registros/s` por shard, multiplica por shard-hora e soma a retenção acima de 24 h. Para EventBridge, é evento por milhão, com o limite de payload de 256 KB como restrição, não como custo. Para MSK, é broker-hora vezes o número de brokers mais GB-mês de armazenamento — o custo fixo que domina em volume baixo.

**Encaixe:** regras simples marcam o que cada serviço não faz. SQS padrão não garante ordem; SQS FIFO garante, mas com teto de vazão por grupo. Kinesis e MSK permitem replay dentro da retenção; SQS não. EventBridge entrega para vários alvos por regra; SQS entrega para um consumidor por mensagem.

O resultado é uma tabela: quatro colunas, custo mensal estimado e sinalização de encaixe. A tabela não decide por você — ela remove da conversa a parte que é aritmética.

## Instalar e usar

1. **Use a versão publicada ou clone** — Para uma comparação rápida, abra `https://queue.moretes.com` — não precisa instalar nada. Para alterar tarifas ou regras, clone `github.com/fernando-moretes/app-queue-advisor-pricing`.

2. **Instale as dependências com pnpm** — O projeto usa `pnpm`. Rode `pnpm install` na raiz; Node 20 ou superior é o que o Next.js atual espera.

3. **Suba o servidor de desenvolvimento** — `pnpm dev` abre a aplicação em `http://localhost:3000`. Não há variável de ambiente nem credencial AWS envolvida.

4. **Informe o cenário** — Preencha vazão em mensagens por segundo, tamanho médio em KB e retenção em dias. Marque os requisitos — ordenação, replay, múltiplos consumidores — se a carga exigir.

5. **Leia a tabela e teste o dobro** — Compare o custo mensal e as bandeiras de encaixe. Depois dobre a vazão e veja qual serviço muda de degrau — é aí que a decisão fica visível.

6. **Ajuste uma tarifa e abra um PR** — Se a AWS mudou um preço, edite a constante do serviço no modelo, rode `pnpm build` para conferir o typecheck e abra um pull request com a URL da página de preços no corpo.

_Quickstart local_

```bash
git clone https://github.com/fernando-moretes/app-queue-advisor-pricing.git
cd app-queue-advisor-pricing

pnpm install
pnpm dev        # http://localhost:3000

# antes de abrir PR / before opening a PR
pnpm build
```

> **Estimativa, não fatura:** As tarifas no código são as públicas de uma região e de uma data; a AWS muda tabela sem aviso e o free tier, o Savings Plan e o tráfego entre AZs não entram na conta. Use o resultado para eliminar opções e ordenar as que sobram — feche o número final na AWS Pricing Calculator com a região e a conta reais.

## Como ler o resultado sem se enganar

Três coisas aprendi usando esta ferramenta em revisão de arquitetura.

**O custo mais baixo raramente é a resposta.** Em 100 mensagens por segundo com payload de 4 KB, SQS costuma sair mais barato que qualquer outro — e é a escolha errada se você precisa reprocessar as últimas 24 horas depois de um deploy quebrado. A coluna de encaixe existe para isso: um serviço marcado como sem replay não deveria ganhar por preço.

**O tamanho da mensagem importa mais que a vazão.** O modelo do SQS arredonda para blocos de 64 KB; o do Kinesis conta shards por MB/s. Uma carga de 50 mensagens por segundo com 200 KB cada custa, em requisições SQS, o mesmo que 200 mensagens por segundo de 50 KB. Quem só informa "mensagens por segundo" subestima a conta.

**Custo fixo vira vantagem em volume alto.** MSK parece caro em 10 mensagens por segundo porque o broker-hora não sabe se está ocioso. Em 20.000 mensagens por segundo com retenção de 7 dias, a mesma conta fixa fica atrás do Kinesis on-demand — e é aí que vale ter os quatro na mesma tela, com o mesmo cenário, e não quatro estimativas feitas em dias diferentes.

A ferramenta não substitui o desenho de arquitetura. Ela substitui a parte do desenho que era planilha.

## Perguntas frequentes

### A ferramenta consulta a API de preços da AWS?

Não. As tarifas são constantes no código TypeScript, o que mantém a aplicação estática e sem credencial. O custo disso é manutenção manual quando a AWS muda a tabela — por isso o repositório é público e aceita PR.

### Por que MSK aparece tão caro em volume baixo?

Porque MSK cobra por broker-hora e por GB-mês, esteja o cluster ocupado ou não. Em 10 mensagens por segundo você paga o cluster inteiro para quase nada. A curva só cruza a dos serviços por uso em vazão alta com retenção longa.

### Posso usar o resultado como orçamento oficial?

Não. Use para eliminar opções e ordenar as restantes. Free tier, Savings Plans, tráfego entre AZs e diferenças por região ficam fora do modelo. O número final sai da AWS Pricing Calculator com a região e a conta reais.

### O README ainda aponta para `fernandofatech/queue-advisor-pricing-app`. Qual é o repositório certo?

O atual é `fernando-moretes/app-queue-advisor-pricing`; o antigo redireciona. Clone pelo nome novo para não depender do redirecionamento do GitHub.

## Referências

- [fernando-moretes/app-queue-advisor-pricing (GitHub)](https://github.com/fernando-moretes/app-queue-advisor-pricing)
- [QueueAdvisor — queue.moretes.com](https://queue.moretes.com)
- [Amazon SQS pricing](https://aws.amazon.com/sqs/pricing/)
- [Amazon Kinesis Data Streams pricing](https://aws.amazon.com/kinesis/data-streams/pricing/)
- [Amazon EventBridge pricing](https://aws.amazon.com/eventbridge/pricing/)
- [Amazon MSK pricing](https://aws.amazon.com/msk/pricing/)
- [AWS Pricing Calculator](https://calculator.aws/)

## Quando usar

Use o QueueAdvisor quando: você está entre dois ou mais serviços de mensageria da AWS, tem uma estimativa honesta de vazão, tamanho de mensagem e retenção, e precisa mostrar em reunião por que uma opção sai da mesa. Não use como orçamento final nem como substituto do desenho — ele não sabe sua região, seu Savings Plan nem quem opera o cluster às 2h da manhã. Ele responde uma pergunta só, e responde bem: em que faixa de volume cada serviço deixa de fazer sentido.

## Links

- [GitHub repository](https://github.com/fernando-moretes/app-queue-advisor-pricing)
- [Homepage](https://queue.moretes.com)
