Home  >  Plataformas

18 bibliotecas de Java Script e Node.js para microsserviços

Conheça mais detalhes sobre os projetos de open source

Peter Sayer* | InfoWorld (EUA)

21/01/2019 às 10h22

Foto: Shutterstock

Muito tempo atrás, nos primórdios da Internet, apontar seu navegador em uma URL significava que sua máquina iniciava uma conversa com um servidor e apenas um - aquele conectado àquele URL. Isso ainda pode acontecer se você visitar um blog pessoal, mas hoje todos os principais sites e a maioria dos pequenos são realmente constelações de servidores, às vezes dezenas, centenas ou até milhares.

O Node.js sempre foi uma base popular para permitir esse salto para o futuro. Talvez seja porque o Node.js explodiu em popularidade na mesma época do paradigma de microsserviços. Talvez seja porque o Node.js se encaixa bem nos containers do Docker. Ou também porque o JavaScript está em todo lugar. Agora, quando vamos a um site, nossos pacotes viajam para as pilhas Node.js, acionando mais chamadas para mais servidores Node.js, cada um entregando uma parte dos dados que preenchem nossas telas.

Uma grande razão para a ascensão do Node pode ser a simplicidade. Um microsserviço funcional do Node.js pode ser construído com apenas algumas linhas de código: uma para escutar em uma porta, um punhado para conectar-se a qualquer banco de dados e mais algumas para codificar a lógica de negócios. A diferença entre um exemplo "Hello World" e um microsserviço em execução é apenas uma ou duas funções. O Node.js foi projetado e construído por pessoas que queriam oferecer bits na Internet.

Não é apenas a simplicidade do código. A comunidade do Node.js irá citar muitas outras razões práticas porque o Node.js está em todo lugar. Alguns vão se concentrar no incrível tempo de execução do Node.js. Ele inicia em segundos e não digita RAM para criar segmentos para processar cada solicitação de entrada e saída. As rotinas de IO são otimizadas para obter dados rapidamente, sem gastar muito tempo na criação de objetos para rastrear segmentos e outras coisas efêmeras. O paradigma de call-back pode ser um desafio para os programadores novatos, mas o resultado é uma velocidade incrível e pouca carga na máquina. Isso facilita a criação de vários microsserviços rápidos na nuvem.

Outros adoram a ideia de que o mundo do Node.js foi dominado por open source. A versão original do Node era um projeto de código aberto que foi construído sobre um interpretador JavaScript que era em si mesmo de oepn source. Todas as principais estruturas do Node.js são de código aberto e a ética é tão dominante que pode ser difícil encontrar um bloco de código proprietário em qualquer lugar em muitas pilhas do Node.js.

Aqui estão 18 projetos de código aberto diferentes que tornam mais rápido e simples criar um microsserviço em apenas algumas linhas de JavaScript. E quando você terminar com esse microsserviço, poderá criar mais alguns até ter sua própria constelação de microsserviços trabalhando juntos para entregar os bits às demandas insaciáveis ​​da Internet.

Conheça 18 bibliotecas open source de Java Script e Node.js:

API Blueprint

O projeto é apenas uma especificação para uma linguagem semelhante a YAML que descreve sua API. O valor real vem de todas as ferramentas que podem ler as especificações e fazer algo inteligente com a API. Há o Drakov, um servidor simulado para testar seu código, e o Dredd, uma ferramenta que testa a documentação da API no back end, garantindo que sua API seja sempre consistente com a versão atual do blueprint. Existem também analisadores padrão construídos para linguagens como Python e C. Existem dezenas e dezenas de projetos diferentes que usam o formato Blueprint da API.

Claudia.js

Cansado de levantar seus próprios servidores? O Claudia.js é um kit de ferramentas para mover suas rotinas do Node.js para o AWS Lambda ou AWS API Gateway. Você pega suas rotinas para responder aos eventos e, em seguida, Claudia irá implantá-los com uma única chamada da linha de comando (Depois de configurar todos os detalhes da conta da Amazon, é claro).

Cote

