BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Nashorn: "A arma oculta do JDK 8" no Netflix

Nashorn: "A arma oculta do JDK 8" no Netflix

O Netflix recentemente recebeu o grupo de usuários Java do vale do silício para falar sobre o Nashorn: "A arma oculta do JDK 8". Nessa apresentação a equipe de Ferramentas de Parceiros do Netflix descreveu como começaram a usar o JavaScript em seus serviços.

Matt Sun, engenheiro de software sênior do Netflix, explicou como estão usando o JavaScript para escrever planos que testem todas as funcionalidades (tal como: filmes 3D, Dolby Sound, HD/4K), bem como os milhares de produtos de parceiros diferentes. O produto usado para testar toda essa combinação é chamado "Netflix Test Studio".

Na primeira publicação em 2012, o Test Studio executava 15.000 testes por dia em 400 dispositivos ao redor do mundo. A ferramenta de geração atual, suportando listas dinâmicas de casos de testes baseados em dispositivos, é uma grande mudança em relação a versão original que suportava apenas planos de testes estáticos. A última versão foi construída com o Nashorn, com interfaces que obtém metadados dos testes e propriedades dos dispositivos. Os planos de testes são gerados dinamicamente para funcionalidades como 4K e 3D. Este novo sistema orientado a eventos está usando o protocolo do WebSockets. As regras dos testes são escritos em JavaScript, do qual os testadores podem abrir e editar nos seus navegadores. Isso permite codificar imediatamente e validar o plano de teste.

Netflix Test Studio

Sun também descreve como desenvolveram um Mecanismo de Analise do Nashorn que fornece usuários, equipes, e visibilidade e percepção das empresas dentro dos seus dados. A mudança para o JavaScript ampliou o poder do mecanismo de analise permitindo eliminar a necessidade de desenvolvedores backend. As equipes não precisam mais esperar para obter relatórios, pois elas podem criar e modificar os seus próprios. No entanto, a natureza dinâmica do JavaScript permite que os usuários obtenham um feedback imediato das suas mudanças.

Em um recente artigo intitulado "Node.js e io.js no Java", Erik Costlow, Gerente de Produtos da Oracle, disse que o JDK 8 possui 40 atualizações que aprimoram o desempenho do JavaScript através do optimistic typing. Ele também mencionou o projeto Avatar.js, um projeto que traz o modelo de programação do Node.js, APIs e bibliotecas para dentro da plataforma Java. As vantagens de executar aplicações JavaScript na JVM incluem estabilidade, gerenciamento, ferramentas e a grande quantidade de bibliotecas open source e privadas em Java. O monitoramento pode ser feito com JMX ou um ferramenta especifica como Java Flight Recorder and Mission Control.

Costlow descreve também outras maneiras de executar aplicações Node.js na JVM usando o Nodyn da RedHat e o Trireme da Apigee.

John R. Rymer, diretor de pesquisas de analises de Forrester, recomenda que os desenvolvedores Java aprendam JavaScript em 2015. Em "Java em 2015: Predições e Mais", Rymer disse:

O lado servidor em JavaScript está chegando ao presente com muitas oportunidades ao desenvolvedor Java nesse ano... E para as pessoas de .NET e C#. Há diversos caminhos desconhecidos nessa direção. Há muito JavaScript no lado cliente, mas muitas pessoas de Java com quem falei estão trabalhando no lado servidor. Acredito que haverá muita demanda por pessoas que trazem o conhecimento da arquitetura do lado servidor para suportar o uso do JavaScript. Será muito bom ter essas habilidades.

Para conhecer mais sobre como o Netflix usa o JavaScript no servidor, o InfoQ.com conversou com Chris Saint-Amand e Peter Hausel, ambos gerentes de equipes front-end; Saint-Amant no website e Hausel nas métricas e testes de aplicações.

InfoQ.com: Poderiam dar aos leitores algum contexto sobre o uso do JavaScript?

Saint-Amant e Hausel: Basicamente há dois lados no uso do JavaScript no Netflix: 1) Para coisas que o cliente vê (experiência para membros e não membros -- fluxo de catálogo e assinaturas) e 2) para obter métricas dos dispositivos.

O primeiro caso é usado na camada de interface de usuário (UI) do website, que está sendo totalmente reescrita da aplicação legado em Java para o Node.js. O website não executa por completo na JVM e a aplicação Java legado foi dividida em diversos microserviços. Sua integração com a infraestrutura do Netflix é feita através de um mecanismos feitos em Java no servidor, que ganha interoperabilidade livre com o serviço de descoberta, serviços de propriedades dinâmicas e ferramentas de métricas. Atualmente as aplicações em Node.js do Netflix influenciam uma crescente porção do UI do website, com uso mais amplo através de muita experiência planejadas para o cliente.

O segundo caso é todo sobre capturar métricas e executar testes ativos em diversos dispositivos para garantir que a experiência do usuário seja a melhor possível. Nesse caso, os próprios testes são escritos em JavaScript porque muitos dispositivos dos serviços do Netflix (celulares, smart TVs, etc) são apenas encapsuladores de aplicações JavaScript. Os testes que são escritos, são então compilados com um serviço web baseado em Java que faz uso do Nashorn e AvatarJS (antigamente "node.jar"). Sua integração com o Nashorn é estritamente nesse contexto, não como algum serviço completo em JavaScript que executa na JVM.

InfoQ.com: Há intenção de mover o código do lado servidor para Node.js?

Hausel: A estrategia atual com o Test Studio é manter o núcleo em Java enquanto expõe algumas APIs através do Nashorn e talvez Node no futuro.

InfoQ.com: Quantas aplicações Node.js o Netflix tem em produção?

Hausel: Realmente não sei dizer o número exato, mas conheço diversas equipes que executam Node de uma maneira ou de outra.

InfoQ.com: Quantas aplicações executam na JVM versus Node?

Hausel: No caso do Netflix Test Studio, todas as aplicações executam sob a JVM.

InfoQ.com: O Netflix tem aplicações no lado servidor em JavaScript que executam outra coisa que não seja o Node.js?

Hausel: Experimentamos com Avatar.js e Flow sob o Nashorn. Muitas das aplicações estão usando o Nashorn. Alguns exemplos de demostrações estão disponíveis.

InfoQ.com: Há monitoramento e escalabilidade da JVM que ajude a manter as aplicações Node.js executando na JVM?

Hausel: Os maiores problemas com o Nashorn estão relacionados com o isolamento do ScriptEngine.

InfoQ.com: Qual o maior problema de executar aplicações Node.js na JVM?

Hausel: O tempo de inicialização da JVM e a falta de controle preciso do cache de script. A Oracle está ciente desses problemas. A próxima versão do Nashorn vai corrigir alguns problemas.

InfoQ.com: Algum aviso adicional para os desenvolvedores ou empresas que querem executar aplicações Node.js na JVM?

Hausel: Embora o eco sistema npm seja muito grande, muitas extensões estão usando ligações nativas (que precisam ser atualizadas com as bibliotecas do Java). A grande vantagem realmente é poder usar pools de threads dedicadas para CPU vinculados ao código. Há história do multi thread no Nashorn é outra área que esperamos melhorias vindas da Oracle. A API WebWorker de compatibilidade (mencionada no link do post do blog) pode ser um passo nessa direção.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT