PAS7 Studio
Natrag na sve članke

Kako postaviti Bun.js poslužitelj s Fastifyjem: od nule do produkcije

Praktični vodič za izradu poslužitelja spremnog za produkciju s Bun.js i Fastifyjem. Instalirajte Bun, stvorite HTTP poslužitelj, dodajte TypeScript rute, ručajte validaciju, spojite bazu podataka i implementirajte — s usporedbama performansi između Bun + Fastify i Node.js + Fastify.

12. tra 2026.· 16 min čitanja· Tehnologija
Najbolje zaBackend programeriFull-stack inženjeriTehnički voditelji koji procjenjuju runtimesDevOps inženjeri
Sjajući narančasti Bun shell logo koji se spaja s cijan Fastify munjom na tamnom ugljenom pozadini, simbolizirajući Bun + Fastify tehnološki stack

Ovo je praktični vodič, od nule do radnog poslužitelja. Nije potrebno prethodno iskustvo s Bunom.

Kako se Bun razlikuje od Node.js-a na razini runtime-a (motor, alati, brzina pokretanja)
Korak po korak instalacija Buna i generiranje projekta s TypeScriptom
Dva pristupa poslužitelju: Bun.serve() (izvorni) i fastify.listen() (framework)
Definicija ruta, JSON Schema validacija i obrada grešaka s Fastifyjem na Bunu
Integracija baze podataka s PostgreSQL-om i ugrađenim Bunovim SQLite-om (bun:sqlite)
Produkcijska implementacija s Dockerom i benchmarkovi performansi u odnosu na Node.js

Ako ste dosad gradili poslužitelje s Node.js-om, većina vašeg znanja se izravno prenosi. Razlike koje najviše znače su arhitektura motora, ugrađeni alati i obrada TypeScripta.

Comparison pointBun 1.3Node.js 22/23
JavaScript engineJavaScriptCore (Safari/WebKit)V8 (Chrome/Chromium)
Written inZig + C++C++ + JavaScript
TypeScriptNative (zero config, no transpile step) [1]Experimental via --experimental-strip-types (Node 23) [2]
Package managerBuilt-in (bun install) — 10-30x faster than npm [1]npm, yarn, pnpm (external)
BundlerBuilt-in (bun build) — Webpack-class features [1]None built-in (requires Webpack, Vite, esbuild)
Test runnerBuilt-in (bun test) — Jest-compatible, ~20x faster [1]Built-in node:test (basic, stable since v20) [2]
Cold start8-15ms40-120ms
HTTP throughput (Fastify)~95,200 req/s [3]~55,800 req/s [3]
Memory baseline~380MB~512MB
npm compatibility~98% of top 1000 packages100% (native)

Sažetak

Za nove projekte poslužitelja, Bun nudi brži runtime, jednostavniji alatni lanac i izvorni TypeScript. Preostalih 2% nepodudarnosti s npm-om koncentrirano je u izvornim C++ dodacima poput bcrypt ili node-sass — većina web frameworka i ORM-a radi bez izmjena.

Bun se instalira kao jedna binarna datoteka. Nije potreban Node.js, npm ili zasebni alati za izgradnju.

01

Instalacija putem curl

BASH
curl -fsSL https://bun.sh/install | bash

Ovo preuzima Bun binarnu datoteku, dodaje je u vaš PATH i provjerava instalaciju. Nakon instalacije pokrenite bun --version za potvrdu.

02

Instalacija putem PowerShella

POWERSHELL
powershell -c "irm bun.sh/install.ps1|iex"

Windows podrška je dosegla stabilan status u Bunu 1.3. Sve osnovne funkcije — runtime, upravitelj paketa, test runner i bundler — rade na Windows-u. [1]

03

Potvrdite instalaciju

BASH
bun --version

Trebali biste vidjeti 1.3.x ili novije. Bun je sada spreman. Nije potrebna zasebna Node.js instalacija za Bun projekte, iako je uobičajeno imati Node.js instaliran uz Bun i radi bez sukoba.

