Kamal proxy: Thruster
O curso trata do Thruster, o binário Go que envolve o Puma no contêiner da aplicação. Ele parte do custo de servir arquivos estáticos nas poucas vagas de requisição do Puma. Depois, lê as linhas do Gemfile e do Dockerfile que formam a integração. As lições explicam o X-Sendfile, o cache de um ano com assets nomeados por digest e a compressão decidida pelo tipo de conteúdo. Também mostram o que fica com o kamal-proxy e o Rails, e como medir se o Thruster ajuda.
O que você vai aprender
- ✓Por que arquivos estáticos e clientes lentos ocupam as vagas de requisição do Puma
- ✓Como o CMD do Dockerfile envolve o Puma com o Thruster sem quebrar a verificação do entrypoint
- ✓Como o X-Sendfile deixa o Rails autorizar um arquivo e passar a transferência ao proxy
- ✓Por que assets nomeados por digest tornam seguro um cache de um ano, e como a compressão é decidida
- ✓Como assume_ssl e force_ssl evitam um laço de redirecionamento entre o kamal-proxy e o Thruster
- ✓Como medir as threads Ruby gastas com requisições que não precisam de Ruby
O trabalho que o Puma não deveria fazer
O Puma é um servidor web Ruby, e é muito bom em rodar Ruby. Outra coisa costuma ficar na frente dele porque servir um arquivo estático não é rodar Ruby, e fazer isso numa thread Ruby é caro de um jeito específico.
Ler a aula completa grátis →Currículo
7 aulasO trabalho que o Puma não deveria fazer
Mostra como servir arquivos estáticos prende as poucas vagas do Puma, e compara o nginx com o Thruster.
A linha no Dockerfile
Encontra o Thruster no Gemfile e no Dockerfile, segue a árvore de processos e explica a verificação do entrypoint.
X-Sendfile e a entrega
Explica como o X-Sendfile deixa o Rails autorizar um arquivo enquanto o Thruster transmite os bytes no mesmo contêiner.
Cache e compressão
Trata do cache de um ano com assets nomeados por digest, do cache em memória e da compressão por tipo de conteúdo.
O que ele não faz
Lista o que o Thruster não faz, como roteamento, TLS aqui, verificação de saúde e limitação de taxa, e quando deixa de servir.
Medindo se ajuda
Mede o Thruster pelas threads Ruby ocupadas sem precisar de Ruby, e explica por que o efeito aqui é pequeno.
Juntando tudo
Resume o curso em cinco pontos e propõe um desafio para calcular os segundos de thread que o Thruster economiza.