• Categorias
    • Desenvolvimiento de software
    • Machine Learning & AI
    • Carreira de programador e dicas
    • Histórias de sucesso
  • Materiais Gratuitos
    • Calculadora CLT x PJ
    • Quiz de Front-end
    • Quiz de Mobile
    • Guia Full Stack atualizado
    • Guia de Negociação Salarial para Devs
    • Modelo de Currículo Internacional
  • Para Talentos
    • Criar perfil gratis
    • Ver vagas
  • Categorias
    • Desenvolvimiento de software
    • Machine Learning & AI
    • Carreira de programador e dicas
    • Histórias de sucesso
  • Materiais Gratuitos
    • Calculadora CLT x PJ
    • Quiz de Front-end
    • Quiz de Mobile
    • Guia Full Stack atualizado
    • Guia de Negociação Salarial para Devs
    • Modelo de Currículo Internacional
  • Para Talentos
    • Criar perfil gratis
    • Ver vagas

Início Saiba por que você deve utilizar Node.Js como a NASA

  • Foto de Geekhunter Geekhunter
  • dezembro 19, 2024
utilizar Node.Js

Saiba por que você deve utilizar Node.Js como a NASA

Um dos grandes fatores que impulsionam a adoção de uma nova tecnologia ou linguagem é a adoção por grandes empresas já consolidadas. Frameworks que nascem com a ‘marca’ Google, Twitter, Facebook ou Airbnb, por exemplo, ganham uma grande visibilidade frente a outras iniciativas com menos expressão no mercado e acabam atraindo mais desenvolvedores. Bootstrap, AngularJS, Ruby on Rails são alguns exemplos de tecnologias de sucesso e que caíram no gosto dos desenvolvedores, mas não são só Startups que se beneficiam da comunidade Open Source.

Em um painel recente Collin Estes, diretor de Engenharia de Software para a MRI Technologies, uma empresa contratada pela NASA para auxiliar no desenvolvimento do traje espacial para a agência americana revelou que utiliza Node.js nos sistemas que desenvolve. As vantagens que levaram à escolha do Node para essa aplicação você confere nesse post especial.

O Problema

Tudo pode parecer bastante calmo no espaço, a gravidade zero pode até dar uma impressão de tranquilidade, mas não se engane: a órbita terrestre é um ambiente extremamente hostil e perigoso. Tanto que uma equipe de profissionais fica em terra constantemente monitorando sinais vitais, projeções espaciais, velocidades relativas e um sem-número de variáveis advindas das mais diferentes fontes para garantir que tudo corra bem em missões na parte externa da estação espacial.

A partir de um incidente em uma dessas missões, onde água começou a vazar na parte interna do capacete do traje espacial, a equipe de comando de operações em terra identificou que os sistemas utilizados para a tomada de decisões críticas não eram otimizados. Informações e dados precisavam ser reunidos de sistemas espalhados, diferentes redes e fornecedores com tecnologias de propósito único, tipicamente.

Além da integração quase inexistente, dados duplicados, a incapacidade de consultas mais elaboradas e acesso a todas as fontes em tempo real levaram ao desenvolvimento de um novo sistema.

Node.js como solução

No contexto de implementar um sistema distribuído de alta performance, a iniciativa foi partir para um sistema em Elastic Search usando software Open Source com Node, Docker e RethinkDB. Isso permite uma maior flexibilidade e familiaridade com as tecnologias para empresas em futuros contratos com a agência. Toda a base de documentos migrou de datacenters específicos para a nuvem, e APIs RESTful foram criadas para facilitar a integração entre os sistemas. Dessa maneira, aplicações são criadas de maneira mais rápida e integrada, permitindo ao mesmo tempo uma maior escalabilidade e profundidade nas consultas e buscas.

Mas o que torna a linguagem tão revolucionária e adequada para esse tipo de aplicação? Simples: A mudança para um paradigma de orientação a eventos com um sistema de I/O não-bloqueante consegue lidar melhor com aplicações em tempo real, com um grande número de conexões simultâneas.

Feito para escalar

Um modelo de processamento diferente do que estamos acostumados é o responsável pela grande escalabilidade em aplicações I/O Intensive. Ao invés de alocar diversas threads para dar conta das requisições, esperando respostas lentas de acesso ao banco de dados, a arquitetura do Node.JS propõe uma thread única ativada por eventos para lidar com as requisições, enquanto distribui tarefas que demandam mais tempo para workers com respostas em callback.

Esse modelo otimiza a utilização de recursos em aplicações como chats em tempo real, streaming de dados, transações bancárias, ou mesmo proxy, coletando informações de diferentes provedores com tempos de resposta bastante variáveis (bastante utilizado em dashboards).

Dados prontos para uso

