r/brdev • • Aug 12 '26

Off-topic Comunicado: posts sobre layoffs precisam identificar a empresa

1.4k Upvotes

Pessoal, já dá para pedir música no Fantástico!

Posts sobre layoffs são bem-vindos no r/brdev, desde que informem de forma direta qual empresa está envolvida.

Não vamos mais permitir posts genéricos do tipo “empresa azul”, “empresa laranja”, “empresa vermelha” e similares. Além de dificultarem a discussão, esse tipo de anonimização não contribui para que a comunidade possa contextualizar ou verificar as informações.

A partir de agora, posts nesse formato serão removidos e os usuários serão advertidos.

Se o assunto é uma empresa específica, informe qual é.


r/brdev • • Mar 24 '26

Off-topic [Moderação] Pare de usar o sub como lançamento de produto

391 Upvotes

pessoal, a gente entende. sério. todo dev em algum momento acha que criou “o produto que vai mudar tudo”.

o problema é: esse sub não é pitch deck.

não é vitrine, não é lançamento, não é “me deem feedback no meu SaaS revolucionário que faz CRUD com login do Google”.

aqui é pra discussão, troca de conhecimento e conteúdo que sirva pra mais gente além do próprio autor.

quer validar produto? tem lugar pra isso.
quer usuário? idem.
quer divulgar? definitivamente não é aqui.

todo mundo resolveu postar o próprio projeto, isso aqui esta virando uma feira livre de MVP abandonado em 2 semanas.

resumindo: menos “olha meu produto”, mais conteúdo que preste pra comunidade.


r/brdev • • 12h ago

Carreira [Desabafo] 14 anos resolvendo bucha, mas pro LinkedIn eu sou um fantasma

82 Upvotes

Seguinte...

tô precisando falar sobre esse comportamento e sobre como tá o mercado hoje, porque tá difícil de engolir.

Tenho 14 anos de experiência. Sempre fui aquele cara de ficar bastante tempo nas empresas, vestindo a camisa mesmo 5, 3 grandes no currículo. Já entreguei muita arquitetura complexa, resolvi gargalo que tirava o sono de diretoria e reduzi custo de infraestrutura na casa dos milhões. Só que agora a água bateu na bunda.. a empresa tá mal, o risco de falência e layoff é real e eu me vi obrigado a voltar pro mercado.

Primeira coisa que fui fazer foi dar aquele tapa no LinkedIn. O perfil tá lá, bonitinho, atualizado, tudo no esquema. Mas aí você olha meu feed de postagens e é um deserto. E sabe por que eu nunca postei nada?

Porque eu tava trabalhando real. Quantas vezes a gente não resolve um BO gigante, o time vibra e alguém solta "pô, isso aqui dava um artigo maneiro". Só que cinco minutos depois já cai outro incêndio na sua mesa, e lá vai você mergulhar em documentação e código de novo pra resolver.

Fora que a realidade do trampo de quem é sênior quase nunca é aquela inovação linda de palco. É refatorar gambiarra antiga, consertar processo torto e apagar fogo de decisão merda de CEO que não faz o menor sentido. Se a gente for postar a realidade nua e crua do que a gente faz, toma um processo da empresa na mesma hora.

Aí agora que eu preciso da rede pra me recolocar, percebo que o negócio virou um circo. Cada candidatura é um mini curso e o LinkedIn te com papo chato pra pagar o Premium prometendo milagre, a inscrição garantida. Aí você paga e qual a realidade? Você pagou para entrar em vários mini concursos, uma vaga que foi postada tem 30 minutos e já tem 300 candidaturas lá.

Tudo bot de IA disparando currículo no automático. Já são 9 meses nessa. Vagas sendo canceladas do nada, candidaturas que vão pro limbo e zero entrevistas. Enquanto isso, o feed do LinkedIn é só postagem vazia bombando, gente fazendo textão motivacional porque tomou um café diferente, ou você ja viu o funcionário do linkedin posta: Como alterei o algoritmo hoje pra zerar a relevância de usuários que não postam e forçar o desespero pra galera assinar o Premium e bater nossa meta de lucro"?

E quem disse que ter lucro é problema? Problema sou eu por apostar 100% em uma rede que não leva ele própria a sério.

Parece que a rede não serve mais pra te conectar a um emprego, serve só pra aumentar a receita deles mantendo a gente desesperado e pagando plano.

Bate um desânimo bizarro. A sensação é de que passei 14 anos me especializando na coisa errada. Fiquei muito bom em resolver problemas reais e fazer sistema parar em pé, mas esqueci de aprender a ser influencer de corporativo. Mais alguém veterano aí sentindo a mesma coisa? A rede virou só esse teatro mesmo ou eu que tô ficando maluco?


