Este post faz parte da seguinte série sobre estudo de HTTP2 e protocolos binários:
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.
Alterando a aplicação
Abaixo temos toda a mudança que é necessária para usar o Undertow ao invés do Tomcat.
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
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
Ponto de vista aplicação
HTTP 2 e profile 1
Ponto de vista cliente
Ponto de vista aplicação
HTTP 1.1 e profile 2
Ponto de vista cliente
Ponto de vista aplicação
HTTP 2 e profile 2
Ponto de vista cliente
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.
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.
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.
Top comments (0)