NODE.JS EĞİTİMİ
Node.js eğitimi, dili tek thread sanılan yerden çıkartıp ölçekli sistemlere taşıyan bir programdır. Event loop ve libuv'un async I/O modeli sezgisel açıklanır; Stream API ile büyük veri akışının backpressure kontrolüyle yönetimi günlük pratik olarak işlenir.
Program sonunda katılımcı, Express, Fastify ve NestJS arasında ürün ölçeğine göre framework seçer; Cluster module ve PM2 ile multi-core kullanımı yapar; async hook ve diagnostics_channel ile observability ekler. npm, yarn ve pnpm dependency stratejisi, native module ve N-API ile C/C++ entegrasyonu eğitimin advanced kapanışıdır. Eğitim materyalleri Node.js API belgeleri ile uyumlu hazırlanmıştır.
Katılımcı Profili
Bu eğitim, Node.js'i tek thread sanılan yerden çıkartıp ölçekli sistemlere taşımak isteyen rollere yöneliktir:
- JavaScript Geliştiricileri: Backend tarafında Node.js kullanan mühendisler
- Backend Mühendisleri: REST API ve real-time servis yazan ekipler
- Full-stack Geliştiriciler: Frontend ve backend'i tek dilde yazan roller
- DevOps Mühendisleri: Node.js servisi PM2 ve cluster ile yöneten ekipler
- IoT Geliştiriciler: Edge cihazlarda Node.js kullanan mühendisler
Ön Gereklilikler
Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:
- JavaScript temellerinde rahatlık (variable, function, callback)
- HTTP, REST API ve JSON kavramlarına aşinalık
- Komut satırı (npm, yarn) ile temel rahatlık
- Git ile sürüm kontrol akışı bilgisi
- VS Code veya benzer bir editör kullanım deneyimi
Süresi ve Tarihi
Süre: 3 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.
Kazanımlar
Eğitimi tamamlayan katılımcı, Node.js'i tek thread sanılan yerden çıkartıp ölçekli sistemlere taşır:
- Event loop ve libuv'un async I/O modelini sezgisel açıklar
- Stream API ile büyük veri akışını backpressure kontrolüyle yönetir
- Cluster module ve PM2 ile multi-core kullanımı yapar
- Express, Fastify ve NestJS arasında ürün ölçeğine göre framework seçer
- Async hook ve diagnostics_channel ile observability ekler
- npm, yarn ve pnpm arasında dependency yönetim stratejisi belirler
- Native module ve N-API ile C/C++ entegrasyonu kurar
Node.js Eğitimi Konuları
1. Node.js Runtime ve V8 Engine
- V8 JavaScript engine ve JIT compilation
- libuv ile non-blocking I/O
- Node.js sürüm akışı ve LTS politikası
- Single-threaded vs multi-process model
2. Event Loop ve Asenkron Model
- Event loop fazları: timers, pending, poll, check
- process.nextTick ve microtask queue
- setImmediate vs setTimeout
- Worker Threads ile gerçek paralel
3. Module System - CommonJS ve ESM
- CommonJS: require, module.exports
- ES Modules: import, export
- Dual package hazard ve interop
- package.json "type": "module"
- Conditional exports
4. npm, yarn, pnpm Package Manager
- npm registry ve semver
- yarn berry ve workspaces
- pnpm ile disk efficient
- Lock file ve dependency hoisting
- npm audit ve güvenlik
5. File System - fs.promises API
- Sync, callback, promise API'leri
- fs.promises modern asenkron
- fs/promises stream'leri
- watch ve watchFile dosya izleme
6. Stream API ve Pipe
- Readable, Writable, Duplex, Transform stream
- Pipe ile stream chain
- Backpressure ve high-water mark
- pipeline ile async pipe
- Buffer ve binary data
7. HTTP Server - Native Module
- http.createServer ile minimal sunucu
- Request, Response object
- HTTP/2 ile multiplexing
- HTTPS ve TLS
8. Express Framework
- Routing ve middleware pipeline
- Request parsing: body-parser, multer
- Template engines: EJS, Pug, Handlebars
- Error handling middleware
- express-rate-limit, helmet güvenlik
9. Fastify ve NestJS Alternatifleri
- Fastify: performans odaklı framework
- NestJS: opinionated, decorator-based
- Koa, Hapi, Hono alternatifleri
- Framework seçim kriterleri
10. Authentication - JWT ve Passport
- JWT (JSON Web Token) yapısı
- jsonwebtoken kütüphanesi
- Passport.js ile strategy pattern
- OAuth2 ve social login
- Session vs token-based auth
11. Database - MongoDB ve PostgreSQL Driver
- Native MongoDB driver
- node-postgres (pg) ile PostgreSQL
- Connection pooling
- Prepared statement ve SQL injection önleme
12. ORM - Prisma, Sequelize, TypeORM
- Prisma: schema-first, type-safe
- Sequelize: mature, multi-database
- TypeORM: decorator-based, ActiveRecord
- Drizzle ORM: TypeScript-first alternative
13. Real-time - WebSocket ve Socket.io
- WebSocket protocol ve native ws
- Socket.io ile fallback ve rooms
- Server-Sent Events (SSE)
- Redis adapter ile horizontal scale
14. Testing - Jest, Mocha, Supertest
- Jest: zero-config ve snapshot test
- Mocha + Chai klasik kombinasyon
- Node native test runner (node:test)
- Supertest ile HTTP API test
- Vitest hızlı alternative
15. Logging - Winston ve Pino
- Winston: feature-rich logging
- Pino: hızlı, JSON output
- Log levels ve transport
- Structured logging ve correlation ID
16. Process Management - PM2 ve Cluster
- cluster module ile çok-core kullanım
- PM2 ile production process manager
- Graceful shutdown ve zero-downtime
- systemd integration
17. Performance - clinic.js ve autocannon
- clinic.js: Doctor, Flame, Bubbleprof
- autocannon ile load test
- --inspect ile Chrome DevTools profiling
- Memory leak ve heap snapshot
18. Production Deploy - Docker ve Kubernetes
- Node.js Dockerfile best practices
- Multi-stage build ile küçük image
- Graceful shutdown ve SIGTERM
- Health check endpoint
- Reverse proxy: Nginx, Traefik
NODE.JS EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları
Event loop'un microtask ve macrotask sırası nasıl çalışır?
Node.js event loop fazlara ayrılır (timers, pending callback, poll, check). Her faz sonunda microtask queue (Promise.then, process.nextTick) tamamen tüketilir. process.nextTick microtask'tan da öncelikli — recursive nextTick I/O'yu starve edebilir. setImmediate check fazında çalışır.
Stream backpressure neden kritik?
Readable stream consumer'dan hızlı veri üretirse memory şişer. .pipe() veya pipeline() otomatik backpressure yönetir — destination yavaşsa source pause olur. Manuel olarak .write() return value false dönerse drain event'ini beklemek gerekir. Büyük dosya işlemede backpressure ignored edildiğinde OOM klasiktir.
Cluster module ile PM2 arasında karar?
Cluster module built-in, basit multi-core kullanımı — worker process'leri master ile zero-config çoğaltır. PM2 production-grade process manager — log rotation, restart on crash, monitoring, deploy. Üretim ortamı için PM2 standart; cluster module PM2'nin altında çalışan ilkel.
Express, Fastify ve NestJS arasında nasıl seçim yapılır?
Express minimal, geniş ecosystem ama performans modern alternatif kadar yüksek değil. Fastify schema-based, performans odaklı, 2-3x daha hızlı. NestJS opinionated framework (Angular-tarzı, DI, decorator) — enterprise yapı için. Küçük API Express/Fastify; karmaşık iş kuralı NestJS.
Worker threads ile cluster arasında ne zaman hangisi?
Cluster process-level parallel — her worker ayrı V8 instance, memory paylaşımı yok, IPC ile mesajlaşma. Worker threads thread-level parallel — SharedArrayBuffer ile veri paylaşımı, memory verimli, CPU-bound iş için doğru. I/O-bound iş genelde tek thread + async yeterli; CPU-heavy iş worker threads'i çağırır.
Native module ve N-API ile C++ entegrasyonu ne zaman gerekli?
Performans-kritik CPU-bound iş (image processing, crypto, simulation) veya mevcut C/C++ kütüphanesini kullanmak gerekiyorsa N-API binding yazılır. node-gyp ile derlenir; N-API ABI-stable, Node.js sürüm değişiminde yeniden derlemeye gerek kalmaz. node-addon-api C++ wrapper'ı kullanımı kolaylaştırır.