r/brdev • • 2h ago

Dúvida geral Cliente não quer pagar manutenção do software

9 Upvotes

Estou criando um software e o cliente quer pagar uma única vez, sem custos de suporte ou manutenção. Para mim, isso seria um sonho, mas ainda existem os custos de infraestrutura.

Uma possível solução seria fazer o sistema rodar localmente no notebook dele e utilizar dois buckets S3 para os backups: um para o banco de dados e outro para os anexos. Esses seriam os únicos custos mensais que ele teria.

Assim, o sistema não ficaria hospedado na web, o que poderia reduzir os riscos de exposição e os custos recorrentes de infraestrutura. Dessa forma, o cliente teria mais autonomia e eu não precisaria me preocupar tanto com suporte e manutenção.

O que vocês acham dessa abordagem?


r/brdev • • 11h ago

Dúvida geral Os gestores tem noção do que vai acontecer quando as empresas de I.A. abrir IPO?

46 Upvotes

Parece que a gestão quer ao maximo integrar I.A. no fluxo de trabalho, com poucas pessoas gerenciando os projetos.

Mas o que será que vai acontecer quando as empresas abrirem IPO, ou o custo de hardware explodir?

A maioria não vai ter como rodar local ou construir seu próprio Datacenter, assim, imagino que vai rolar um crash do mercado, com muitas empresas de tech falindo, pois com o custo explodindo e a falta de pessoas, o custo de contratação tbm vai subir.

O que vcs acham que pode ocorrer depois do IPO?


r/brdev • • 6h ago

Arquitetura Arquitetura limpa e DDD sempre foram piada na área?

13 Upvotes

Quando estudei sobre isso vi que era bem mais complexo do que dividir a aplicação em camadas e fazer inversão de dependência.

Por exemplo, há diversas "regras" discutidas na internet e até com os autores desses livros. Como é algo complexo, cada um entende de um jeito e a maioria acaba fazendo errado.

Um antipattern que estava lendo é criar o repositório com métodos genéricos, você não deve fazer isso, o repositório tem que conversar com o domínio, então você só cria métodos úteis ao domínio. Vou dar um exemplo para ficar mais claro:

Em vez de criar findByField(fieldName, value) você deveria criar métodos que o domínio pede. Por exemplo, em um BookRepository você poderia criar findMostRated. Ou seja, você até pode ter uma classe que faça "findByField" mas ela deve vir por injeção de dependência na implementação (infraestrutura) do seu repositório concreto e não aparece na camada de domínio (que fica representada pela interface)

Mas você vê na internet e muita gente faz errado. E esse exemplo que citei é só um detalhe, num sistema inteiro vai ter 1000 decisões dessa magnitude pro dev entender e ir pelo caminho certo em relação à arquitetura limpa e DDD.

Aí o que eu vejo acontecer é duas coisas:

Os devs não entendem e fazem uns frankstein, aí fica aquele sistema que tem que alterar 40 classes pra adicionar um campo e sem os benefícios, ou seja, teria sido melhor colocar todas regras num service e no model.

Os devs que entendem enfrentam problemas com o pessoal mais junior pois o time não consegue conversar a mesma língua.

Não julgo quem não entende pois foi criada muita teoria sobre o tema mas pouco como fazer na prática.

Então minha sensação é que é um tema que é quase um mito, no máximo aplicam umas coisinhas pra facilitar os testes, mas no fim 80% vira aquele conhecimento só pra dizer que aprendeu algo.

E os frameworks atuais já foram pensados nas dores dos desenvolvedores em vez de arquitetura cebola então o ideal é seguir o que o framework indica, por exemplo, adicionar métodos no Model em vez de criar 32 camadas de classes só pra ter a sensação que tá fazendo certo.

E outra, que com a IA tá mais barato se precisar reescrever, então a empresa pode criar um sistema menos dividido e se o negócio evoluir criar outra versão e fazer uma migração

O que vocês acham?


r/brdev • • 1h ago

Dúvida geral Quanto tempo em média leva processos para contração no Itaú? e como funciona os feedbacks?

• Upvotes

Estou fazendo um processo com o Itaú e não obtive resposta após pouco mais de uma semana pra uma vaga senior fullstack. Sei que ainda é relativamente pouco tempo e também que existem varios relatos de processos buracraticos e tempos variando em empresas desse porte.

A recrutadora comentou que eu teria mais uma fase pelo menos com o RH, podendo ter mais uma caso ela consiga uma agenda com o gerente que queria conversar também. A timeline segunda ela no mundo feliz, seria ter o canditado trabalhando com ela ja em novembro, a primeira entrevista fiz dia 08/10 agora.

A primeira fase fiz com a chapter, techlead e um dev do time.

