Microsserviços em JavaScript: do zero ao primeiro serviço em 20 minutos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Microsserviços em JavaScript: por onde começar para não desistir em uma semana

\n\n

Você já se perguntou por que grandes projetos como Netflix, Uber ou Amazon migraram para microsserviços? Não é questão de moda — é uma questão de sobrevivência. Quando seu monolito pesa 50 GB e a equipe de desenvolvimento tem 100 pessoas, cada alteração no código se torna uma roleta-russa.

\n\n

Mas há uma boa notícia: microsserviços em JavaScript não são um bicho de sete cabeças. Hoje vou mostrar como montar em 20 minutos uma arquitetura funcional que você não terá vergonha de apresentar em uma entrevista ou incluir em um pet-project.

\n\n

O que é um microsserviço em palavras simples?

\n\n

Imagine um canivete suíço. Na arquitetura monolítica, é um canivete grande com cem lâminas. Uma quebra — jogue tudo fora. Microsserviços são um conjunto de canivetes individuais, cada um para sua tarefa. Um quebrou? Substituímos apenas ele.

\n\n
Microsserviço é uma aplicação pequena e autônoma que faz uma coisa, mas a faz bem.
\n\n

Por que o JavaScript é ideal para microsserviços?

\n\n
    \n
  • Event Loop: assincronicidade nativa — perfeita para tarefas I/O-bound
  • \n
  • NPM: mais de 2 milhões de pacotes, ecossistema pronto para tudo
  • \n
  • Node.js: processos leves, inicialização rápida (50-100ms)
  • \n
  • TypeScript: tipagem que salva em sistemas distribuídos
  • \n
  • Linguagem única: frontend e backend em JS — menos alternância de contexto
  • \n
\n\n

Por onde começar: roadmap prático

\n\n

Passo 1. Essencial: Express + Docker

\n\n

Esqueça o Kubernetes no início. Você precisa de um microsserviço em Node.js que possa ser iniciado com um comando. Vamos começar com o mais simples — um serviço de saudação.

\n\n

Criando o primeiro microsserviço

\n\n
// service-greeting/index.js\nconst express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/api/hello', (req, res) => {\n  res.json({ \n    message: 'Olá do microsserviço!',\n    timestamp: new Date().toISOString(),\n    service: 'greeting'\n  });\n});\n\napp.listen(PORT, () => {\n  console.log(`Greeting service running on port ${PORT}`);\n});\n
\n\n

Agora vamos encapsular isso no Docker:

\n\n
# Dockerfile\nFROM node:18-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production\nCOPY . .\nEXPOSE 3000\nCMD ["node", "index.js"]\n
\n\n

Passo 2. Docker Compose: orquestração para pobres

\n\n

Não corra atrás do Kubernetes. Para começar, Docker Compose é seu melhor amigo. Vamos criar dois serviços e conectá-los.

\n\n
# docker-compose.yml\nversion: '3.8'\nservices:\n  greeting:\n    build: ./service-greeting\n    ports:\n      - "3001:3000"\n    environment:\n      - PORT=3000\n\n  users:\n    build: ./service-users\n    ports:\n      - "3002:3000"\n    environment:\n      - PORT=3000\n      - GREETING_SERVICE=http://greeting:3000\n
\n\n

Passo 3. Conectando serviços: HTTP vs Message Broker

\n\n

Na arquitetura de microsserviços em JavaScript, existem duas formas de comunicação:

\n\n
    \n
  • Síncrona (HTTP): simples, clara, mas cria dependência
  • \n
  • Assíncrona (RabbitMQ/Kafka): mais complexa, porém mais confiável
  • \n
\n\n

Exemplo de comunicação HTTP entre serviços

\n\n
// service-users/index.js\nconst express = require('express');\nconst axios = require('axios');\nconst app = express();\n\napp.get('/api/user/:id', async (req, res) => {\n  try {\n    // Chamada a outro microsserviço\n    const greeting = await axios.get(\n      `${process.env.GREETING_SERVICE}/api/hello`\n    );\n    \n    res.json({\n      userId: req.params.id,\n      greeting: greeting.data.message\n    });\n  } catch (error) {\n    res.status(500).json({ error: 'Service unavailable' });\n  }\n});\n\napp.listen(3000);\n

                
                

Blogs

Book Recommendations