Тёмный

Meu projeto para a Rinha de Backend usando Vlang (Passo a passo, dicas, procedure, infra, etc.) 

Marco Pegoraro
Подписаться 251
Просмотров 1,6 тыс.
50% 1

Fala galera, como prometido, aqui está o repositório do meu projeto para estudar a linguagem V:
github.com/marcoagpegoraro/ri...
Também vou deixar o repositório da rinha de backend mostrando o passo a passo de como fazer a entrega, lembrando que o tempo para entrega dos projetos vai até dia 10/03/2024:
github.com/zanfranceschi/rinh...
Como este canal está no inicio, ele não possúi monetização ainda, mas caso queira me ajudar com um pix de qualquer valor, vou estar deixando essa chave pix aqui: c827a9ac-26cf-4740-b486-6445b8feba18
Um abraço a todos, e boa sorte caso queira participar também!
Alguns links relevantes:
vlang.io
github.com/vlang/v/blob/maste...
modules.vlang.io/vweb.html
modules.vlang.io/db.pg.html
modules.vlang.io/orm.html
ERRATAS:
1. No momento que falo do mapeamento da lista de models.Transacao para dtos.TransacaoDto, analisando melhor, é bem fácil de entender a função, você passa dentro dos colchetes a structure que você tem e qual structure você quer mapear, em seguida, você passa como argumento da função a lista e uma função que vai receber o index e a structure da lista, por fim você declara que a função vai retornar a structure desejada, e dentro você faz o mapeamento.
2. Eu falo no vídeo que criei uma Stored Procedure, mas na verdade eu criei uma Stored Function, uma stored procedure não consegue retornar valor igual eu fiz, mas as functions conseguem.
3. Também fiz algumas modificações depois do vídeo, os indices que estavam com o mesmo nome, agora estão com o nome diferente, e fazendo o indice pelas variaveis corretas.
4. Dentro da stored function, no final do SELECT, coloquei o FOR UPDATE, com isso, a linha é travada e não é liberada até ter o COMMIT da transação, resolvendo definitivamente os problemas de concorrencia ao atualizar o saldo.
5. Por que não estou utilizando network mode host? Na ultima rinha de backend, foi visto que um dos grandes gargalos era por conta da infra do docker rodando em modo bridge, então muitos participantes da atual rinha fizeram o Docker Compose rodar em modo host, mas eu decidi ficar no modo bridge mesmo sabendo que o desempenho seria pior. Fiz isso por alguns motivos:
5.1. O readme da rinha fala que o modo bridge já deve ser adequado a carga do teste.
5.2. Quero que pessoas que estejam no Windows e macOS consigam rodar meu docker compose sem precisar fazer nenhum tipo de gambiarra.
6. Modifiquei a estrutura do meu projeto, descobri que tem como deixar o código em uma pasta src, e os modulos dentro de pastas também, igual no Go, então fiz isso para deixar mais organizado e o a imagem docker com uns megabytes a menos pois agora não precisa mandar o projeto inteiro para dentro da imagem, só a pasta src.
7. Estou criando as tabelas como UNLOGGED TABLE no postgres, a performance aumentou drasticamente, realmente acho que era a ultima peça que estava faltando para minha aplicação atingir os sub 10ms para o 75 pct no gattling. Nesse artigo você encontra mais informações sobre esse tipo de tabela e os prós e contras: www.crunchydata.com/blog/post....
8. Como apontado pelo @FlyingVforVendetta, existe uma extensão melhor para usar no vscode para quem programa em V chamada "v-analyzer".
9. Como apontado pelo @greidinger-reis, a minha foreign key de cliente para transação está configurada incorretamente, pegando pelo "id" e não "id_cliente", e é possível fazer transaction no V utilizando o app.db.exec('BEGIN')! e app.db.exec('COMMIT')!.
Minhas redes sociais:
Blog: marcoagpegoraro.com.br
Portfolio: marcoagpegoraro.github.io
LinkedIn: / marco-antonio-goncalves
GitHub: github.com/marcoagpegoraro
Medium: / tete5423
Timestamps do vídeo:
0:00 - Introdução
1:54 - Falando sobre a rinha
7:19 - A linguagem de programação V
8:17 - Documentação do Vlang
9:00 - Standart library
9:57 - Meu código
10:50 - Arquivo main
12:40 - Models do banco de dados
13:45 - DTOs
14:00 - Controller de cliente
14:30 - Get extrato do cliente
17:47 - Post transação
19:38 - Por que usei uma stored procedure?
21:00 - Mostrando a procedure
24:10 - Retorno da procedure
25:17 - Continuando a request
26:13 - Dockerfile
27:50 - Docker Compose
30:17 - Testando a aplicação
31:34 - Enviando para o repo da rinha
31:50 - Participem da rinha!
32:21 - O resultado do stress test do Gatling

