O que é o Undertow
Este artigo apresenta o Undertow, novo web server do WildFly que trouxe a proposta de aumentar a performance do container da Red Hat e oferecer a possibilidade aos desenvolvedores de trabalhar com ele de forma isolada para construir serviços modularizados. Aqui, você verá como utilizá-lo para criar serviços mais rápidos e distribuídos, usufruindo de recursos para lidar com requisições de modo não bloqueante e garantido, assim, uma melhor performance a suas aplicações. Além disso, irá entender como, através da API do Undertow, é possível criar serviços utilizando Java e JavaScript. Profissionais que desejam aprender sobre o assunto podem adotar este artigo como ponto de partida para entender como migrar suas aplicações ou criá-las do zero utilizando essa ferramenta.
O mundo da computação está em constante mudança, e, com isso, muitas vezes precisamos deixar antigos paradigmas para trás e adotar novas opções para criarmos algo do zero. Hoje, com uma demanda cada vez mais crescente e diversificada, é exigido muito mais das soluções que disponibilizamos online, principalmente no que diz respeito ao modo de acesso, que não se limita mais a computadores.
A maneira como consumimos conteúdo também mudou, o que pode ser observado com o uso dos smartphones, responsáveis diretos por esse novo cenário. Atualmente, grande parte dos acessos se dá através de apps, e não mais através de navegadores. Isso tira de nossos serviços várias necessidades, como, por exemplo, servir conteúdo estático, como arquivos HTML, JavaScript, CSS, entre outros. O foco, então, passa a ser uma arquitetura voltada a disponibilizar serviços para atender a essa grande demanda gerada por apps, que são muitas vezes dependentes de serviços que os alimentem com informação.
Esse novo comportamento pode gerar um aumento sensível nos custos relacionados à infraestrutura do sistema, pois junto com a necessidade de disseminar conteúdo em diferentes formatos, existe também um aumento no custo para atender a essa nova demanda. Em casos mais extremos, requer que empresas reestruturarem seus serviços para conseguirem manter a qualidade, como já aconteceu com a Netflix. Enfim, esse trabalho de repensar a maneira como utilizamos serviços impacta não apenas a infraestrutura do sistema, mas todo um mercado de desenvolvimento.
Quando falamos de mobile, por exemplo, o uso de Node.js para criar serviços que atendam aos aplicativos vem se tornando uma grande referência, justamente por fazer uso de eventos em suas threads. Ele é apresentado, em seu próprio site, como um framework focado em eventos e em processos não bloqueantes, ou seja, as requisições trabalham de maneira que o processo nunca fique parado esperando por um retorno de um banco de dados ou mesmo a leitura de um arquivo, assim como acontece com os novos containers Java, como o Vert.x.
O Undertow veio como uma resposta a essa nova maneira de desenvolver aplicações. Como veremos, ele fornece, de forma semelhante, os recursos que fizeram o Node.js ter a relevância que possui no mercado.
Contudo, apesar do espaço que essas ferramentas vêm conquistando, o modelo monolítico de containers continua tendo seu espaço, afinal, a adoção ou não deles depende não somente de uma premissa de tecnologia, mas também de um ponto de vista de gestão e cultura nas empresas. No momento em que é tomada a decisão de utilizar containers como o Undertow, que focam em programação reativa e microservices, isso não só acarreta na necessidade de conhecer a tecnologia em si, mas também em uma mudança na gestão e no modo de pensamento da equipe.
Portanto, é necessário que a empresa tenha mentalidade voltada para DevOps, porque há necessidade de gerenciar melhor toda a estrutura na qual se baseia o desenvolvimento. Como exemplo, ações como o rollback de uma aplicação que apresentou problemas acabam não sendo mais um caminho de fácil acesso, pois, em sistemas que possuem vários serviços diferentes e dependentes uns dos outros, o rollback de um serviço pode acarretar na necessidade de realizar a mesma operação em vários outros. Dessa forma, quando utilizamos microservices pode ser mais fácil manter os serviços que estão funcionando da maneira esperada e lançar um novo pacote para corrigir um possível artefato que apresentou problemas.
Dado o alerta àqueles que querem entrar no mundo de microservices, é bom se habituar à ideia de mudar a sua forma de pensar. A princípio essa frase pode parecer um exagero, mas é a realidade, pois focar nesse novo modo de criar serviços exige uma maior organização da equipe, sendo necessário, também, saber o que as outras equipes estão criando para evitar a implementação de código duplicado. Outro item importante é o processo de deploy, que deve ser rápido e automatizado, pois cada serviço com problema pode acarretar na parada de vários outros.
Para evitar quedas e garantir uma alta disponibilidade, invista em monitoramento, afinal, se monitorar um único serviço monolítico já possuía seus custos e dificuldades, monitorar vários deles eleva consideravelmente essa complexidade. Esses são só alguns itens essenciais que precisam existir na cultura de sua empresa para que o trabalho com microservices seja realizado de forma eficiente.
Apesar de haver a necessidade de adequação, as vantagens de se trabalhar com microservices se sobressaem. O time como um todo sai mais fortalecido do processo de adequação, ganhando experiência e conhecimento, o que com certeza será um diferencial no dia a dia. Além da equipe, o próprio ecossistema da aplicação ganha em vários aspectos, como no tempo de disponibilidade, pois agora não teremos mais um monólito único representando toda a aplicação, mas sim pequenos serviços para atender a várias partes do negócio, e caso um deles fique indisponível, não significa que todo o sistema estará indisponível. Ademais, não há a obrigação de utilizar apenas uma linguagem ou plataforma. Serviços distintos podem ser desenvolvidos de maneiras distintas e, assim, resolver problemas através de tecnologias que atuem melhor em algum requisito específico.
O exemplo do JBoss AS se encaixa bem nesse caso. Há três anos esse produto possuía apenas duas versões: Community e Enterprise. Atualmente, oferece várias versões distintas, como o WildFly, que mesmo mantendo boa parte de sua estrutura, configuração e funcionamento fiel às suas versões mais antigas, tem seu core totalmente modificado. Seu web server, por exemplo, agora é o Undertow, enquanto nas versões mais antigas era utilizado um fork direto do Tomcat. Assim, desde 2013 o WildFly possui um web server novo, que fornece suporte a requisições não bloqueantes. Isso permite que requisições que exigem mais tempo do servidor, como um acesso a um banco de dados ou mesmo a leitura ou geração de um arquivo, sejam feitas em um pool de threads isolado e fora do ciclo principal de cada requisição. Outro container que se beneficia das capacidades do Undertow como web server é o Swarm, que abordamos em outro artigo, publicado na edição 150 da Java Magazine.
As vantagens do Undertow
Na documentação do Undertow, são listadas como suas principais características:
- A alta performance;
- Ser embeddable;
- O suporte a Servlets 3.1;
- O suporte a WebSockets;
- O proxy reverso.
A característica “alta performance” pode ser considerada um pouco abstrata, pois existem muitas situações diferentes que podem ocorrer durante uma requisição e que podem afetar diretamente o tempo de resposta. Por isso, a própria equipe do Undertow realizou, através do site techempower.com, uma bateria de testes de performance com o Undertow e vários concorrentes. Em grande parte dos casos, levando em consideração também hardwares diferentes, o web server da Red Hat se mostrou superior, destacando-se, inclusive, na serialização e desserialização de objetos JSON, operações comumente utilizadas em serviços REST. Caso queira ver todos os testes realizados e a posição do container em cada um deles, na seção Links você encontrará o endereço para a matéria completa. A Figura 1 demonstra o gráfico com a performance de uma requisição em JSON comparando o Undertow e vários concorrentes.
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.