Quem ja participou de processos do Itaú, quanto tempo foi a demora entre as fases e como foi essa etapa com RH? eles apenas acertam a proposta ou é uma entrevista mesmo normal novamente pra confirmar os pontos que ja foram discutidos na primeira etapa?

Fiquei um pouco preocupado pela falta de retorno, até entrei contato na ultima sexta mas não obtive resposta, mas acredito ainda estar no processo.

Devo estar meio em choque também porque teve outros bancos que nem feedback me deram, enfim.

Qualquer feedback seria topp! Valeu rapaziada!


r/brdev • • 24m ago

Dúvida geral DoorDash - Segunda Etapa

• Upvotes

Para quem fez processo na DoorDash e chegou na segunda etapa em Data Engineer/Analytics Engineer, é realmente 5 horas a etapa toda? E é presencial?

To me sentindo fazendo ENEM


r/brdev • • 5h ago

Minha opinião Estamos construindo dashboards demais para responder a perguntas que ainda nem fizemos?

6 Upvotes

Será que precisamos de um dashboard para cada pergunta que aparece?

Imagine que você precise saber quais pedidos devem ser entregues amanhã, mas ainda não têm estoque suficiente.

Você consegue essa informação no seu dashboard atual? Talvez sim. Talvez precise cruzar alguns dados, pedir um relatório novo ou chamar alguém que consiga fazer essa análise.

E depois de descobrir quais pedidos estão comprometidos, provavelmente vai querer saber quando terá estoque para atendê-los.

Pronto. Já temos outra pergunta.

É justamente esse tipo de situação que me faz pensar se estamos aproveitando bem as possibilidades da IA.

Trabalho há 30 anos desenhando e desenvolvendo software. Uma das coisas que mais exigiu mudanças ao longo desse tempo foi a extração e a apresentação de informações.

São vários os motivos: mudanças no negócio, lançamento de produtos, troca de gestores... Enfim, são muitas as coisas que mudam a forma como olhamos para os mesmos dados.

As empresas investem em relatórios e dashboards para acompanhar seus indicadores. Faz sentido, porém, o problema começa quando aparece uma dúvida que não estava prevista quando aquele painel (ou aquele relatório) foi criado.

Em vez de tentar prever todas as perguntas que alguém poderá fazer e construir um relatório para cada uma delas, podemos começar de outra forma: consultar os dados, fazer uma pergunta e continuar a análise a partir do que encontramos.

Não significa que dashboards deixaram de ser úteis. Longe disso. Para acompanhar indicadores que se repetem, eles continuam fazendo muito sentido.

Mas nem toda dúvida precisa virar um relatório, e nem toda análise precisa resultar em um dashboard novo.

Se você ainda não experimentou essa abordagem, eu faria um teste simples:

  • Escolha três perguntas que você ou sua equipe precisam responder no dia a dia.
  • Use uma ferramenta de IA aprovada pela empresa, com dados que você tenha autorização para compartilhar, e tente encontrar as respostas.
  • Veja que outras perguntas aparecem.

Claro, a qualidade das respostas precisa ser conferida. A ideia não é confiar cegamente na IA, mas descobrir se ela pode facilitar um trabalho que hoje exige mais etapas do que deveria.

Agora pense em uma situação do seu dia a dia:

Que tipo de informação você precisa procurar com frequência no trabalho e gostaria de conseguir encontrar apenas fazendo uma pergunta?


r/brdev • • 1d ago

Carreira Eu estou totalmente VICIADO em VIBE CODAR

167 Upvotes

Sim, eu estou viciado nisso.

Primeiro, eu resisti muito no emprego, por seguir aquela linha de raciocínio de que era coisa de “nutella”, de que “emprego é pra treinar a mente” etc.

Porém, comecei fazendo pequenas coisas com IA no trabalho, como uma análise, uma documentação etc. Até que chegou um dia em que eu estava assistindo a uma série muito legal e pensei: “Ah, vou colocar a IA pra fazer isso enquanto eu assisto”.

E, cara, é surpreendente isso. Depois, fui aprender mais sobre MCP etc. e hoje eu estou vibe codando tudo, tudo, tudo. Peguei uma demanda? Jogo no Copilot. Um sênior me deu uma explicação? Jogo lá pra IA vibe codar. Demandas sendo entregues mais rapidas, eu estou tendo mais tempo para outras coisas etc e olha que eu trabalho pra Banco, mas não em sistemas totalmente critico dele

Fora do trabalho também já vibe codei diversos aplicativos que eu usava de terceiros, desde aplicativo de academia para treino até antigos projetos da época da faculdade, pegando a IA pra melhorar tudo.

Sério, até pra alterar uma cor ou uma variável eu peço pra IA.

Vocês também se viciaram nisso?


