18 projetos para criar microsserviços mais rápido usando Javascript e Node
Um microsserviço funcional do Node.js pode ser construído com apenas algumas linhas de código

Há alguns anos atrás, PHP foi gradualmente perdendo espaço para Node.js e JavaScript nas “fazendas de servidores”. Hoje todos os principais sites e a maioria dos pequenos são realmente constelações de servidores, às vezes dezenas, centenas ou até milhares.
Não por acaso, o Node.js explodiu em popularidade na mesma época do paradigma de microsserviço. Talvez seja porque o Node.js se encaixa bem nos contêineres do Docker. Talvez seja só 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.js 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. Em outras palavras, ele permite aos programadores o desenvolvimento de aplicações em rede, em tempo real e de alta escalabilidade, de uma forma simples e rápida.
Além disso, a comunidade do Node.js pode citar muitas outras razões práticas porque o Node.js está em todo lugar. Alguns vão de 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.
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.
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).
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.
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 é 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”.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
À 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.
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.