DEV Community

Cover image for Estudo sobre HTTP2 e protocolos binários - parte 3
marcelmfa
marcelmfa

Posted on • Edited on

Estudo sobre HTTP2 e protocolos binários - parte 3

Este post faz parte da seguinte série sobre estudo de HTTP2 e protocolos binários:

Após um longo período

Após um "longo" período após o último post, voltamos pra continuar com esta série. Conforme combinado no post anterior, iremos neste apenas alterar o servidor embarcado - isto é, mudar do padrão que é o Tomcat para o Undertow - que é usado pela aplicação e reexecutar os testes.

De acordo com o post anterior, já estamos "macetados", já sabemos todos os "paranauê" de acordo, então este post visa ser bem rápido.

Rápido como Sonic

Alterando a aplicação

Abaixo temos toda a mudança que é necessária para usar o Undertow ao invés do Tomcat.

Isto

Alterações no pom.xml

Isto acontece porque o Spring Boot usa uma estratégia "Opinativa" (o termo original em inglês é Opionionated, então sei se a tradução é a mais adequada), que em resumo vai tentar configurar o máximo de coisas possíveis a partir das dependências ou das propriedades de sua aplicação, removendo assim muito de código e configurações que muitas vezes precisamos fazer para cada aplicação.

Caso deseje saber mais sobre essa estratégia, clique aqui ou até mesmo na documentação oficial.

Vamos de benchmark

Lá vamos nós

Os gráficos seguirão abaixo e da mesma forma como os que fizemos no post anterior.

HTTP 1.1 e profile 1

Ponto de vista cliente

Resultados para ponto de vista cliente

Ponto de vista aplicação

Resultados para ponto de vista aplicação

HTTP 2 e profile 1

Ponto de vista cliente

Resultados para ponto de vista cliente

Ponto de vista aplicação

Resultados para ponto de vista aplicação

HTTP 1.1 e profile 2

Ponto de vista cliente

Resultados para ponto de vista cliente

Ponto de vista aplicação

Resultados para ponto de vista aplicação

HTTP 2 e profile 2

Ponto de vista cliente

Resultados para ponto de vista cliente

Ponto de vista aplicação

Resultados para ponto de vista aplicação

Avaliação simplória dos resultados

Todas as execuções consumiram praticamente mesma quantidade de CPU, apenas 1. O profile 2 que possui dobro recursos computacionais em relação ao profile 1 não trouxe nenhum ganho de performance. O uso de HTTP2 processou em torno de 10 mil requisições a mais que com HTTP1.1 e chegando a marca de 100 mil requisições no teste realizado.

Um ponto interessante é que este processou mais requisições do que o Tomcat, que vimos no post anterior, em torno de 20k requisições a mais e considerando o profile 1.

Cena do filme advogado do diabo

No entanto, como costumamos dizer e dando uma de "advogado do diabo", o que sabemos e até mesmo não sabemos sobre o Undertow? Acredito que a comunidade Java e Spring já é tão acostumada ao Tomcat que já conhece vários de seus pontos que necessitam ajustes / tuning.

Portanto minha dica é: pesquisem bem antes de sair fazendo um shift de todas as suas aplicações de Tomcat para Undertow e façam testes como esse.

E se trocarmos tudo por Undertow

Pois bem, chegamos ao final deste post e gostaria de dizer que poderíamos continuar quase que indefinidamente, explorando outros servidores como Netty, o não reativo do Webflux, poderíamos empacotar como WAR e implantar num servidor de aplicação Jboss, por exemplo, com outros frameworks de outras linguagens, etc.

Para não ficarmos neste loop infinito, vou apenas incluir os fontes das aplicações e as imagens dos benchmarks com os cenários que testei no repositório e lá vocês podem conferir a vontade.

Próximo post a gente vem brabo e de, finalmente, gRPC.

Continue comigo

Top comments (0)