Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Node.js'ten SQL Server'a: mssql Paketi, Connection Pool, Parameterized Query ve Transaction
Node.js'ten SQL Server'a mssql paketiyle bağlanırken pool uygulama başında bir kez açılır, her değer parametre olarak gider, sipariş ve stok tek transaction'da yazılır ve decimal kolonlar SQL'de kuruşa çevrilir. Gerçek çıktılarla 19,99'u 1998 cent'e çeviren float hatası, 100 sorguda 16,6 sn'ye karşı 0,16 sn, SQL injection ve LIKE joker karakterleri, son kopya yarışı, EREQINPROG ve 1 milyon satırı 139 MB ile stream eden export.
Express API'yi Production'a Hazırlamak: Configuration, pino ile Structured Logging, Health Check, Graceful Shutdown ve Cluster
Production'a hazır bir Express API, configuration'ı açılışta şemayla doğrular, pino ile request id'li ve secret'ları gizlenmiş JSON log yazar, liveness ile readiness'i ayırır ve SIGTERM'de yeni bağlantıyı kesip açık request'leri bitirdikten sonra pool'u kapatır. Gerçek çıktılarla 98 MB yerine 22 MB inen export, tam inen dosya ve timeout'ta kontrollü kesinti, drain sırasında 503, PID 1'in 10 saniyelik bekleyişi ve 4 worker'lı cluster.
Express'te Güvenlik: helmet, CORS, Rate Limiting, JWT Doğrulama ve Input Sınırları
Express API'yi güvenli hâle getirmek için helmet ile security header'ları eklenir, CORS bir origin allow-list'iyle sınırlanır, rate limit trust proxy doğru ayarlanarak uygulanır, JWT jose ile sabit algoritma, issuer, audience ve süre kontrolüyle doğrulanır ve her sipariş erişiminde sahiplik kontrol edilir. Gerçek çıktılarla X-Forwarded-For ile aşılan limit, her origin'i yansıtan CORS ayarı, alg none ve algorithm confusion'ın 401'i, BOLA'ya karşı 404 ve prototype pollution.
Node.js'te Test: node:test, Mocking, Coverage ve supertest ile API Testi
Node.js'te test için ek paket gerekmez: node:test ile describe/it, t.mock.fn ve t.mock.method, mock timer'lar ve snapshot yerleşik gelir; supertest ise Express app'ini port açmadan, sahte repository'lerle uçtan uca çağırır. Gerçek çıktılarla await'siz assert.rejects'in yeşil tiki ve kırmızı dosyası, 0,2 saniyede 26 test, stok ve BOLA testleri, eksik snapshot hatası ve SQL dosyaları eklenince %80'den %62'ye düşen coverage.
Node.js 22'den 26'ya Gelenler: require(esm), Type Stripping, Permission Model, Temporal ve Yeni Release Takvimi
Node.js 22'den 26'ya require(esm), type stripping, Permission Model, global URLPattern ve Web Storage geldi; 26 Temporal'ı varsayılan olarak açtı, _stream_* module'lerini ve writeHeader'ı kaldırdı, NODE_MODULE_VERSION'ı 147'ye çıkardı. Gerçek çıktılarla Date ile Temporal'ın farklı teslimat tarihi, --throw-deprecation ile CI'da yakalanan deprecation'lar, Node 24'te derlenip 26'da yüklenemeyen bir addon ve Node 27 ile başlayan yıllık Alpha → Current → LTS takvimi.