A frase "zero confituration" soa como música para qualquer desenvolvedor que precisa de um microsserviço rápido, e é exatamente o que a Cote oferece. A palavra "zero" não é estritamente correta, pois você precisa detalhar alguns detalhes básicos de seus objetos e APIs, mas o Cote se organizará depois disso, poupando o tédio de configurar endereços IP, portas e rotas. A maior parte da inteligência é encontrada nos mecanismos de transmissão e no protocolo de baixa sobrecarga que permitem que as instâncias de Cote se encontrem e se comuniquem.

Express

Existem dezenas de estruturas de aplicativos da Web para a criação de sites do Node.js. O Express é um dos mais simples e comuns. Você não precisa adicionar toda a sua estrutura para criar um microsserviço, mas pode ajudar a fornecer alguma padronização para as funções que ele lida. É uma pergunta interessante se os microsserviços de backend devem ter a mesma arquitetura do front end. Eles podem não precisar dos recursos extras de templates o tempo todo, mas quando o fazem, adicionar um framework simples como o Express promove consistência e estabilidade.

Feathers

Feathers é um projeto de código aberto com uma grande coleção de plug-ins de terceiros que cria APIs REST rápidas com apenas algumas linhas de configuração. A mágica real, no entanto, está nas linhas extras que você pode adicionar para integrar rapidamente o banco de dados, a autenticação e a paginação. O Feathers se torna ainda mais inteligente ao oferecer um mecanismo de envio em tempo real para anunciar novos eventos aos clientes por meio das bibliotecas Sockets.io e Primus. Estas são apenas algumas das razões pelas quais os desenvolvedores da Feathers descrevem seu projeto como “baterias incluídas”.

Hapi

O Hapi é outro framework popular do Node.js que pode ser usado para lidar com a configuração básica de sites ou para os microservices que fazem backup dos sites. Existem dezenas de plug-ins, incluindo alguns que lidam com alguns dos trabalhos padrão para microsserviços, como segurança e configuração. Você também pode integrar o Hapi com modelos de serviço comuns, como o Seneca.

Koa

Se você pensa em seu microsserviço como “middleware” que fica na frente de alguma fonte como um banco de dados, o Koa torna possível construir pipelines razoavelmente extensos para seus dados. O pipeline pode não ser a melhor metáfora para o Koa, porque as funções são aplicadas em uma estrutura de "pilha". Isso significa que suas funções invocam outras funções e, em seguida, obtêm outra falha nos dados quando voltam. O chamado “stack” é implementado com promessas.

Há uma coleção surpreendentemente grande de pacotes construídos em cima da Koa que atraem segurança, monitoramento, pré-processamento e muitas outras opções. A maioria dos projetos adicionará vários deles para concluir o pacote.

KrakenD

Uma das desvantagens de dividir seu back-end em tantos microsserviços é que o front-end deve fazer tantas chamadas diferentes. O KrakenD é um agregador que o ajudará a organizar as comunicações com o back-end e todas as respostas, tornando a vida mais simples para o front-end, que precisa fazer apenas uma chamada para o KrakenD. Se alguns desses backends retornarem mais dados do que o front-end precisa no momento, o KrakenD pode eliminar o lixo.

LoopBack

Os usuários do Node.js que desejam criar uma API rápida podem usar o LoopBack, outra estrutura que utiliza seu modelo de dados e o transforma em uma API completa. Você obtém todas as funções CRUD para manipular os objetos e algumas funções adicionais de manutenção, como o controle de acesso. A maioria dos bancos de dados padrão é suportada por conectores facilmente instalados, tornando o LoopBack uma das maneiras mais simples de criar um microsserviço que persista dados básicos.

Mocha.js

Depois de escrever seu código, você precisa mantê-lo em funcionamento. Escrever um bom microsserviço sempre inclui adicionar algumas rotinas de teste. Embora isso possa ser um pouco trabalhoso quando você tem dezenas de microsserviços, ele ajuda você a se concentrar nos problemas mais rapidamente, evitando regredir a base de código quando achar que está melhorando. O Mocha é um dos frameworks de teste de Node.js mais utilizados. Ele permite que você integre bons testes de unidade com sua rotina de construção com apenas algumas funções para fazer o teste.

Moleculer

