Comments (21)
Não saberia avaliar quanto ao sistema de busca.
Em paralelo, precisamos avaliar também o uso do Middleware
e Log Drain
na Vercel 🤝
from tabnews.com.br.
Trago os valores aqui sim... 🤝
Eu estou acompanhando e está mais ou menos como previsto. Devemos ficar abaixo dos $300 🎉
from tabnews.com.br.
O ciclo de faturamento fechou hoje e o custo veio zerado por ser menor do que os $300 de desconto. Só que, por ter fechado zerado, omitiram os valores que seriam cobrados se o desconto não existisse.
Até onde vi antes do fechamento, estava um pouco acima de $200. Vou tentar salvar os dados parciais quando estiver perto do fim do novo ciclo.
A utilização aparece assim:
Produto | Uso |
---|---|
Fast Data Transfer | 45,79 GB |
Fast Origin Transfer | 201,64 GB |
Edge Requests | 6.9M |
Edge Request CPU Duration | 10 m |
Data Cache Reads | 9.5M |
Data Cache Writes | 21M |
Function Invocations | 2M |
Function Duration | 168.6 GB-Hrs |
Edge Middleware Invocations | 4.8M |
Log Volume | 12,86 GB |
Web Analytics Events | 291K |
Bandwidth | 45,79 GB |
from tabnews.com.br.
Inclusive, sugiro a gente fazer um levantamento de todos os recursos usados na Vercel e cadastrar aqui na issue para virar histórico, para repassar isso um dia no curso.dev e depois deixar registrado como otimizamos tudo isso (pode virar conhecimento para comunidade open source).
from tabnews.com.br.
Por enquanto, fora os assentos no time, que são $ 20 por pessoa, temos pouco mais de $ 3 mensais por causa do middleware e $ 56 de Analytics. O resto ficava tudo dentro da cota do plano Pro.
O problema é que a forma de cobrança da Vercel mudou completamente nas últimas semanas, então nosso histórico não ajuda nada, pois o custo teria sido bem maior pelas novas regras e métricas. Pelo que já dá para estimar do volume atual, acredito que vamos ficar em torno dos $300 que vão dar de desconto até dezembro.
Para reduzir o custo, acho que a primeira coisa que teremos que fazer, talvez a única com impacto relevante, será mudar a forma que usamos o cache, diminuindo as revalidações baseadas em tempo e passando para revalidações sob demanda.
from tabnews.com.br.
Sobre o banco de dados, até pelas otimizações que fizemos nos últimos meses, temos boa margem para diminuir a instância. 👍
E acredito que a Revenue Share não vai aumentar muito a demanda do banco.
E o sistema próprio de busca?
O único impacto imediato seria uma diminuição das chances de sucesso no que está sendo testado em #1698, que é usar o próprio banco para a pesquisa das publicações. Diminui as chances, mas ainda pode funcionar. Só que a implementação não chegou ainda no ponto de testar, pois a funcionalidade ainda está muito inferior ao que temos hoje, que usa o Google, mas que apresenta publicidades deles.
Se a ferramenta própria exigir uma instância do banco mais cara, é melhor continuar usando o Google, pelo menos por enquanto. Quando valer a penas aumentar nosso custo para remover as propagandas do Google, pode compensar usar o plano pago do Google, que no volume de hoje custaria menos de $ 50, e sem impacto no banco de principal.
from tabnews.com.br.
Ainda estamos abaixo de $300 🎉
No relatório de uso da Vercel é possível filtrar algumas métricas por região, o que mostra que nosso maior custo já está em iad1
. Leituras e gravações de cache aparecem 100% como iad1
. Já o tráfego tem mais de 40% em regiões com o mesmo custo de iad1
.
Se estiver correto, é uma ótima notícia, pois o custo estimado fica em $294 (ou $288 se mudar para o Analytics Plus). Com isso, continuamos sem custos na Vercel pelos próximos meses, já que ficamos um pouco abaixo dos $300 que teremos de desconto. E poderemos fazer os ajustes no cache com mais calma, tomando cuidado para não prejudicar a UX.
Será que é isso mesmo? 🤔
Ainda não entendi porque o cache está todo como iad1
, sendo que a documentação diz que a cobrança é pelas regiões onde as leituras e gravações ocorrem. Nossas funções estão configuradas para rodar em gru1
, e isso deveria valer também para a região onde são executadas as funções que revalidam as páginas estáticas (getStaticProps
). E se fosse pela região de consumo do cache, estaria dividido em diferentes regiões. Tomara que não seja um bug no relatório.
Sobre a configuração para gru1
No painel da Vercel está com a configuração padrão, que é iad1
, mas essa configuração é sobrescrita para gru1
, pois é o que está definido no arquivo vercel.json
. Na página de status do TabNews também podemos confirmar que nossas funções estão em gru1
, pois é esse o valor da variável de ambiente VERCEL_REGION
.
Até subi um projeto de teste na Vercel para ler o valor da variável de ambiente VERCEL_REGION
nas diferentes situações (API e getStaticProps
). Usei a mesma configuração do TabNews, ou seja, padrão iad1
no painel, mas gru1
no vercel.json
. Nos dois ambientes a variável sempre retornou corretamente o valor gru1
. E no relatório de uso ficou como no TabNews, o cache todo em iad1
e o tráfego dividido entre as regiões. Então a dúvida permanece se é um bug no relatório ou se a documentação está errada. Parece que só vamos descobrir quando a fatura fechar no dia 29.
from tabnews.com.br.
Em paralelo, a thread no Hacker News:
https://news.ycombinator.com/item?id=40682711
E isso me chamou atenção:
https://news.ycombinator.com/item?id=40685579
from tabnews.com.br.
Possível alternativa para migração (Coolify)
Recentemente me deparei com o projeto Coolify no GitHub (https://github.com/coollabsio/coolify). Promete ser uma substituição self-hosted e open-source da Vercel. Muito massa!
from tabnews.com.br.
Edge Requests | 6.9M
Edge Middleware Invocations | 4.8M
Não sei qual a diferença entre os dois, mas doidera demais esses valores.
Fast Origin Transfer | 201,64 GB
Como que a gente pode tá transferindo tantos GB
?
Em paralelo, até hoje eu tenho problema de entrar numa página e não conseguir pegar o cache dela atualizado :( Inclusive me fez criar o costume de nunca confiar numa página ao entrar, eu sempre espero alguns segundos e dou refresh uma ou duas vezes (por exemplo, se vejo que na lista apareceu que tem comentário, mas dentro não mostra nada).
from tabnews.com.br.
@filipedeschamps devido ao fluxo de trabalho, ando bem afastado do projeto. Mas, pensando como empresário, acredito que seja necessário uma parceria com algum host de forma "real", colocando um logo no rodapé e criando uma página explicando que ele é um patrocinador da infraestrutura do projeto.
Não vejo nenhum problema em ter um parceiro estratégico para um projeto de código aberto. É bem comum algumas empresas quererem patrocinar projetos de código aberto.
Nesse caso, a troca seria a visibilidade e a possibilidade de novos clientes.
Fora o Tabnews, acredito que você pode ter essa parceria de forma clara no curso.dev, até porque você recomenda a Vercel em algumas aulas.
from tabnews.com.br.
Aproveitando o assunto de Analytics, recebi uma notificação hoje sobre uma discussão que estou inscrito. Agora é possível exportar os Analytics da Vercel em um CSV: https://vercel.com/changelog/csv-export-in-web-analytics
from tabnews.com.br.
Levantei o volume de uso dos recursos da Vercel nos últimos 30 dias, ordenados do maior custo estimado para o menor. O ideal seria fazer uma média do uso nos últimos meses, mas os novos custos são baseados em métricas que antes não eram fornecidas.
Os valores mudam de acordo com a região, então estou estimando com os valores do Brasil (gru1), que é um dos mais caros. Ainda não recebemos faturas no novo padrão, pois ele só passou a valer em 25 de maio.
Recurso | Últimos 30 dias | Cota inicial | Unidade adicional | Valor em gru1 (USD) | Total (USD) | Observações |
---|---|---|---|---|---|---|
Data Cache Writes | 24M | 2M | 1M | 6,40 | 140,80 | Novo |
Fast Origin Transfer | 284GB | 100GB | 1GB | 0,41 | 75,44 | Novo |
Web Analytics Events | 326k | 25k | 100k | 14,00 | 56,00 | |
Team seats | 2 | - | 1 | 20,00 | 40,00 | |
Log Drains | 14GB | - | 5GB | 10,00 | 30,00 | Novo |
Fast Data Transfer | 45GB | 1GB | 1GB | 0,44 | 21,56 | Novo |
Edge Middleware Invocation | 6M | 1M | 1M | 2,40 | 12,00 | Quase quadruplicou o custo |
Data Cache Reads | 13M | 10M | 1M | 0,64 | 1,92 | Novo |
Function Invocations | 2M | 1M | 1M | 0,60 | 0,60 | Novo |
Edge Requests | 8M | 10M | 1M | 3,20 | 0,00 | Novo |
Edge Request CPU Duration | 8 minutos | 1 hora | 1 hora | 0,48 | 0,00 | Novo |
Function Duration | 160GB-Hour | 1.000GB-Hour | 1 GB-Hour | 0,18 | 0,00 | |
Total estimado | 378,32 |
Middleware
Mesmo tendo quase quadruplicado o valor, ela nos protege de uma forma que só seria possível em planos mais caros da Vercel e/ou da Cloudflare, então não deve compensar mudar isso.
Analytics
Analytics não mudou a forma de cobrança, mas no nosso volume já compensa trocar para o plano de $ 50, pois tem 500k eventos inclusos, o que talvez permita incluir de novo os eventos da Home. E se passar de 500k, são $20 para os próximos 500k eventos.
Pode ser que outros serviços sejam um pouco mais baratos, mas podem não funcionar corretamente com o Next.js, pois tem que contar navegações SPA e diretas junto, e não deve computar as requisições de prefetch.
Dreno dos logs
Dá para desativar o dreno automático da Vercel e enviar os logs tudo via requisições usando a biblioteca next-axiom
. Nesse caso entrará no custo de transferência de dados, que é bem menor do que do dreno, mas pode impactar no tempo de resposta das requisições.
Outro caminho, que parece menos interessante, é configurar para a Vercel enviar apenas uma amostragem, ou seja, enviar uma certa porcentagem dos logs. Se enviar apenas 30%, já fica dentro da primeira faixa de 5GB por $ 10, e os 30% são suficientes para analisar o funcionamento normal do sistema, mas em caso de falhas isoladas nós podemos ficar sem logs.
Cache
Cache é por onde acho melhor começar, pois representa a maior parte do custo, então é o que mais tem potencial de redução. Diminuir as revalidações, além de reduzir as "Data Cache Writes", reduz também a "Fast Origin Transfer", que são os dados trafegados entre as lambdas e a edge, ou seja, diminui os dois itens de maior custo.
Região gru1 vs iad1
Outra possibilidade de redução de custos seria mudar nossos servidores para os Estados Unidos. Como o cache é na Edge, continuaríamos com as páginas estáticas sendo carregadas no mesmo tempo, pelo menos as que já estiverem em cache. O impacto mesmo seria na API, mas possivelmente seria um impacto mínimo.
Fiz um comparativo de valores onde ocultei os itens que tem o mesmo preço nas duas regiões. Fica visível que, se reduzirmos bastante os dois primeiros custos, não seria muito vantajoso mudar para iad1. Isso, é claro, olhando apenas para a Vercel. Como o banco de dados teria que migrar junto, também representa uma redução nos custos que deve ser considerada na decisão.
Métrica | Valor gru1 (USD) | Valor iad1 (USD) | Total gru1 (USD) | Total iad1 (USD) |
---|---|---|---|---|
Data Cache Writes | 6,40 | 4,00 | 140,80 | 88,00 |
Fast Origin Transfer | 0,41 | 0,06 | 75,44 | 11,04 |
Fast Data Transfer | 0,44 | 0,15 | 21,56 | 7,35 |
Edge Middleware Invocation | 2,40 | 1,50 | 12,00 | 7,50 |
Data Cache Reads | 0,64 | 0,40 | 1,92 | 1,20 |
Edge Requests | 3,20 | 2,00 | 0,00 | 0,00 |
Edge Request CPU Duration | 0,48 | 0,30 | 0,00 | 0,00 |
Total que não depende da região | 126,60 | 126,60 | ||
Total estimado | 378,32 | 241,69 |
from tabnews.com.br.
Ótimas tabelas!
Como o banco de dados teria que migrar junto, também representa uma redução nos custos que deve ser considerada na decisão.
Considerando que já estava nos planos (#1172), é uma opção viável.
Como o Filipe mencionou avaliar uma redução na instância do banco, quero compartilhar essa thread do Hacker News que fala sobre como tirar um melhor proveito das configurações de memória do PostgreSQL. Não sei qual é o nosso gargalo, mas na thread e no artigo mencionam algumas configurações, além do uso do REINDEX
.
from tabnews.com.br.
Outras alternativas:
CapRover: https://www.youtube.com/watch?v=2d2U8tRBFyM
Dockploy: https://www.youtube.com/watch?v=QAQyRyUXfMs
Kubero: https://www.youtube.com/watch?v=3hvdqQoxU70
from tabnews.com.br.
Apenas para deixar registrado:
@aprendendofelipe depois quando fechar o billing cycle, seria legal se você trouxesse alguns prints da interface lá da Vercel com o uso
from tabnews.com.br.
Edge Requests | 6.9M Edge Middleware Invocations | 4.8M
Não sei qual a diferença entre os dois, mas doidera demais esses valores.
Um é o total de requisições e o outro é apenas o que deu match com /((?!_next/static|va/|favicon|manifest).*)
.
Fast Origin Transfer | 201,64 GB
Como que a gente pode tá transferindo tantos
GB
?
Cada atualização de cache é replicada para diferentes partes da Edge. A estratégia atual de ficar revalidando mesmo se nada mudou acaba fazendo o tráfego de Vercel para Vercel ser maior do que da Vercel para os Clients.
Em paralelo, até hoje eu tenho problema de entrar numa página e não conseguir pegar o cache dela atualizado :( Inclusive me fez criar o costume de nunca confiar numa página ao entrar, eu sempre espero alguns segundos e dou refresh uma ou duas vezes (por exemplo, se vejo que na lista apareceu que tem comentário, mas dentro não mostra nada).
Dado que o custo de ficar revalidando o cache a todo momento ficou inviável, vamos precisar revalidar apenas as páginas que mudarem, o que implica já revalidar tudo que for necessário quando algo mudar, então não devemos ter mais inconsistências devido ao cache desatualizado. Bom, ainda vai acontecer para quem usa a API, mas não mais nas páginas estáticas.
from tabnews.com.br.
Complementando sobre o total de requisições...
Aquele é o número que chegou na Vercel (com ou sem cache da Vercel), mas o total de requisições atendidas pela Cloudflare é um pouco maior, pois também tem o nível de cache deles.
Nos últimos 30 dias a Cloudflare atendeu 7.91M de requisições. Não é exatamente o mesmo intervalo de tempo, mas serve como comparação.
from tabnews.com.br.
Mais informações sobre o Coolify
(é bem interessante mesmo):
https://www.youtube.com/watch?v=SANSysQlS18
https://www.youtube.com/watch?v=ZZ1lnw8D3Qo
Outra alternativa:
from tabnews.com.br.
Outras alternativas:
CapRover: https://www.youtube.com/watch?v=2d2U8tRBFyM
tenho um servidor rodando esse: https://easypanel.io/
from tabnews.com.br.
Related Issues (20)
- Não é possível editar ou apagar um conteúdo usando apenas o teclado HOT 1
- Tela de Insight dos Posts e Perfil HOT 1
- Pesquisa de conteúdo HOT 1
- Bloquear cadastro com senhas fracas HOT 7
- Marcar um comentário como resposta? HOT 7
- Melhorar a Exibição de Erros de Autenticação HOT 4
- Melhorar processamento dos comentários HOT 2
- havera uma versão em inglês ? HOT 2
- Implementação do pubsubhubbub na RSS
- Adicionar funcionalidade de Favoritar os posts HOT 1
- Tabnews: múltiplos logins associados ao mesmo endereço Gmail. Detalhes na descrição. HOT 3
- Mensagem de erro ao tentar publicar novo conteúdo HOT 7
- Campo `description` em algumas páginas causa resultados inadequados no Google HOT 3
- Posso implementar a opção de Login com github? HOT 2
- Latex em publicações HOT 1
- Página de anúncio tem link para o próprio anúncio HOT 2
- Limitar anúncios ativos por usuário HOT 10
- Implementação de categorização de posts HOT 1
- Forçar usuário a comentar quando tentar negativar post HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tabnews.com.br.