Развлечения

Опубликовано:

 

25 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 15   
@vitormelo22
@vitormelo22 2 месяца назад
Parabéns, vlang é realmente uma linguagem com excelentes ideias, gosto muito da sintaxe dela, torço para ser mais reconhecida no futuro. O site de documentação é um dos melhores que já vi. Muito organizado e com exemplos de uso.
@hitalodejesus5206
@hitalodejesus5206 4 месяца назад
Abri alguns PRs no seu repositório
@FlyingVforVendetta
@FlyingVforVendetta 5 месяцев назад
A extensão "v-analyzer" utiliza o language server oficial da linguagem, linkado no repositório da linguagem, inclusive, na seção "Editor/IDE plugins". Instala que fica muito melhor!
@marcoagpegoraro
@marcoagpegoraro 5 месяцев назад
Caraca, obrigado pela dica, com certeza teria economizado um bom tempo no projeto, V pra mim se tornou uma linguagem mais interessante ainda!
@amymaclardnogueira5362
@amymaclardnogueira5362 5 месяцев назад
V é uma linguagem mto interessante! Ótimo vídeo parabéns.
@marcoagpegoraro
@marcoagpegoraro 5 месяцев назад
É muito interessante!! Como é uma linguagem bem recente, a gente já espera uma certa limitação em documentação, projetos para se basear e suporte no editor de código, mas mesmo assim acho que é uma linguagem que tem muito potencial se continuar crescendo no ritmo que está
@artu_almeida
@artu_almeida 3 месяца назад
nossa consulta de extrato ficou bem parecida mas eu usei LEFT JOIN e subquery invés de executar as duas queries separadas igual você fez
@hackshiftBR
@hackshiftBR 5 месяцев назад
Brabo
@joaovds
@joaovds 4 месяца назад
Show demais!
@TheMathues123
@TheMathues123 5 месяцев назад
Mano gostei muito do vídeo, faça mais videos explorando coisas novas, é muito interessante ver a explicação e aprender com você.
@marcoagpegoraro
@marcoagpegoraro 5 месяцев назад
Opa muito obrigado pelo feedback!! com certeza vou fazer mais vídeos sobre programação.
@JPMoura_
@JPMoura_ 5 месяцев назад
Mano to desde ontem tomando erro de conexão e estourando memória dos app porque não tinha visto que era pra retornar apenas as 10 ultimas transações. Eu tava retornando todas🔥🫠🔥 Vc me deu uma nova esperança kkkkk
@marcoagpegoraro
@marcoagpegoraro 5 месяцев назад
hahauhushusa que bom que consegui ajudar em algo, continua tentando que uma hora vai
Далее
Your bathroom needs this
00:58
Просмотров 9 млн
НАШЛА У СЕСТРЫ СЕКРЕТИК
00:36
Просмотров 426 тыс.
Build a FULL Web App With Claude With 2 SCREENSHOTS!
17:36
I'm Never Using Tmux The Same Again!
6:58
Просмотров 14 тыс.
ESCOLHENDO a MELHOR LINGUAGEM de PROGRAMAÇÃO
6:40
Просмотров 318 тыс.
Descobri como o Zuckerberg Programou o Threads com PHP
18:38
AI business ideas funded by YCombinator
16:31
Просмотров 18 тыс.
Do zero ao proxy reverso e load balancer com NGINX
1:10:04
#starman #starmanmeme #superman #shorts
0:15
Просмотров 9 млн