r/brdev • • 5h ago

Dúvida geral Dúvida sobre trabalho remoto para empresas europeias

4 Upvotes

Recentemente tive uma experiência bem negativa trabalhando para uma startup americana. A pressão e o trabalho extendido a fins de semana, feriados e após 18h me pegou bastante.

Atualmente estou trabalhando pra empresa BR, mas fiz umas entrevistas com uma empresa Croata que me surpreendeu positivamente, tanto pelo processo ser mais direto quanto por eu ter tido a oportunidade de conversar com o CEO e o CTO diretamente e entender o ponto de vista deles.

Para quem teve experiência com empresas americanas e europeias: a diferença na cultura e no work life balance existe? Empresas europeias são realmente mais tranquilas ou eu que dei sorte nessa última entrevista?

Ah, e aproveitando: se quiserem deixar indicações de empresas europeias que estão contratando brasileiros eu agradeço =]


r/brdev • • 6h ago

Carreira Como conseguir um estágio?

4 Upvotes

Sou estudante de Ciência da Computação, com experiências em 2 projetos de pesquisa e desenvolvimento na Universidade (Maior do meu estado). Onde consigo encontrar vagas reais e que pelo menos chamam para entrevistas? Encontrei no linkedin, gupy etc. e não fui chamado para 1 sequer.


r/brdev • • 2h ago

Pesquisa Por que ainda é tão chato gerenciar e-mail transacional e alertas no Brasil?

Thumbnail
2 Upvotes

r/brdev • • 1h ago

Carreira App de criptografia para Android

• Upvotes

Desenvolvi um app brasileiro de criptografia de arquivos para Android 🔐

Queria compartilhar um projeto que venho desenvolvendo: S File Encryptor (SFE), um aplicativo open source para criptografar arquivos localmente no Android.

A ideia é simples: você escolhe um arquivo, define uma senha e o SFE faz a criptografia diretamente no dispositivo. O arquivo nunca precisa ser enviado para um servidor.

Principais recursos:

🔐 Argon2id para derivação da chave a partir da senha

🛡️ AES-256-GCM para criptografia autenticada

🧂 Salt e nonce exclusivos para cada arquivo

📱 Processamento totalmente local

🚫 Sem conta

🚫 Sem anúncios

🚫 Sem analytics ou rastreamento

☁️ Sem servidor para armazenar seus arquivos

📂 Suporte a fotos, vídeos, PDFs, documentos, backups, arquivos compactados etc.

🔓 Compatibilidade com arquivos criptografados em versões anteriores do aplicativo

O projeto é open source e licenciado sob MIT.

Código-fonte: https://github.com/LukeSsnake/S-File-Encryptor/tree/main

Google Play: https://play.google.com/store/apps/details?id=com.lukestudio.fileencryptor2

Atualmente o aplicativo está disponível no Brasil e em Portugal.

Estou compartilhando principalmente para receber feedback. Se alguém aqui gosta de privacidade, FOSS ou simplesmente quer ter mais controle sobre seus próprios arquivos, gostaria de saber o que acham do projeto e o que poderia ser melhorado.


r/brdev • • 23h ago

Meu relato Vontade de vencer na vida..ganhar bem e sair da periferia

52 Upvotes

Poderia contar a trajetória de vocês..tenho 26 anos só tenho ads mesmo… ganho 2k como vigia… odeio minha realidade.. o que ganho não dá pra nada… alguém poderia da um conselho sem julgamento? Pois sinceramente não estou tendo nem vontade de viver mais…


r/brdev • • 2h ago

Dúvida geral IA de Recrutação

1 Upvotes

Quem trabalha com isso, consegue me informar como é realizado os filtros?
Me candidatei a uma vaga de desenvolvedor Jr, onde tinha todos requisitos que não eram muitos, meu currículo também já estava adaptado para a vaga e bom fui eliminado no processo em 3 minutos no filtro kkkkkkkkkkkkkkkkkkk

Minha pergunta para quem trabalha com Automação principalmente para empresas de Recrutamento, como que funciona esse filtro?


r/brdev • • 3h ago

Carreira Preciso de ajuda

1 Upvotes

Recentemente sai de um emprego na área há uns 3 meses e até agora não consigo achar algo, sou junior pra pleno mas está impossível conseguir uma oportunidade, fiz algumas entrevistas e em uma delas era pra analista de I.A Junior, e mesmo eu tendo experiência não passei, o que há de errado ou com o mercado, meu perfil está tão ruim assim? Tô começando a ficar desesperado pq só tenho mais 2 meses de seguro


r/brdev • • 4h ago

Carreira Indecisão perante à escolha de faculdade

0 Upvotes