Stvorite direktorij projekta, instalirajte Fastify i napišite prvu poslužiteljsku datoteku — sve u TypeScriptu, sve bez koraka izgradnje.

01

Stvorite projekt i instalirajte ovisnosti

BASH
mkdir my-bun-server && cd my-bun-server
bun init
bun add fastify

bun init stvara minimalni package.json s postavljenim "type": "module". bun add fastify instalira Fastify iz npm-a — Bunov upravitelj paketa preuzima i razrješava ovisnosti 10-30x brže od npm-a. [1]

02

Stvorite ulaznu točku poslužitelja

TYPESCRIPT
// server.ts
import Fastify from "fastify";

const fastify = Fastify({ logger: true });

fastify.get("/", async (request, reply) => {
  return { hello: "world", runtime: "bun" };
});

fastify.get("/health", async (request, reply) => {
  return { status: "ok", uptime: process.uptime() };
});

const start = async () => {
  try {
    await fastify.listen({ port: 3000, host: "0.0.0.0" });
    console.log("Server running at http://localhost:3000");
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

start();

Ovo je standardni Fastify kod. Jedina razlika od Node.js-a: pokrećete ga s bun umjesto node, i .ts ekstenzija radi izravno.

03

Pokrenite poslužitelj

BASH
bun run server.ts

To je to. Nema tsc, nema ts-node, nema nodemon, nema koraka izgradnje. Bun čita TypeScript datoteku, briše tipove u fazi analize i izvršava je. Za razvoj s hot reload-om koristite bun --hot server.ts — Bun čuva stanje aplikacije kroz ponovna učitavanja, što je brže od Node.js-ove --watch zastavice koja ponovno pokreće cijeli proces. [1]

Šta se upravo dogodilo

Stvorili ste radni Fastify poslužitelj u TypeScriptu s dvije naredbe (bun init i bun add fastify) i jednom datotekom (server.ts). Nema konfiguracijskih datoteka, nema alata za izgradnju, nema koraka transpilacije. Ovo je osnovna DX razlika između Buna i Node.js-a.

Bun pruža dva načina za stvaranje HTTP poslužitelja: izvorni Bun.serve() API i third-party framework-ove poput Fastifyja. Oba rade na Bunovom runtime-u, ali zadovoljavaju različite potrebe.

Bun.serve() je Bunov ugrađeni HTTP poslužitelj. To je najbrža opcija — benchmarkovi pokazuju otprilike 180.000 zahtjeva/sek za čisti tekst odgovore u usporedbi s Node.js-ovih 65.000 zahtjeva/sek. Idealna je za jednostavne API-je, mikroservise i krajnje točke kritične za performanse gdje želite minimalni trošak. [1][3]

Fastify dodaje strukturirani sloj: JSON Schema validaciju, optimizaciju serializacije, arhitekturu dodataka, hooks i dekoratore. Pokretanje Fastifyja na Bunu daje vam ~95.200 req/s u usporedbi s ~55.800 req/s na Node.js-u — otprilike 70% više propusnosti. Gubite nešto sirove brzine u odnosu na Bun.serve(), ali dobivate framework na razini produkcije s validacijom, obradom grešaka i proširivosti. [3]

Za većinu realnih aplikacija, Fastify na Bunu je pragmatičan izbor. Režija frameworka je frakcija ukupnog vremena zahtjeva kada dodate upite baze podataka, autentikaciju i poslovnu logiku. Sama JSON Schema validacija — koju Fastify rješava na razini frameworka s 2-3x ubrzanim serializiranjem — često opravdava izbor. [4][5]

Koristite Bun.serve() kada

Trebate maksimalnu sirovu propusnost za jednostavne krajnje točke. Gradite lagani proxy, uslugu provjere zdravlja, webhook primalac ili interni mikroservis. Želite najmanji mogući cold start za serverless implementacije. Spremni ste ručno rješavati rutiranje, validaciju i obradu grešaka.

Koristite Fastify na Bunu kada

Treba vam JSON Schema validacija i serializacija. Želite ekosustav dodataka (CORS, auth, Swagger, ograničavanje stope). Gradite REST ili GraphQL API s više ruta. Želite strukturiranu obradu grešaka i hooks životnog ciklusa zahtjeva. Trebate razvojne alate na razini produkcije.

Izbjegnite Bun.serve() kada

Vaš API ima složene zahtjeve validacije. Trebate generiranje OpenAPI/Swagger dokumentacije. Oslanjate se na framework-specifične dodatke. Vaš tim očekuje Express/Fastify uzorke za održivost.

Bun.serve() pruža najveću sirovu propusnost, ali Fastify na Bunu nudi dobro ravnotežu značajki frameworka i performansi. Stvarna razlika između Fastifyja na Bunu i Fastifyja na Node.js-u je otprilike 70%.

Snimka zaslona sekcije bun-serve-vs-fastify

Snaga Fastifyja je strukturirana validacija zahtjeva koristeći JSON Schema. Evo kako graditi validirane rute na Bunu.

01

Stvorite modul s validiranim rutama

TYPESCRIPT
// routes/users.ts
import { FastifyPluginAsync } from "fastify";

export const userRoutes: FastifyPluginAsync = async (fastify) => {
  const createUserBody = {
    type: "object",
    required: ["email", "name"],
    properties: {
      email: { type: "string", format: "email" },
      name: { type: "string", minLength: 1, maxLength: 100 },
      role: { type: "string", enum: ["admin", "user", "viewer"] },
    },
  } as const;

  fastify.post("/users", {
    schema: { body: createUserBody },
  }, async (request, reply) => {
    const { email, name, role } = request.body;
    return {
      id: crypto.randomUUID(),
      email,
      name,
      role: role ?? "user",
      createdAt: new Date().toISOString(),
    };
  });

  fastify.get("/users/:id", {
    schema: {
      params: {
        type: "object",
        properties: { id: { type: "string" } },
        required: ["id"],
      },
    },
  }, async (request, reply) => {
    const { id } = request.params as { id: string };
    return { id, message: "User lookup placeholder" };
  });
};
02

Registrirajte rute u glavnoj poslužiteljskoj datoteci

TYPESCRIPT
// server.ts
import Fastify from "fastify";
import { userRoutes } from "./routes/users";

const fastify = Fastify({ logger: true });

fastify.register(userRoutes);

fastify.setErrorHandler((error, request, reply) => {
  if (error.validation) {
    reply.status(400).send({
      error: "Validation failed",
      details: error.validation,
    });
    return;
  }
  fastify.log.error(error);
  reply.status(500).send({ error: "Internal server error" });
});

const start = async () => {
  try {
    await fastify.listen({ port: 3000, host: "0.0.0.0" });
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

start();

Pokrenite s bun run server.ts. Nevažeća tijela zahtjeva sada automatski vraćaju strukturirane 400 greške.

Ključna napomena

Fastifyjeva shema validacija radi identično na Bunu i Node.js-u. Jedina razlika je da se validirani handler izvršava brže na Bunovom runtime-u. Ako vaše postojeće Fastify rute koriste JSON Schema, radit će na Bunu bez izmjena.

Bun podržava dva puta za baze podataka: svoj ugrađeni bun:sqlite modul za lagano lokalno pohranjivanje i standardne npm upravljačke programe baza podataka za PostgreSQL, MySQL, MongoDB i druge baze. Za PostgreSQL, pg upraviteljski program radi na Bunu bez izmjena. [1]

Za ORM sloj, Prisma, Drizzle ORM i TypeORM svi rade na Bunu. Prisma je posebno dobro testirana — Prisma tim je potvrdio kompatibilnost s Bunom i mnoge produkcijske implementacije koriste Prisma + Bun + PostgreSQL. [1][2]

Bunov ugrađeni SQLite modul (bun:sqlite) je koristan za prototipiranje, keširanje i implementacije s jednom instancom gdje je vanjska baza podataka prekomjerna. Za produkcijske API-je, PostgreSQL putem pg ili ORM poput Prisma je standardni izbor.

Snimka zaslona sekcije database-integration

Praktični savjet

Koristite bun:sqlite za prototipiranje i keširanje s jednom instancom. Koristite PostgreSQL + Prisma ili Drizzle za produkcijske API-je. Oboje radi na Bunu bez promjena konfiguracije osim veze s bazom podataka.

Bunov ugrađeni test runner koristi Jest-kompatibilne API-je. Većina postojećih testnih datoteka radi bez izmjena.

01

Napišite test rute

Stvorite testnu datoteku koristeći Bunov ugrađeni test runner. Uvezite describe, it i expect iz bun:test. API je Jest-kompatibilan pa postojeći NestJS/Fastify testovi migriraju s minimalnim izmjenama. Koristite app.inject() za testiranje ruta bez pokretanja pravog HTTP poslužitelja. Pokrenite sve testove s bun test, koji automatski otkriva datoteke koje odgovaraju *.test.ts i *.spec.ts. Testni suite od 500 testova završava u otprilike 1,2 sekunde u usporedbi s Jest 24 sekunde. [1]

Napomena o migraciji

Ako vaš projekt već koristi Jest, većina testnih datoteka može prijeći na bun test bez promjena. API površina je gotovo identična. Glavna razlika je brzina: testovi koji su trajali 30 sekundi s Jestom završit će u otprilike 1-2 sekunde s Bunom.

Bun pruža službene Docker slike koje su manje i pokreću se brže od Node.js ekvivalenata.

01

Stvorite produkcijski Dockerfile

DOCKERFILE
FROM oven/bun:1.3 AS base
WORKDIR /app

COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile --production

COPY src ./src

EXPOSE 3000
CMD ["bun", "run", "src/server.ts"]
02

Izgradite sliku i pokrenite kontejner

BASH
docker build -t my-bun-server .
docker run -p 3000:3000 my-bun-server

Kontejner se pokreće u manje od sekunde. Bunova prednost cold start-a (8-15ms vs 40-120ms za Node.js) je posebno vrijedna u okruženjima za orchestraciju kontejnera gdje su česta ponovna pokretanja i skaliranje uobičajeni.

Ovi benchmarkovi dolaze iz više nezavisnih izvora koji testiraju Fastify na Bunu vs Fastify na Node.js-u s identičnim hardverom i opterećenjima.

Razlika u performansama između Buna i Node.js-a je najizraženija u sirovoj HTTP propusnosti i cold start-ovima. Kada uđe režija frameworka (Fastify middleware, JSON serializacija, validacija), razlika se sužava na 40-70%. U realnim API-jima gdje upiti baze podataka i mrežni I/O dominiraju, runtime čini manje od 10% ukupnog vremena zahtjeva. Najveće praktične dobiti su u brzini pokretanja, vremenu CI/CD pipeline-a i WebSocket istovremenosti. [1][2][3]

95,200 vs 55,800

Bun ostvaruje ~70% više Fastify propusnosti od Node.js-a na identičnom hardveru. [3]

156ms vs 245ms

Bun se pokreće ~36% brže, što izravno smanjuje troškove serverless funkcija. [2]

1.2M vs 680K

Bun rješava 76% više istovremenih WebSocket veza na istom hardveru. [1]

380MB vs 512MB

Bun kontejneri troše ~25% manje memorije, omogućavajući više podova po klasteru. [1]

2s vs 30s

Bunov upravitelj paketa instalira ovisnosti 10-15x brže od npm-a. [1]

1.2s vs 24s

Bunov test runner je ~20x brži od Jest-a s kompatibilnim API-jem. [1]

Kada su brojevi najvažniji

Prednost u performansama Buna je najveća za serverless funkcije (cold start), CI/CD pipeline-ove (instalacija + brzina testiranja) i aplikacije bogate WebSocket-om. Za standardne REST API-je gdje je baza podataka usko grlo, razlika je manja ali i dalje značajna — posebno na većim skalama.

Ovo su problemi koje timovi zapravo susreću pri implementaciji Buna u produkciji.

Pretpostavljanje 100% npm kompatibilnosti. Otprilike 2% paketa — većinom izvorni C++ dodaci kompajlirani s node-gyp-om — možda neće raditi. Uobičajeni problematični paketi uključuju bcrypt (koristite bcryptjs), određene canvas implementacije i node-sass (koristite sass). Uvijek pokrenite bun install && bun test prije potvrde. [1][2]

Zanemarivanje razlika u Bunovom sakupljaču otpada. Bun koristi JSC-ov sakupljač otpada, koji je manje testiran za procese koji rade kontinuirano 72+ sata u usporedbi s V8-ovim. Za dugotrajne usluge, pratite ponašanje memorije 24-48 sati nakon migracije. [2]

Zaboravljanje revizije izvornih ovisnosti prije Docker izgradnji. Paket koji se instalira bez problema s bun install na macOS-u može propasti tijekom Docker izgradnji na Linux-u ako uključuje platformski specifične izvorne binarne datoteke. Testirajte puni pipeline izgradnje rano. [1]

Korištenje node: protokol import-a bez provjere. Bun podržava većinu node: ugrađenih modula za import, ali postoje rubni slučajevi u node:diagnostics_channel, node:vm i određenim inspector API-jima. Ako vaš kod koristi duboke Node.js interne module, testirajte svaki import eksplicitno. [1][2]

Očekivanje da sav Express middleware radi nepromijenjen. Većina Express middleware-a radi s Fastifyjem (putem @fastify/express adaptera), ali neki paketi oslanjaju se na Express-specifične mutacije request/response objekata. Testirajte svaki middleware pojedinačno. [4]

Siguran put migracije

Započnite koristeći Bun kao upravitelj paketa i test runner dok zadržavate Node.js kao runtime. Ovo vam daje 80-90% brzinske prednosti s nultim produkcijskim rizikom. Prebacite runtime na Bun tek nakon što vaš cijeli testni suite prođe i kada validirate ponašanje memorije u staging okruženju.

Oba runtime-a su spremna za produkciju u 2026. Izbor ovisi o vašim specifičnim ograničenjima.

Odaberite Bun za nove projekte

Kontrolirate stablo ovisnosti. Želite izvorni TypeScript, brži CI/CD, niže serverless troškove ili maksimalnu HTTP propusnost. Kompatibilnost je odlična za standardne web framework-e (Fastify, Hono, Express) i ORM-e (Prisma, Drizzle, TypeORM).

Zadržite Node.js za postojeće projekte

Vaša aplikacija ima stotine ovisnosti, izvornih C++ dodataka ili godina produkcijskog očvršćavanja. Dobitak u performansama rijetko opravdava trošak migracije kada runtime nije usko grlo — upiti baze podataka i mrežni I/O obično dominiraju.

Koristite hibridni pristup

Bun za alate (upravljanje paketima, testiranje) + Node.js za produkcijski runtime. Ovo je pragmatični enterprise uzorak: 80-90% brži CI/CD s nultim rizikom migracije. Nekoliko Fortune 500 kompanija usvojilo je ovaj točan uzorak 2026.

Kratki odgovori na uobičajena pitanja o pokretanju Fastifyja na Bunu.

Radi li Fastify na Bunu bez izmjena?

Da. Fastify radi na Bunu bez modifikacija koda. Sve osnovne funkcije — rutiranje, validacija, hooks, dodaci, serializacija — rade identično. Benchmarkovi pokazuju otprilike 70% više propusnosti na Bunu u usporedbi s Node.js-om. [3][4]

Treba li mi još uvijek tsconfig.json s Bunom?

Ne za osnovno izvršavanje. Bun pokreće .ts datoteke izvorno. Trebate tsconfig.json samo ako želite strogu provjeru tipova u vašem IDE-u ili ako ga referenciraju drugi alati (ESLint, IDE autocomplete). Bun ignoriše tsconfig.json u runtime-u. [1]

Mogu li koristiti Prisma s Bunom?

Da. Prisma radi na Bunu bez modifikacija. Prisma tim je potvrdio kompatibilnost s Bunom i mnoge produkcijske implementacije koriste Prisma + Bun + PostgreSQL. Pokrenite bun add prisma @prisma/client i generirajte vaš klijent uobičajeno. [1][2]

Šta s hot reload-om u razvoju?

Bun pruža bun --hot koji čuva stanje aplikacije kroz ponovna učitavanja — brže od Node.js-ove --watch zastavice koja ponovno pokreće cijeli proces. Za Fastify, to znači da se vaš poslužitelj ponovno pokreće u milisekundama umjesto sekundi. [1]

Je li Bun siguran za produkciju 2026.?

Da za većinu slučajeva uporabe. Bun 1.3 je dosegao stabilnu Windows podršku i 98% npm kompatibilnost. Glavna ograničenja su dugotrajni procesi (72+ sata) gdje je V8 sakupljač otpada dokazaniji, te ovisnosti o izvornim C++ dodacima. [1][2]

Kako se Bun uspoređuje s Deno-om?

Bun je brži od Deno-a u većini benchmarkova. Deno ima jači sigurnosni model (ugrađene dozvole) ali sporiju adaptaciju. Za slučaj uporabe ovog vodiča (Fastify poslužitelj), Bun ima bolju kompatibilnost frameworka i brži test runner. [2]

Izvori koji podržavaju tvrdnje o značajkama Buna runtime-a, benchmarkovima performansi, kompatibilnosti s Fastifyjem i statusu ekosustava.

Provjereno: 12. tra 2026.Vrijedi za: Bun 1.3+Vrijedi za: Fastify 5.xVrijedi za: TypeScript 5.xVrijedi za: Node.js 22+ (za usporedbu)Testirano s: Bun 1.3 runtimeTestirano s: Fastify 5.8.xTestirano s: bun:sqliteTestirano s: PostgreSQL putem pg upravljačkog programaTestirano s: Docker (oven/bun osnovna slika)

Ako procjenjujete Bun za vaš backend stack, PAS7 Studio vam može pomoći procijeniti kompatibilnost, izgraditi put migracije i isporučiti produkcijski spreman Bun + Fastify poslužitelj s validacijom, integracijom baze podataka, autentikacijom i automatizacijom implementacije.

Imamo iskustvo s Bunom, Fastifyjem, NestJS-om, PostgreSQL-om, Dockerom i cijelim backend stack-om. Bez obzira jeste li počinjali iznova ili migrirali s Node.js-a, možemo vam pomoći izbjeći uobičajene probleme i dobiti prednosti u performansama bez iznenađenja.

Vi ste ovdje01/02

Bun.js poslužitelj s Fastifyjem: od nule do produkcije

Prethodno
Sljedeće

Povezani članci

growth

AI SEO / GEO u 2026: vaši sljedeći kupci nisu ljudi — nego agenti

Pretraživanje se pomiče s klikova na odgovore. Botovi i AI agenti pretražuju, citiraju, preporučuju i sve češće kupuju. Saznajte što znači AI SEO / GEO, zašto klasični SEO više nije dovoljan i kako PAS7 Studio pomaže brendovima pobijediti u agentičkom webu.

blogs

Najmoćniji Apple čip? M5 Pro i M5 Max ruše rekorde

Analiza Apple M5 Pro i M5 Max čipova u ožujku 2026. Objašnjavamo zašto se ovi čipovi mogu smatrati najjačim profesionalnim laptop SoC-ovima koje je Apple dosad napravio, kako izgledaju protiv M4 Pro, M4 Max, M1 Pro, M1 Max i što pokazuju u usporedbi s aktualnim Intel i AMD konkurentima.

telegram-media-saver

Automatsko označavanje i pretraga spremljenih linkova

Integracija s GDrive/S3/Notion za automatsko označavanje i brzu pretragu putem search API-ja

services

Razvoj botova i usluge automatizacije

Profesionalni razvoj Telegram botova i automatizacija poslovnih procesa: chatbotovi, AI asistenti, CRM integracije, automatizacija radnih tijekova.

Profesionalni razvoj za vaše poslovanje

Kreiramo moderne web rješenja i botove za poduzeća. Saznajte kako vam možemo pomoći u postizanju ciljeva.