Coder Social home page Coder Social logo

Comments (21)

filipedeschamps avatar filipedeschamps commented on August 28, 2024 3

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.

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 3

Trago os valores aqui sim... 🤝

Eu estou acompanhando e está mais ou menos como previsto. Devemos ficar abaixo dos $300 🎉

from tabnews.com.br.

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 3

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.

filipedeschamps avatar filipedeschamps commented on August 28, 2024 2

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.

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 2

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.

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 2

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.

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 2

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.

filipedeschamps avatar filipedeschamps commented on August 28, 2024 2

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.

EduContin avatar EduContin commented on August 28, 2024 2

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.

filipedeschamps avatar filipedeschamps commented on August 28, 2024 2
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.

rodrigoKulb avatar rodrigoKulb commented on August 28, 2024 1

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

Rafatcb avatar Rafatcb commented on August 28, 2024 1

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.

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 1

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.

Rafatcb avatar Rafatcb commented on August 28, 2024 1

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

repires avatar repires commented on August 28, 2024 1

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.

filipedeschamps avatar filipedeschamps commented on August 28, 2024 1

Apenas para deixar registrado:

image

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

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 1
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.

aprendendofelipe avatar aprendendofelipe commented on August 28, 2024 1

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.

filipedeschamps avatar filipedeschamps commented on August 28, 2024

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:

https://sst.dev/

from tabnews.com.br.

felipechiodini avatar felipechiodini commented on August 28, 2024

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

tenho um servidor rodando esse: https://easypanel.io/

from tabnews.com.br.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.