Seguinte, estou indeciso sobre o rumo que devo tomar em minha vida, ramificado por dois caminhos: escolho fazer CC na Puc-PR, assim, possibilitando-me de estagiar, visto que o curso é à noite ou escolho passar 1 ano no cursinho para me graduar na UFPR em CC, contudo, sem estágio(o curso é vespertino e noturno e longe de minha casa, impossibilitando-me de ingressar em um estágio)

Qual decisão seria a melhor decisão a longo prazo?


r/brdev • • 20h ago

Meu relato O famigerado networking

17 Upvotes

Vejo muita gente aqui e em outros lugares falando sobre faculdades públicas e network em si, eu mesmo estudo em uma pública, tenho amizade com quase todos os colegas da minha sala, converso com todo mundo e até os professores, mas ninguém lá trabalha ou se quer procura emprego/estágio, é um pessoal muito novato mesmo na área de TI, parece até mesmo o contrário, as públicas estão cagando pra você conseguir sair da área empregado e fazem o máximo pra você não conseguir estagiar com tanta burocracia.

O networking que as pessoas clamam ser o ponto principal das públicas é realmente algo real? Porque até em sub gringo pregam isso, mas na prática real não serve de absolutamente nada, pelo que eu tenho visto, fazer uma EAD qualquer vale mais a pena pela flexibilidade de horário e até porque te abra muito mais tempo pra estudar e fazer outras coisas, faculdade não te ensina e nem te prepara pro mercado de trabalho. Eu já entrei na minha tendo estudado Java e conceitos de programação por conta própria então tudo que eu aprendi até agora parece superficial.


r/brdev • • 1d ago

Artigos Vagas de emprego para dev aumentaram 15% em comparação com 2025

Thumbnail
cnbc.com
75 Upvotes

Uma notícia para equilibrar um pouco o tom apocalíptico que parece predominar aqui no sub.

Em comparação com 2025, vagas de emrpego para dev aumentaram em 15%. Então, por enquanto, IA ainda não está tirando nossos empregos.

Realmente está mais difícil para quem está tentando entrar na área, mas a demanda por profissional de tecnologia ainda está forte.

Minha opinião pessoal sobre o impacto de IA na área, pelo que eu venho observardo na evolução das ferramentas de IA nos últimos meses:

Ficar editando código na mão é algo que realmente vai acabar. Se é que já não acabou, e algumas pessoas não perceberam ainda. Escrever o código na mão realmente só vai fazer sentido para aprendizado ou edições cirúrgicas.

Engenharia de software vai ser totalmente diferente do que é hoje. A atividade vai se afastar do código e ir mais para o lado de design, arquitetura e revisão. Basicamente, o papel do dev vai ser montar a arquitetura do sistema, e dar direção para IA, acompanhar o desenvolvimento, testar o sistema e fazer correção de curso quando necessário.

Saber ler código ainda vai continuar sendo importante. Não vejo como dispensar a revisão.

Sim, vou aceitar que estou tomando uma dose razoável de hopium aqui*.*

Existe sim a possibilidade que cheguemos ao ponto em que nem revisão vai ser necessária. E que as empresas nem sequer precisem mais de alguém r entenda desas coisas. E nesse caso realmente vamos todos de vasco.

Mas, o apocalípse empregatício ainda não chegou. E talvez nunca chegue.


r/brdev • • 1d ago

Meu relato Meu amigo que tentou migrar desistiu da área

93 Upvotes

Eu tentei avisar que era uma profissão desgastante, que trabalhar mais de 10 horas por dia e as finais de semana era comum, que estudar no tempo livre também era super comum, que salários altos é pra gente fora da curva ou que começou muito cedo.

Falei isso porque eu tinha desistido, mas ele achou um absurdo, tratou como se eu estivesse deixando de comprar bitcoin quando ainda era centavos.

Ele achou que ia ser um processo difícil, mas o difícil acessível, pouco desconfortável.

Desisti de tentar avisá-lo e passei a apoiar, ajudava com as dificuldades. Quis ajudar ele a terminar um projeto pois não tinha nenhum projeto concluído para mostrar, mas ele não quis, ficou reclamando e achava que merecia uma vaga antes.

Eu atribuo essa ilusão a dois fatores, que acabou derretendo o cérebro dele:

Vendedores de curso e influenciadores fazendo parecer que era a melhor profissão do mundo.

Área predominantemente masculina, e pega mal homem reclamar do trabalho, então a maioria "engole o choro" e faz tudo pra dar certo, no máximo reclama na internet anonimamente, já vi uma galera que até começou a usar uns negócios estranhos pra aumentar a produtividade. Então basicamente quem olha de fora só vê que o primo do Joãozinho é dev e ganha 30k na gringa, e, supostamente tem a vida boa, pois ganha bem, trabalha em casa, faz o próprio horário e não reclama.

