-
Notifications
You must be signed in to change notification settings - Fork 389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Encerramento da parceria com a Vercel #1724
Comments
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). |
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. |
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. |
Não saberia avaliar quanto ao sistema de busca. Em paralelo, precisamos avaliar também o uso do |
@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. |
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 |
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.
MiddlewareMesmo 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. AnalyticsAnalytics 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 logsDá para desativar o dreno automático da Vercel e enviar os logs tudo via requisições usando a biblioteca 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. CacheCache é 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 iad1Outra 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.
|
Ótimas tabelas!
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 |
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 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 Sobre a configuração para
|
Em paralelo, a thread no Hacker News: https://news.ycombinator.com/item?id=40682711 E isso me chamou atenção: |
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! |
Mais informações sobre o https://www.youtube.com/watch?v=SANSysQlS18 https://www.youtube.com/watch?v=ZZ1lnw8D3Qo Outra alternativa: |
Outras alternativas: CapRover: https://www.youtube.com/watch?v=2d2U8tRBFyM |
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 |
Trago os valores aqui sim... 🤝 Eu estou acompanhando e está mais ou menos como previsto. Devemos ficar abaixo dos $300 🎉 |
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:
|
Não sei qual a diferença entre os dois, mas doidera demais esses valores.
Como que a gente pode tá transferindo tantos 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). |
Um é o total de requisições e o outro é apenas o que deu match com
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.
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. |
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. |
tenho um servidor rodando esse: https://easypanel.io/ |
Nossos custos com a Vercel em Analytics, em Junho, foram de US$ 56 (#1724 (comment)), isso porque não coletamos eventos na página principal e na
Uma alternativa super simples para diminuir esse custo é usar o Web Analytics Plus, que custa US$ 50, mas contém 500 mil eventos inclusos, então só de ativar já teríamos uma economia, caso todos os meses tenham mais de 325k visitas. Não tenho certeza se é simples assim porque, se for, parece não fazer nenhum sentido usar o Web Analytics normal no plano Pro gerando 325k à 500k eventos. Outra outra plataforma, como o Tinybird. A Vercel usa o Tinybird para analytics. Eu fiz alguns testes e publiquei uma comparação da Vercel x Tinybird no TabNews: Criei uma API para substituir o Vercel Analytics. Pelas minhas estimativas, é possível economizar usando o Tinybird, além de ter uma flexibilidade maior sobre quais dados coletar, por quanto tempo armazenar e, principalmente, testar aos poucos. O custo do Tinybird não será uma nova conta de US$ 50 assim que decidirmos usar, pois ele cobra por armazenamento e processamento de dados. Isso permite usarmos o Tinybird lado a lado do Analytics da Vercel para conseguir estimar os custos no nível de consumo do TabNews, e também desativar o Tinybird a qualquer momento sem pagar uma conta alta. Acredito que as proteções que precisaremos no endpoint de coleta de analytics seriam as mesmas que já precisamos hoje, para não abrir a torneira de custos da Vercel. O risco de testar o Tinybird é baixo, e o custo inicial iria para o lado do tempo de desenvolvimento da solução. Também existe a opção de usar um banco de dados sem adicionar mais uma plataforma, ou seja, usar diretamente o nosso banco na AWS. Imagino que isso seja ainda melhor do que usar o Tinybird, mas aqui já não tenho familiaridade para estimar custos; talvez outra pessoa possa confirmar se faz sentido. A implementação deve ser parecida com o que seria necessário para implementar o Tinybird, mudando apenas a parte de leitura e escrita no banco, e também a agregação de dados para consumir menos recursos (no Tinybird, isso se dá por meio de materialized views). Outro ponto positivo de nós termos esse tipo de solução mais flexível é que a mesma solução poderia ser usada para contar visitas em publicações (#1115). |
Eu refleti e pesquisei sobre como são as revalidações sob demanda. Usando o Pages Router, parece que a forma de fazer isso é chamando Se formos considerar a página Relevantes, que dificilmente existem mais do que 5 páginas, então uma forma simples inicial seria revalidar apenas X páginas quando alguma ação específica ocorre. Porém, são várias as ações que podem demandar a revalidação: novo conteúdo, voto, mudança de título da publicação, mudança de slug, remoção do conteúdo, banimento de usuário, mudança de nome do usuário e talvez outras coisas. Além disso, o tempo também influencia na posição das publicações relevantes. Não tenho certeza se é possível utilizar os dois tipos de revalidação na mesma página porque o comportamento no cache miss é diferente. Em páginas de usuários ou das próprias publicações, é mais simples, mas ainda existem várias ações que demandam a revalidação. Acho que as páginas de conteúdos seriam as "mais simples" dentre as que podem ter um impacto relevante na métrica Data Cache Writes. O App Router tem algumas facilidades para a revalidação, como as funções Na documentação do App Router, tem um artigo bem extenso sobre o assunto e que inclui vários diagramas exemplificando as situações possíveis: Building Your Application: Caching (cache miss, hit, stale, fetches etc.). É esse o caminho mesmo? É tanta coisa a considerar que não parece certo 🤔 Aproveitando, é possível estimar o quanto o De vez em quando eu navego para uma página e a página anterior "recarrega" como se eu tivesse visitado ela novamente, não sei se é algum efeito colateral de quando o |
Vercel vs Cloudflare |
To com uma baita vontade de subir uma infra própria, banco local, só pra ver o que vai dar. Fico imaginando que máquina conseguimos numa |
Free tier cloudflare |
Self-Hosting Next.js |
Descrição
Recebi o seguinte email da Vercel:
Não tenho interesse em continuar com a parceria, pois não estamos oferecendo nenhum retorno e provavelmente não iremos fornecer.
Sugestão de implementação
@aprendendofelipe @Rafatcb precisaremos atuar de forma rápida para levantar quais recursos estamos estourando lá na conta da Vercel, fazer uma força-tarefa para otimizar isso ou até remover por completo o uso (como o Analytics, que a gente poderia arranjar uma solução final).
Não faria mal avaliar a redução da instância do banco na AWS, que hoje estamos usando
db.t4g.medium
e que está nos custando em médiaUSD 172
ouBRL 923
(totalizando aproximadamenteBRL 11.000
) anuais.The text was updated successfully, but these errors were encountered: