Noções Básicas de Implantação de Plataforma
10 exemplos para executar APIs Node.js 24 em Kubernetes, ECS ou Cloud Run usando princípios 12-factor - 7 básicos e 3 intermediários.
Busque em todas as páginas da documentação
10 exemplos para executar APIs Node.js 24 em Kubernetes, ECS ou Cloud Run usando princípios 12-factor - 7 básicos e 3 intermediários.
mkdir platform-api && cd platform-api
npm init -y
npm pkg set type=module
npm install express@5
npm install -D typescript@5.6Para manifestos e escalonamento do Kubernetes, veja Implantação do Kubernetes e HPA e Limites de Recursos.
import { z } from "zod";
const envSchema = z.object({
PORT: z.coerce.number().default(3000),
NODE_ENV: z.enum(["development", "production", "test"]),
DATABASE_URL: z.string().url(),
});
export const env = envSchema.parse(process.env);import express from "express";
import { env } from "./env.js";
const app = express();
app.get("/health", (_req, res) => res.json({ status: "ok" }));
app.listen(env.PORT, "0.0.0.0");PORT; padrão 3000 apenas para local0.0.0.0 dentro dos contêineresapp.use((req, res, next) => {
const start = Date.now();
res.on("finish", () => {
console.log(JSON.stringify({
method: req.method,
path: req.path,
status: res.statusCode,
ms: Date.now() - start,
}));
});
next();
});// Ruim: store de sessão em memória em escala
const sessions = new Map<string, string>();
// Bom: store de sessão Redis ou DB
import { getSession } from "./session-store.js";# Fase de Release (Job / initContainer)
npx prisma migrate deploy
# Fase de Execução (CMD de Implantação)
node dist/main.jsapp.get("/health", (_req, res) => res.json({ status: "ok" }));
app.get("/ready", async (_req, res) => {
const ok = await pingDatabase();
res.status(ok ? 200 : 503).json({ status: ok ? "ready" : "not_ready" });
});NODE_ENV=productionenv:
- name: NODE_ENV
value: productionENV do DockerfileapiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: ghcr.io/acme/api:sha-abc123
ports:
- name: http
containerPort: 3000
envFrom:
- configMapRef:
name: api-config
- secretRef:
name: api-secrets
readinessProbe:
httpGet:
path: /ready
port: http
livenessProbe:
httpGet:
path: /health
port: httpVeja Implantação do Kubernetes para o manifesto completo.
const server = app.listen(env.PORT, "0.0.0.0");
process.on("SIGTERM", () => {
server.close(() => process.exit(0));
});| Fator | Implementação Node |
|---|---|
| Codebase | Um repo git por serviço |
| Dependências | package-lock.json + npm ci na imagem |
| Config | process.env + Zod |
| Serviços de apoio | Postgres, Redis como recursos anexados |
| Build, release, run | CI constrói imagem, CD implanta tag, CMD executa node |
| Processos | Um contêiner = um processo node |
| Vinculação de porta | PORT env |
| Concorrência | Escala réplicas via HPA |
| Descartabilidade | Inicialização rápida, dreno SIGTERM |
| Paridade Dev/prod | Mesma imagem Docker localmente e em produção |
K8s: controle total, multi-cloud. ECS: nativo AWS, menos ops que K8s. Cloud Run: escalador automático HTTP mais simples. Veja ECS Fargate & Cloud Run.
Helm ajuda quando você tem muitos serviços e ambientes. Comece com YAML puro ou Kustomize para uma API.
Segredos do K8s, segredos de tarefas ECS, ou operadores de segredos externos - ConfigMaps & Segredos.
Mínimo 2 para HA. Defina requests/limits a partir de testes de carga - HPA & Limites de Recursos.
Não. K8s é o supervisor de processos. PM2 é para VMs - PM2 & systemd.
A implantação de plataforma executa imagens construídas seguindo as Melhores Práticas do Docker.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026