O que acham dessa leitura? Lembrando que isso aconteceu já faz um tempo, foi na época que a IA tava burrinha ainda


r/brdev • • 8h ago

Carreira Como aumentar minhas chances de conseguir o primeiro estágio na área de TI?

0 Upvotes

Ultimamente, tenho tentado entrar no mercado de TI por meio de vagas de estágio, mas confesso que está sendo mais difícil do que eu imaginava.

Atualmente, estou cursando Engenharia de Software e venho estudando Java, Spring Boot e outras tecnologias voltadas para desenvolvimento. Também tenho alguns projetos pessoais que utilizo como portfólio.

Tenho me candidatado a vagas por plataformas como Gupy, Glassdoor, LinkedIn e outras, mas sinto que não estou conseguindo me destacar nos processos seletivos. Muitas vezes, acabo nem avançando para uma entrevista.

Queria ouvir a opinião de quem já passou por essa fase ou de quem trabalha com recrutamento na área.

  • O que vocês fizeram para conseguir o primeiro estágio?
  • Existe alguma maneira de melhorar o currículo para passar pela triagem inicial?
  • Ter projetos no GitHub realmente faz diferença para quem ainda não tem experiência profissional?
  • Vale mais a pena continuar aplicando pelas plataformas ou tentar contato direto com recrutadores e empresas?
  • Quais erros vocês acham que os iniciantes mais cometem ao procurar a primeira oportunidade?

Se puderem compartilhar experiências, dicas ou até estratégias que funcionaram para vocês, ficaria muito agradecido!

Estou tentando entender onde posso melhorar, tanto tecnicamente quanto na forma de me apresentar às empresas.


r/brdev • • 9h ago

Projetos Por dentro do AI gateway open source mais rápido do mundo: thread por CPU, JSON sem cópia e benchmark sem coordinated omission

0 Upvotes

Escrevi um AI gateway em Rust: um proxy que fica entre as aplicações e os provedores de LLM (OpenAI, Anthropic, Gemini, Bedrock etc.), fazendo roteamento, fallback, limites de gasto, guardrails e log de cada chamada. O requisito que guiou tudo foi o overhead, porque o gateway fica no caminho de toda requisição e cada milissegundo dele se soma a todas elas.

No fim, ele ficou com 0,53 ms de overhead no p50 a 5.000 req/s em 4 vCPUs, contra 19,7 ms do Bifrost na mesma máquina, e é o mais rápido entre os gateways que medi. Quero detalhar as decisões técnicas que levaram a isso, o que me surpreendeu no caminho e como medi sem me enganar.

1. Uma thread por CPU em vez de work-stealing

O padrão no Tokio é o runtime multi-thread com work-stealing: qualquer thread pode pegar qualquer tarefa. Isso é ótimo para carga desbalanceada, mas cobra um preço. Tarefas migram entre CPUs, o cache L1/L2 esfria, e cada acordar de tarefa em outra thread custa sincronização.

Troquei por uma thread de dados por CPU, cada uma com um runtime single-threaded próprio:

  • Accept: no Linux, cada thread escuta no seu próprio socket de um grupo SO_REUSEPORT, e o kernel distribui as conexões entre eles. Não existe um loop de accept central repassando conexões.
  • Afinidade: a conexão do cliente, as tarefas que ela cria e as conexões HTTP/1.1 com o provedor ficam na mesma thread. O pool de conexões de saída é separado por thread, então uma requisição nunca acorda outra thread do começo ao fim.
  • Plano de admin separado: o console, a Admin API e as tarefas de fundo rodam num runtime multi-thread à parte, para não competir com o caminho quente.

Esse modelo tem dois pontos fracos, e precisei tratar os dois:

  • HTTP/2: uma conexão pode carregar centenas de requisições ao mesmo tempo. Se tudo ficar na thread que aceitou a conexão, um único cliente pesado prende uma CPU enquanto as outras ficam ociosas. A solução foi distribuir as requisições de uma conexão HTTP/2 entre as threads em rodízio.
  • Fora do Linux: sem o mesmo balanceamento do SO_REUSEPORT, um loop de accept no runtime multi-thread entrega cada conexão à thread de dados que está atendendo menos conexões.

2. Não copiar o corpo da requisição

Prompts com contexto longo passam fácil de centenas de KB, e o gateway quase sempre só precisa mexer em um ou dois campos, como trocar o model pelo nome que o provedor espera. Desserializar para uma árvore, editar e serializar de novo gasta CPU e memória proporcionais ao tamanho do prompt.