Uma das estruturas de microservices mais rápidas para o Node.js é o Moleculer. Assim como velocidade, o Molecular também oferece muitos recursos importantes para a disseminação de uma carga pesada em um cluster, com balanceamento inteligente baseado na carga ou latência da CPU e seleção puramente aleatória ou round robin. Você pode desenhar em plug-ins para o armazenamento em cache Redis, serialização ou diferentes transportes. As conexões com falha são revertidas e repetidas com várias opções de fallback.

Puppeteer

Em teoria, o navegador é feito para os seres humanos no espaço de trabalho, enquanto os microsserviços servem ao navegador por trás das cenas, manipulando todos os dados em segundo plano usando formatos orientados à máquina como JSON ou YML. Na realidade, muitas vezes há boas razões pelas quais os microsserviços precisam se aprofundar nesses formatos centrados no ser humano e analisar informações marcadas em HTML e CSS. Às vezes, é só transformar uma página da Web em um PDF. Às vezes, é para automatizar algum canto antigo da base de código que só fala em páginas da web. Às vezes, é porque você quer escrever rotinas de teste elaboradas que representam verdadeiramente o que o usuário vê. O Puppeteer é uma versão do navegador da Web que é executado dentro do Node.js, aguardando que uma URL seja executada. Você pode usar o Puppeteer para executar vários trabalhos em segundo plano para suportar os vários microsserviços.

Redbird

Seu aplicativo requer algum trabalho de proxy para manter os tubos conectados? O Redbird é uma máquina geradora de proxy reverso com suporte para a maioria dos sofisticados algoritmos de criptografia que você precisa para garantir a privacidade.

Restify

Outra opção para criar um microsserviço é o Restify, um framework rápido que oferece roteamento clássico usando uma coleção de chamadas de funções encadeadas. Você pode inserir seu próprio código de personalização conforme necessário. O Restify também inserirá chamadas de depuração padrão (DTrace) em todas as rotas diferentes automaticamente, simplificando a compreensão da confusão dos microsserviços. Seu código não precisará, é claro, mas você ainda pode aceitá-lo, pois isso ajudará os outros membros da equipe.

Sails

Oficialmente, o Sails é uma estrutura MVC (model-view-controller) completa para a criação de aplicativos da Web no Node.js. Mas também vem com rotinas para gerar automaticamente uma API REST a partir do M no MVC, também conhecido como "blueprints" no Sails. Se você precisar de uma API REST, inicie com o Sails e adicione o V e C conforme necessário posteriormente.

Seneca

Uma boa maneira de esboçar sua arquitetura de microsserviço é criar um monte de regras que correspondam a algum padrão de parâmetros de entrada. O Seneca foi projetado para permitir que você faça exatamente isso. Você escreve uma função e alguns padrões que descrevem quando deve disparar, e então Seneca faz o resto. Ele oferece plug-ins que se conectam a todos os principais bancos de dados, bem como alguns exemplos para a criação de recursos importantes, como o back-end de um CMS ou um carrinho de compras. A Seneca pretende ser mais do que apenas uma base de microsserviço.

Serverless

À medida que mais e mais codificadores corporativos exploram o paradigma serverless, eles precisam de uma camada de abstração para suavizar as diferenças entre as várias plataformas, do AWS Lambda ao Apache OpenWhisk. Serverless é um com um nome que pode ser um pouco genérico demais. A primeira coisa que oferece é a chance de criar APIs e colocá-las em funcionamento em um ambiente sem servidor. Você pode aproveitar vários plug-ins e exemplos e implantar em AWS Lambda, Azure Functions, Google Cloud Functions, IBM OpenWhisk e muito mais.

Swagger

As arquiteturas de microsserviço possuem muitas partes e todas essas partes têm uma interface com o mundo externo. O Swagger oferece um formato padrão para projetar essas APIs. Você expõe suas ideias sobre o que a API fará e, em seguida, Swagger as transforma em documentação legível por humanos e código de teste legível por máquina. A estrutura padronizada impõe um modelo consistente em toda a sua base de código.

 

*Peter Wayner é editor colaborador da InfoWorld e autor de mais de 16 livros sobre diversos temas, incluindo software open source, carros autônomos, computação com privacidade aprimorada, transações digitais e esteganografia.