Principe do Oceano Profile picture
Príncipe do Oceano, Marajá dos Legados e agora um dev cansado também no BlueSky com @rafaelponte.bsky.social . Me segue ✌🏻https://t.co/TDmRghB8iv
Dec 30, 2024 7 tweets 3 min read
salvo pelos testes 🙌🏻

projeto Java coberto por testes e verdinho 🤤

vamos fazer upgrade do Spring Boot, né? molezinha, eh só atualizar o pom.xml (maven) 🙌🏻

então, estava eu migrando um projeto de Spring Boot 2.7.x para 3.x e eis que esse teste de integração quebrou! 😱😱

⚠️ o assert esperava 3 erros mas encontrou apenas 1

Por que?Image na migração vc precisa alterar os imports de javax.* para jakarta.*

as anotações da Bean Validation mudaram pra Jakarta, e eu esqueci de modificar os imports dessa classe - oq fez as anotações antigas serem IGNORADAS pela processador do framework.

eh um erro silencioso q SEM testes de INTEGRAÇÃO a gente só pegaria em produção 😵‍💫Image
Jul 24, 2023 8 tweets 4 min read
vc confia nesse if()?

mesmo favorecendo testes de integração, existem cenários *implicitos* que são dificeis de cobrir e garantir a corretude, como bugs de concorrência e race conditions.

por exemplo, cadastrar uma entidade somente SE ELA NÃO EXISTIR no sistema: Image talvez para maioria dos dos sistemas isso não seja um problema.

mas se for...

basta 2 usuários tentando cadastrar o mesmo livro no mesmo instante que BOOM, temos um race condition em mãos:

(mentira, 1 único usuário com dedo nervoso eh suficiente 😬)
Image
Image
Dec 12, 2022 7 tweets 3 min read
vc sabe quais são os 3 pilares para escalar aplicações web?

existem 3 pilares para escalar qualquer aplicação web, independente de tecnologias, eles são:

1. Cache
2. Processamento Assincrono
3. Balanceamento de Carga Image 1. Cache

cache vai permitir responder as requisições mais rapidamente, tirar carga do banco de dados e serviços externos, e melhorar throughput de leitura;

ao retirar carga de leitura do banco vc libera recursos para o banco processar cargas de escrita e também leitura. Image
Aug 18, 2022 14 tweets 4 min read
apesar de possível, eh muito doido p/ mim quando alguém favorece criar uma camada de indireção com intuito de abstrair:

- local vs remoto
- sync vc async
- transacional vs non-transacional
- stateful vs starless

na teoria a camada faz parecer q tudo eh igual, mas na prática 🤡 as vezes vem nego me dizer que nao tem diferença! daí eu penso: ou eh doido ou ingênuo 😅

curiosamente essa mesma pessoa eh a que já mete o envio de e-mail async para:

1. não aumentar latência na lógica de negócio principal;

2. adicionar alguma tolerância a falhas;

🤡
Jun 10, 2021 11 tweets 2 min read
a piada da "fila virtual" e sistemas resilientes

semanas atrás estava pensando sobre como usar "fila virtual" em ecommerces, sites de vendas, eventos online etc virou piada p/ muitos desenvolvedores

para alguns parece incompetência um site não aguentar uma Black Friday, mas... se pensarmos bem, se trata de uma forma honesta de lidar com um problema complexo e de grande escala.

explico....

uma Black Friday acontece 1x por ano e requer bastante esforço e *meses de preparo* dos times envolvidos para lidar com uma demanda dessa maginitude.