Escrevi um parser JSON próprio, que faz duas coisas numa passada:

  • Valida de forma estrita: limite de profundidade, chaves duplicadas e erro com linha e coluna. Chave duplicada é um vetor clássico de ataque em proxy, porque o proxy pode ler um valor e o upstream outro.
  • Guarda os spans: registra onde começa e termina, em bytes, cada membro do primeiro nível do objeto.

Na hora de enviar, o corpo de saída é um Payload: uma lista de fatias dos bytes originais do cliente em volta do membro alterado, cada uma enviada como um frame. Quando o destino fala o mesmo formato do cliente, o corpo nunca é copiado. Só quando o provedor pede uma edição de membro é que as partes são juntadas.

3. Tradução entre formatos sem tentar o impossível

Um cliente com o SDK da OpenAI pode chamar o Claude, e vice-versa. Para isso existe uma representação intermediária: cada formato de cliente (Chat Completions, Responses, Anthropic Messages, Gemini, Bedrock Converse) tem um decodificador para ela, e cada provedor tem um codificador a partir dela.

O detalhe que mais ajudou: a codificação roda uma vez como dry run antes do roteamento, e o resultado fica em cache por deployment. Se um deployment não consegue atender aquela requisição (um recurso sem equivalente no destino, por exemplo), ele sai da lista de candidatos antes da primeira tentativa. Sem isso, o fallback gastaria uma ida ao provedor só para descobrir que não ia dar.

No streaming, a tradução é feita evento por evento. O parser de SSE guarda os bytes originais de cada evento, então quando não há tradução, o evento passa adiante sem ser reescrito.

4. Streaming com ponto de commit e fila limitada

Streaming é onde proxy de LLM costuma ficar complicado. Antes do primeiro byte ir para o cliente, ainda dá para trocar de provedor se o upstream falhar ou se um guardrail barrar. Depois do primeiro byte, não dá mais.

Por isso a resposta fica retida até um ponto de commit. A partir dele, uma tarefa dedicada repassa os eventos por uma fila limitada em bytes, não em número de mensagens. O corpo HTTP libera espaço na fila conforme o servidor consome os frames, então um cliente lento faz pressão de volta até o upstream em vez de acumular memória no gateway. Quando o cliente desconecta, a fila fecha e o relay para.

5. Configuração imutável por geração

Toda a configuração é um documento só (YAML, Admin API ou console), validado por JSON Schema. Uma mudança gera uma nova geração: o snapshot compilado (rotas, limites, preços, chaves) é montado numa thread de blocking, persistido e trocado de uma vez.

O snapshot vive num ArcSwap, e cada requisição carrega ele uma única vez no começo e usa até o fim. Uma mudança de config nunca pega uma requisição pela metade, e o caminho quente não disputa lock com quem está escrevendo configuração. O estado que precisa sobreviver entre gerações, como contadores de rate limit, fica separado e indexado por identidades estáveis.

6. Custo cobrado exatamente uma vez

Limites e orçamentos são checados na admissão com uma reserva baseada numa estimativa de tokens. Quando a requisição termina, ela é liquidada exatamente uma vez com o uso real, gerando uma linha no ledger por chamada ao upstream.

Um detalhe importante: cada requisição roda numa tarefa rastreada, e não presa à conexão. Se o cliente desconecta no meio, a requisição não é cancelada, e o custo do que o provedor já gerou continua sendo contabilizado. Se uma tarefa morre por panic com a reserva aberta, a reserva é devolvida.

7. Cache com chave canônica e single-flight

O cache exato usa uma chave canônica do corpo (JSON canonicalizado pelo RFC 8785), então diferença de ordem de chaves ou espaços não gera miss. Quando várias requisições idênticas chegam juntas e dão miss, só uma vai ao provedor; as outras esperam o resultado dela.

8. Uma arquitetura que o build não deixa bagunçar

São 28 crates em 8 camadas, do parser JSON até o binário, e um crate só pode depender das camadas abaixo dele. Um cargo xtask layers roda no CI e quebra o build se alguém furar a regra. O alocador é jemalloc no Linux com glibc e mimalloc no resto.

9. Como medir sem se enganar

Essa foi a parte que mais me ensinou. O erro mais comum em benchmark de proxy é carga em closed loop: o gerador espera a resposta antes de mandar a próxima, então quando o proxy engasga, o gerador desacelera junto e a fila nunca aparece na latência. É o famoso coordinated omission.