Outra grande vantagem é a utilização de bancos de dados como MongoDB ou RethinkDB que utilizam JSON nativamente, o que facilita a comunicação com as aplicações no lado do cliente em Javascript utilizando um único formato de dados seja no banco, servidor ou cliente. Isso evita conversões para modelos de dados intermediários (como acontece em Rails, por exemplo) e produz consultas mais rápidas.

O interpretador também lida de maneira bastante inteligente com requisições ao banco que não precisam de confirmação, como logs de sistema, ou em operações de menor relevância, onde consistência eventual nos dados é suficiente (‘Likes‘ do facebook, por exemplo). O cliente recebe a confirmação da requisição, mas o banco pode enfileirar as operações menos prioritárias para otimizar os recursos do sistema em momentos de gargalos ou alto tráfego.

Onde não usar Node.js?

As vantagens oferecidas pelo Node.js resolvem problemas de nichos específicos de aplicações onde requisições de Entrada-Saída são limitantes no sistema. Sistemas com necessidade intensiva de processamento podem acabar segurando a única thread que se comunica com o cliente (o Event Loop), já que o paralelismo nessa arquitetura só se aplica para tarefas nos workers de acesso ao banco. Além desse risco, o Event Loop acaba não tirando vantagem dos vários núcleos disponíveis nas máquinas na nuvem, o que diminui seu poder de processamento quando comparado com outros sistemas.

Aplicações que utilizam bancos de dados relacionais ainda são pouco suportadas em Node, acabam não aproveitando muito bem suas vantagens, ao passo que outros frameworks como Rails tratam de maneira muito mais simples e rápida esse tipo de desenvolvimento.

Em resumo, é preciso conhecer o domínio da sua aplicação para optar pela melhor solução disponível para determinado problema. Na MRI Technologies, o uso de Node.js facilitou a integração de sistemas através de APIs REST e abriu portas para a introdução de software open source em uma indústria tipicamente bastante fechada. Se você planeja construir serviços semelhantes, com muitos acessos em I/O e bancos de dados não sequenciais, não é nada mal confiar nos engenheiros aeroespaciais.

E você? O que acha sobre tudo isso? Deixe seu comentário!

Foto de Geekhunter

Geekhunter

Python IDE
10 melhores IDEs e editores de código em Python para 2025
  • março 18, 2025
o que é commit
O que é Commit e como usar Commits Semânticos
  • dezembro 13, 2024
certificações em TI
10 certificações em TI muito valorizadas hoje
  • novembro 20, 2024
Consultor SAP: o que faz, salário e como se tornar um
  • março 20, 2025
brainfuck
Brainfuck: A linguagem esotérica que desafia programadores até hoje
  • junho 27, 2025
gerente de tecnologia
As principais habilidades de um gerente de tecnologia
  • junho 27, 2025
vagas de TI
Vagas de TI: como encontrar uma que combine com você?
  • junho 26, 2025
Planejamento da equipe de metodologia scrum
Metodologia Scrum: o básico que todo DEV precisa saber
  • junho 24, 2025

Gosta do conteúdo? Assine nossa Newsletter!

Desenvolvimiento de software

Brainfuck: A linguagem esotérica que desafia programadores até hoje

  • Geekhunter
  • junho 27, 2025
Carreira de programador e dicas

As principais habilidades de um gerente de tecnologia

  • Geekhunter
  • junho 27, 2025
Desenvolvimiento de software

Vagas de TI: como encontrar uma que combine com você?

  • GeekHunter
  • junho 26, 2025
Desenvolvimiento de software

Metodologia Scrum: o básico que todo DEV precisa saber

  • Geekhunter
  • junho 24, 2025
Carreira de programador e dicas

Dicas de carreira: como criar seu perfil profissional com foco na área tech

  • GeekHunter
  • junho 24, 2025
AnteriorAnteriorA liderança positiva na gestão de equipes na TI
PróximoBiometria na nuvem: segurança na palma da mãoPróximo

Rod. José Carlos Daux – SC
401, 4120 – km 4, Bairro Saco
Grande – Florianópolis – SC
CEP 88032-005

Para Profissionais
  • Criar Perfil
  • Vagas de tecnologia
  • Blog TI
  • Criar Perfil
  • Vagas de tecnologia
  • Blog TI
Para Empresas
  • Plataforma de Recrutamento Tech
  • Serviço de Recrutamento Tech
  • Nossos Planos
  • GeekAcademy
  • Blog de RHTech
  • Perguntas Frequentes
  • Login Empresas
  • Plataforma de Recrutamento Tech
  • Serviço de Recrutamento Tech
  • Nossos Planos
  • GeekAcademy
  • Blog de RHTech
  • Perguntas Frequentes
  • Login Empresas
A Geekhunter
  • Sobre a GeekHunter
  • Suporte
  • Políticas de Privacidade
  • Termos de Uso
  • Portal LGPD
  • Sobre a GeekHunter
  • Suporte
  • Políticas de Privacidade
  • Termos de Uso
  • Portal LGPD

Add Your Heading Text Here