Configurando Docker Compose, Postgres, com Testes de Carga – Parte Final da Rinha de Backend
Não podia terminar o ano com pendências, então eis a parte final da Saga da Rinha de Backend. Neste video vou aproveitar os temas da rinha pra demonstrar em mais detalhes como configurar um Docker Compose de verdade, como funciona testes de carga com Gatling, como usar esses dados pra configurar coisas como o Postgres melhor. Também vamos ver como avaliar exatamente quanto pesa rodar SQL num Postgres, como determinar coisas com tamanho de pool de conexões e muito mais!
Hoje é dia de aprender ferramentas que todo programador deveria mesmo saber no dia a dia de projetos de verdade.
## Capítulos
00:00:00 – Intro
00:01:03 – CAP 01 – Minhas Pendências da Rinha – Como Começar?
00:03:28 – CAP 02 – Entendendo Docker Compose – PHP do Lauro
00:07:38 – CAP 03 – Aprendendo a Lidar com Poucos Recursos – Configurando NGINX
00:15:33 – CAP 04 – Gargalos de Docker – Network Mode: Host
00:21:41 – CAP 05 – Prefira Docker em Linux – Problemas em Mac e Windows?
00:26:51 – CAP 06 – Algumas Dicas de Docker Compose – Node do Lucas Weis
00:30:21 – CAP 07 – Básico de Testes de Carga – Gatling
00:44:26 – CAP 08 – Comparando com Network Mode HOST – Faz diferença??
00:52:53 – CAP 09 – Entendendo PostgreSQL – Banco era Gargalo??
01:01:12 – CAP 10 – Full Text Search no PostgreSQL – Faz diferença??
01:07:35 – CAP 11 – Estratégia de SQL com EXPLAIN ANALYZE – SQL por baixo dos panos
01:16:11 – CAP 12 – Quantas Conexões Configuro no Banco? – Medindo com pgAdmin
01:23:34 – CAP 13 – Discutindo sobre Linguagens – Kotlin e Crystal
01:31:05 – CAP 15 – Como Linguagens afetam Recursos do Banco? – Só a saber, sobre threads vs fibers
01:35:00 – Bloopers
## Links
* [Repositório Oficial da Rinha](https://github.com/zanfranceschi/rinha-de-backend-2023-q3)
* [GitHub Versão Node.js do Lucas Poole](https://github.com/lukas8219/rinha-be-2023-q3)
* [GitHub Versão PHP do Lauro Appelt](https://github.com/lauroappelt/rinha-de-backend-2023)
* [GitHub – akitaonrails/rinhabackend-rails-api](https://github.com/akitaonrails/rinhabackend-rails-api)
* [Docker Network Mode Host](https://docs.docker.com/network/drivers/host/)
* [Gatling](https://gatling.io/docs/gatling/tutorials/installation/)
* [Vegeta](https://github.com/tsenart/vegeta)
* [HAProxy – The Reliable, High Perf. TCP/HTTP Load Balancer](https://www.haproxy.org/)
* [Envoy proxy – home](https://www.envoyproxy.io/)
* [Reverse proxy quick-start — Caddy Documentation (caddyserver.com)](https://caddyserver.com/docs/quick-starts/reverse-proxy)
* [GitHub – jesseduffield/lazydocker: The lazier way to manage everything docker](https://github.com/jesseduffield/lazydocker)
* [How to Insert Bulk Data in PostgreSQL – CommandPrompt Inc.](https://www.commandprompt.com/education/how-to-insert-bulk-data-in-postgresql/)
* [pgAdmin – PostgreSQL Tools](https://www.pgadmin.org/)
* [Spring Initializer](https://start.spring.io/)
* [Kotlin Programming Language (kotlinlang.org)](https://kotlinlang.org/)
* [The Crystal Programming Language (crystal-lang.org)](https://crystal-lang.org/)
* [Lucky – Web framework for Crystal (luckyframework.org)](https://luckyframework.org/)
* [O que é a pilha ELK? | Explicação sobre a pilha Elasticsearch, Logstash, Kibana | AWS (amazon.com)](https://aws.amazon.com/pt/what-is/elk-stack/)
* [O que é Elasticsearch – Explicação sobre o mecanismo Elasticsearch – AWS (amazon.com)](https://aws.amazon.com/pt/what-is/elasticsearch/)
* [Redis and Memcached-Compatible Cache – Amazon ElastiCache – Amazon Web Services](https://aws.amazon.com/elasticache/)
* [Apache Kafka totalmente gerenciado | Amazon MSK | Amazon Web Services](https://aws.amazon.com/pt/msk/)
* [Working with read replicas for Amazon RDS for PostgreSQL – Amazon Relational Database Service](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PostgreSQL.Replication.ReadReplicas.html)
* [Improve database performance with connection pooling – Stack Overflow](https://stackoverflow.blog/2020/10/14/improve-database-performance-with-connection-pooling/)
* [How Postgres Makes Transactions Atomic (brandur.org)](https://brandur.org/postgres-atomicity)
* Podcast: https://podcasters.spotify.com/pod/show/akitando/episodes/Akitando-149—Configurando-Docker-Compose–Postgres–com-Testes-de-Carga—Parte-Final-da-Rinha-de-Backend-e2daih7
* Transcript: https://www.akitaonrails.com/2023/12/16/akitando-149-configurando-docker-compose-postgres-com-testes-de-carga-parte-final-da-rinha-de-backend
by Fabio Akita
linux foundation
Não sou programador ainda. Trabalho com redes então a minha pergunta sobre a questão de rede nos containers vai refletir esse ponto de vista.
No IPv6, as redes "padrão" são /64 (em contrapartida do v4 que usa normalmente um /24) e cada máquina pode e geralmente tem mais de um endereço IPv6. Seria possível fazer os "app" subir em IPv6-only e cada um ter seu próprio endereço com todas as 65535 portas? Não há uma possibilidade de ter um /64 interno e usar o DNS pra resolver os endereços?
resolveu com maestria e ainda criou uma renca de pulgas atrás, na frente, dos lados e dentro da orelha.parabéns.
o primeiro chat gpt do mundo é o Akita kkkkkkk, o cara tem tudo na cabeça, literalmente qualquer assunto de tecnologia
47:06 top o video ! Parabens akita! O numero para ser divido eh 600 req e nao 150 …. Mas mesmo assim um ganho enorme
Akita como sempre nos presenteando com suas experiências e conhecimentos profundos técnicos.. Um grande abraço 👏👏
Temos a premissa de fazer o caching, mesmo em projetos pequenos e pacados, pela questão de leitura e gravação em memória terem um custo menor do que gravação e leitura em disco. Porém, hoje a gravação e leitura em disco são tão peformáticos quanto memória pelo fato dos SSDs, etc. E sim… eu sei, não é todo cenário que conta com SSDs, alías, são poucos. A rinha é um excelente, grandioso, caso de estudo para qualquer um. Acompanhei todo o evento e foi fenomenal. Mas não simula, nem de perto, um caso real. Antes de encerrar essa mensagem gostaria de deixar um grande abraço ao mestre Akita!
Que show Akita, você sempre traz a forma mais completa de desenvolver envolvendo infraestrutura e ambientes. Quando o docker entrou no mercado de forma mais stable. O pessoal de dev pegou firme no uso, atualmente vejo indo mais para as mãos de devops ou um SRE. Sendo que em vez deveria iniciar na mão do próprio desenvolvedor.
Eu percebendo que nao manjo nada de backend
Cada vídeo do Akita trás consigo um puta dose de motivação para continuar a estudando.
Sinto que a medida que avançamos na carreira fica cada vez mais difícil não se acomodar.
"…precisaria declarar pelo menos um número de porta diferente…"
Perca a aversão / medo do IPv6.
Modo Host e IPv6 sendo fim-a-fim simplifica muito as coisas.
Assistir seus vídeos gera um "incômodo" muito grande principalmente por eu ter mais de 10 anos de carreira e alguns dos conceitos/ferramentas que você apresenta nos seus vídeos eu nem se quer conhecia… É um incomodo necessário e que uso como combustível e bússula, entendendo que tem muito mais a aprender e caminho a trlhar! Com toda certeza o canal top #1 disparado no Brasil sobre conteúdo tech!
"Lógico que não idiota" 😂… Gosto muito. De tempos em tempos eu volto e assisto algum vídeo do Akita, sempre aprendo alguma coisa que dá primeira vez que assisti passou despercebido.
Trabalho somente com performance e testes de carga desde 2014 e o Akita acertou tudo sobre uma disciplina nebulosa e que ninguém entende. Monstro.
Excelente!!!
Queria muito um curso fullstack do Akita
Pra quem ta tendo dificuldades com JDK, use SDKman.. simples e incrivel
Muito obrigado pela aula!
aulas
❤
Obrigado professor.
1:28:00 Estou tendo que fazer um projeto pequeno em C Sharp e é um parto… Se eu tivesse feito até em Python já estava adiantado demais, eu concordo com ser full code.
1:27:56 Costumo utilizar o comando mvn archetype:generate -DinteractiveMode=false -DgroupId=algumacoisa -DartifactId=my-app, mas vou admitir que continua sendo verboso kkkk
Lucas Pool me pegou kkkkk
(seria Póle)
Obrigado pela visibilidade Akita!
Obrigado, me senti elogiado! C++ Dev forever e de coração!
Sobre o vídeo, excelente análise! Deveria ser disciplina em curso de programação!
Obrigado!
Ai ai, como é bom ver os videos do Akita, inteiro, sem entender quase nada, admiro a quantidade de verbos tecnicos avançados, que para ele é simples, e para mim é chines, é tão bom se sentir inutiil, e ver que tudo que já estudei, não é nada, e que preciso de mais uns 10 anos de estudos, para voltar ao 1° video do akita, e começar a entender ele, Mas continue assim akita, não leve em consideração a nossa ignorancia, voe, mostre tudo o que vc sabe, serve de inspiração para nós meros noobs da computação, é bom ter um alvo assim. Excelencia, Precisão, Bagagem de Muita experiencia e bunda na cadeira, Parabens por compartilhar o que sabe, quero muito um dia ser assim, destrinchar e saber como as coisas funcionam a fundo, não ficar somente no raso, isso é divino, mostra que a capacidade humana, a limitação está apenas na nossa cabeça, devemos sim correr atrás, e não ficar estagnado, ficar contente com a mediocridade do simplesmente fazer funcionar, mas sim entender o por que as coisas estão funcionando, e se der algo de ruim, saberemos concertar. Deus te abençoe e te de muitos anos de vida, e continue tendo forças para continuar aprendendo e compartilhando aqui nesse canal super complexo, em que eu adimiro e sonho um dia entender 5% das coisas que vc fala, valeu akita, vc é 1000/10!
Parabéns pelo ótimo vídeo. E qual é este terminal que o Fábio usa, que parece ter uma linha tipo Vim Airline? Obrigado
como vai Akita, sobre o network_mode: "host". Sempre usei dessa maneira no Windows 10 para subir minhas aplicações e elas sempre funcionaram. Mas em um trabalho de faculdade, um amigo tentou no Windows 11 meu projeto e realmente não funcionou. Como isso é possível ?
Boa viagem e feliz natal 🎁🎄
Opaaa vem muita coisa legal e importante por aí!! 1:12
Rapaz, esperei ansiosamente por esse vídeo
Excelente material. Parabéns Fábio.
Akita seu canal precisa virar material complementar de cursos de computação. Você tem uma didática sensacional! Parabéns.
Curiosidade:
1. Qual tema você usa no terminal ? Oh my zsh?
Que aula senhores… que aula!!!
Esse episódio era o mais esperado de todos os tempos pra mim, assisti o episódio 1 umas 3 ou 4 vezes.
Cada vídeo vale por um semestre na faculdade 😎
feliz natal !
Toda você que você “sobe o tom” por causa de coisas simples que a maioria dos desenvolvedores já deveriam saber, eu sinto minha alma um tiquinho mais leve. Contente porque agora sei o ponto de partida e entendi o suficiente pra poder estudar mais sobre o que ainda não sei e feliz por as vezes ter entendido alguma coisa(conceito).😊
“nada como o básico bem feito.”
Faz um da rinha de frontend, please
Boa Akita! vlw por mais este vídeo.
Excelentes férias e até os próximos vídeos.
Boa Akita! Conteúdo top!
Comecei num celeron 4gb de ram com a tela quebrada hshshah
Obrigado pelo vídeo!
Parabéns mais uma vez. 👏👏👏👏👏👏
Essa semana fiz minha aplicação, fiz meu dockerfile e docker-compose para subir minha aplicação em um container, meu banco de dados em outra, meu servidor em outra, 3 containers (aplicação, MySQL e Nginx), fui aprendendo na marra aqui mas no fim deu certo… rs
Excelente novamente… Feliz Natal, um maravilhoso Réveillon e um ótimo Ano Que Vem!!!! Boa viagem para o Japão!
C@ralho! Você é Phod@! Obrigado pelo vídeo! Desejo um feliz ano novo!
É impressao minha ou o som desse episódio está estranho? É como se houvesse um efeito de anasalemento maior.
Mas o conteúdo tá sensacional como sempre. Vlw Akita!
Agradeço por todo conhecimento que nos deu ao longo deste ano Fábio. Realmente, um mero estudante como eu tenho muito o que aprender kkkkkkk.
Partiu férias, estudar bastante coisa pra conseguir evoluir ano que vem. Desejo um excelente final de ano para você, um Feliz Natal e Feliz Ano Novo😊🎉👊😉