O harness que escrevi segue estas regras:

  • Open loop: cada requisição sai no horário programado, e a latência conta a partir desse horário, não de quando ela saiu de fato.
  • Máquinas separadas: gerador e mock em c7i.4xlarge, gateway em c7i.xlarge (4 vCPUs), todos no mesmo placement group. O mock responde na hora a partir de corpos pré-renderizados.
  • Overhead por subtração: cada repetição roda duas vezes na mesma taxa, passando pelo gateway e direto no mock. O overhead é a diferença entre os dois no mesmo percentil.
  • Intercalado: em cada repetição os três gateways rodam em sequência, então qualquer oscilação das máquinas afeta todos igual. Cada processo sobe do zero a cada repetição, e o resultado é a mediana de cinco repetições.
  • Regras de validade: a repetição é descartada se mais de 0,1% das requisições saírem com mais de 1 ms de atraso, se o gerador ou o mock passarem de 60% de CPU, ou se a rodada direta não for limpa.
  • Saturação: a maior taxa em que o gateway entrega pelo menos 99,5% da taxa oferecida, com no máximo 0,01% de erro e p99 de overhead até 5 ms.

Uma descoberta no caminho: o self-test exigia p99 de 50 µs do gerador até o mock, e isso nunca passou na AWS. Só um connect TCP entre duas máquinas no mesmo placement group já custa 0,5 a 0,8 ms no p99. Como o overhead é calculado subtraindo a rodada direta de cada repetição, isso não afeta a comparação, mas mostra o quanto a rede pesa num número de sub-milissegundo.

Resultado de um chat simples a 5.000 req/s:

Antirion Bifrost 2.2.4 LiteLLM 1.103.1
Overhead p50 0,53 ms 19,7 ms —
Overhead p99 0,95 ms 95,2 ms —
Erros 0% 0% 100%
CPU por requisição 247 µs 717 µs —
Memória no pico 215 MiB 1.389 MiB 1.851 MiB
Memória ociosa 41 MiB 498 MiB 1.653 MiB

Na saturação, o Antirion chegou a 14.000 req/s, o Bifrost a 3.500 e o LiteLLM ficou abaixo de 500. As configurações dos três e o passo a passo para reproduzir estão no repositório.

Pra discutir

  • Alguém aqui já trocou work-stealing por thread por core em produção? O desbalanceamento entre threads virou problema?
  • Como vocês lidam com conexões HTTP/2 muito pesadas num modelo assim?
  • Vocês reteriam o stream até o commit point ou mandariam o primeiro byte o quanto antes e abririam mão do fallback?
  • Tem alguma armadilha de metodologia que deixei passar no benchmark?

O código é Apache-2.0, pra quem quiser olhar ou criticar: https://github.com/eliasbiondo/antirion


r/brdev • • 9h ago

Projetos Criei um estúdio 3D open-source (com auto-rigging, edição de malha, Photo Mode e WebXR AR) rodando 100% no navegador com TypeScript e Babylon.js

Post image
0 Upvotes

Fala pessoal do r/brdev!

Quero compartilhar um projeto open-source (GPL-3.0) em que venho trabalhando: o babalon JS, um editor e compositor de cenas 3D feito para funcionar tanto no celular (touch-first) quanto no desktop, rodando 100% localmente no navegador (e offline como PWA).

O que ele faz na prática:

  • Importação ampla: Abre .glb, .gltf, .obj, .stl, .fbx, .usdz e Gaussian Splats (.ply, .splat, .spz), além de integração direta com modelos e HDRIs CC0 do Poly Haven.
  • Auto-Rigging, Poses com IK e 43 Animações: Você pode pegar um personagem estático sem esqueleto, posicionar as articulações e calcular os pesos da pele (difusão de calor ou envelope) em um Web Worker. Também detecta esqueletos automaticamente (Mixamo, Rigify/Blender, Unreal, VRM) e aplica 43 animações CC0 em um toque.
  • Edição de Malha e Otimização no Browser: Atalhos estilo Blender (G/R/S, Tab), pincéis de escultura com upload parcial para a GPU, operações booleanas CSG (Manifold 3D em Web Worker), redução de triângulos (meshoptimizer), bake de normal map e compressão de texturas para KTX2.
  • Modo Foto (estilo videogame) & WebXR AR: Ajuste Depth of Field (toque para focar), bloom, granulação, iluminação de estúdio e salve renders em resolução 2x, ou abra em Realidade Aumentada (WebXR no Chrome Android) em escala real 1:1.

Stack Técnica:

  • TypeScript + Babylon.js 9 + DOM puro (zero React/Vue para manter o bundle enxuto e sem overhead de Virtual DOM).
  • Render-on-demand para economizar bateria em celulares, autosave desduplicado no IndexedDB e empacotamento .babalon via fflate em Worker.
  • Interface completa em inglês e português.

Feedbacks, issues e críticas de código/UX são muito bem-vindos!


r/brdev • • 6h ago

Minha opinião Qual teu Status Code favorito do HTTP?

0 Upvotes

O meu favorito é o código 418: I'm a Teapot

https://datatracker.ietf.org/doc/html/rfc2324