Next.js Projelerinde Vercel Üzerinden Edge Fonksiyonları Nasıl Dağıtılır?
Modern web geliştirme süreçlerinde performans, kullanıcı deneyimini belirleyen en kritik faktörlerin başında gelmektedir. Next.js projelerinde Vercel üzerinden Edge Fonksiyonları dağıtmak, uygulamanızın mantıksal işlemlerini kullanıcıya coğrafi olarak en yakın noktada gerçekleştirerek gecikme sürelerini (latency) minimuma indirmenize olanak tanır. Sunucusuz (serverless) mimarinin sunduğu esneklik ile Edge ağının hızı birleştiğinde, ölçeklenebilir ve yüksek performanslı uygulamalar oluşturmak artık standart bir pratik haline gelmiştir.
Edge Fonksiyonları, geleneksel Node.js çalışma zamanına göre çok daha hızlı başlatılma sürelerine sahip olan V8 izole ortamlarında çalışır. Bu rehberde, bir Next.js projesini Vercel altyapısında Edge Runtime kullanarak nasıl yayına alacağınızı, yapılandırma detaylarını ve dikkat etmeniz gereken teknik sınırları adım adım inceleyeceğiz. 2026 yılı standartlarında, optimize edilmiş bir dağıtım süreci için gerekli tüm teknik adımları aşağıda bulabilirsiniz.
Edge Fonksiyonları Nedir ve Neden Tercih Edilmelidir?
Edge Fonksiyonları, kodunuzun merkezi bir veri merkezinde değil, kullanıcının bulunduğu bölgeye en yakın uç noktalarda (Edge Locations) çalıştırılması prensibine dayanır. Bu yaklaşım, özellikle küresel ölçekte hizmet veren uygulamalar için "Time to First Byte" (TTFB) değerlerini dramatik şekilde düşürür.
Geleneksel Sunucusuz Fonksiyonlar ile Edge Arasındaki Fark
Geleneksel sunucusuz fonksiyonlar genellikle daha ağır Node.js çalışma zamanlarını kullanır ve daha geniş bir kütüphane desteğine sahiptir. Ancak, bu durum soğuk başlatma (cold start) sürelerini artırabilir. Edge Fonksiyonları ise daha kısıtlı bir çalışma ortamı sunsa da, milisaniyeler içinde ayağa kalkar ve anlık yanıt gerektiren süreçler için idealdir.
Hangi Durumlarda Edge Fonksiyonları Kullanılmalıdır?
- Kullanıcıya özel içeriklerin (kişiselleştirilmiş başlıklar, dil tercihleri) anlık olarak dönüştürülmesi.
- Güvenlik duvarı (WAF) kuralları veya istek engelleme (IP blocking) süreçleri.
- A/B testi yönlendirmeleri ve dinamik içerik sunumu.
- Hızlı API ara katman yazılımları (middleware) ve kimlik doğrulama kontrolleri.
Next.js Projesinde Edge Runtime Yapılandırması
Next.js, Edge Runtime desteğini yerleşik olarak sunar. Bir sayfayı veya API rotasını Edge ortamında çalıştırmak için sadece belirli bir yapılandırma değişkenini dışa aktarmanız yeterlidir. Bu işlem, Vercel'in derleme sürecinde kodunuzun hangi çalışma zamanı için optimize edileceğini belirler.
Sayfa Bazlı Runtime Belirleme
Next.js projenizde belirli bir sayfanın veya API route dosyasının Edge üzerinde çalışmasını sağlamak için dosyanın en üstüne aşağıdaki yapılandırmayı eklemeniz gerekir:
export const runtime = 'edge';
Bu satır, Next.js'e bu özel dosyanın Node.js yerine Edge Runtime kullanılarak derlenmesi talimatını verir. Vercel, dağıtım aşamasında bu dosyayı otomatik olarak Edge ağındaki düğümlere dağıtacaktır.
Middleware Kullanımı
Next.js Middleware, varsayılan olarak Edge Runtime üzerinde çalışır. Uygulamanın genelinde geçerli olacak yönlendirmeler, çerez kontrolleri veya başlık manipülasyonları için middleware.ts dosyasını kullanmak, en verimli Edge kullanım biçimlerinden biridir.
Kritik Uyarı: Edge Runtime, Node.js'in tüm API'lerini desteklemez. Özellikle dosya sistemi (fs) erişimi veya bazı yerleşik Node.js modülleri (net, tls gibi) Edge ortamında kullanılamaz. Kodunuzu yazarken bu bağımlılıkları göz önünde bulundurmanız gerekir.
Vercel Üzerinden Dağıtım Adımları
Projenizi Vercel'e dağıtmak, yerel geliştirme ortamından canlıya geçişin en önemli aşamasıdır. Vercel, Next.js ile entegre olduğu için Edge Fonksiyonlarını otomatik olarak algılar ve yapılandırır.
- Proje Hazırlığı: Projenizin kök dizininde yer alan
package.jsondosyasında Next.js sürümünün güncel olduğundan emin olun. - Vercel CLI Kurulumu: Terminal üzerinden
npm i -g vercelkomutu ile Vercel CLI aracını sisteminize dahil edin. - Dağıtım Komutu: Proje dizininde
vercelkomutunu çalıştırın. CLI, projenizi analiz edecek ve Edge rotalarını otomatik olarak tespit edecektir. - Yapılandırma Onayı: Vercel paneli üzerinden projenizin "Functions" sekmesine giderek, hangi rotaların "Edge" olarak işaretlendiğini doğrulayın.
- Canlı Yayın:
vercel --prodkomutu ile projenizi üretim ortamına (production) taşıyın.
Edge Fonksiyonları İçin Performans Optimizasyonu
Edge ortamında çalışan fonksiyonların başarısı, kodun hafifliği ve dış bağımlılıkların yönetimi ile doğrudan ilişkilidir. 2026 yılı itibarıyla, paket boyutları ve çalışma süresi limitleri hala en önemli kısıtlamalardır.
Paket Boyutunu Küçültme
Edge fonksiyonları, dağıtıldıkları düğümlere hızlıca yüklenmelidir. Bu nedenle, projenizde büyük kütüphaneler kullanmaktan kaçının. Sadece ihtiyacınız olan fonksiyonları içe aktarın (tree-shaking) ve mümkünse "isomorphic" (hem tarayıcı hem sunucuda çalışan) kütüphaneleri tercih edin.
Veri Tabanı Bağlantıları
Geleneksel SQL bağlantıları Edge ortamında yavaş kalabilir. Bunun yerine, HTTP üzerinden iletişim kuran veritabanı sürücülerini (Örn: Prisma Accelerate veya doğrudan REST API uç noktaları) kullanmanız, bağlantı havuzu (connection pooling) sorunlarını ortadan kaldıracaktır.
Teknik Karşılaştırma: Node.js vs Edge Runtime
| Özellik | Node.js Runtime | Edge Runtime |
|---|---|---|
| Başlatma Hızı | Orta / Yavaş | Çok Hızlı |
| Coğrafi Konum | Merkezi | Dağıtık (Edge) |
| Node.js API Desteği | Tam | Kısıtlı |
| Kullanım Alanı | Ağır hesaplamalar, DB işlemleri | Hızlı yanıt, yönlendirme, güvenlik |
Sıkça Sorulan Sorular
Edge Fonksiyonları için herhangi bir veritabanı sınırı var mı?
Edge Fonksiyonları doğrudan veritabanına bağlanmak yerine, genellikle HTTP tabanlı veritabanı sürücüleri ile çalışır. Geleneksel TCP bağlantıları Edge ortamında desteklenmediği için, bağlantı yönetimi konusunda HTTP tabanlı çözümlere odaklanmalısınız.
Edge fonksiyonlarında hata ayıklama (debugging) nasıl yapılır?
Vercel'in sunduğu "Logs" sekmesi üzerinden gerçek zamanlı hata çıktılarını takip edebilirsiniz. Ayrıca, yerel ortamda next dev komutunu kullanarak Edge Runtime simülasyonu ile geliştirme yapabilirsiniz.
Edge fonksiyonları maliyeti etkiler mi?
Vercel'in fiyatlandırma politikası, kullanılan fonksiyon türüne ve istek sayısına göre değişir. Edge Fonksiyonları genellikle standart sunucusuz fonksiyonlara göre daha verimli bir kaynak tüketimi sunar, ancak detaylı güncel fiyatlandırma için Vercel'in resmi dokümantasyonunu incelemelisiniz.
Edge fonksiyonlarında neden fs modülünü kullanamıyorum?
Edge Runtime, güvenlik ve performans nedeniyle dosya sistemine doğrudan erişimi engeller. Kodunuzun izole bir ortamda çalışması, hem güvenlik hem de hız açısından kritik bir gerekliliktir.
Edge fonksiyonları ile hangi dilleri kullanabilirim?
Next.js projelerinde Edge Fonksiyonları öncelikli olarak JavaScript ve TypeScript dillerini destekler. Bu diller, Edge Runtime'ın sunduğu V8 motoru ile tam uyumlu çalışmaktadır.
Sonuç
Next.js projelerinde Vercel üzerinden Edge Fonksiyonları dağıtmak, uygulamanızı bir üst seviyeye taşıyacak en etkili modernizasyon adımlarından biridir. Doğru yapılandırılmış bir Edge stratejisi, sadece hız kazandırmakla kalmaz, aynı zamanda küresel kullanıcı tabanınız için tutarlı bir deneyim sağlar. Teknik kısıtlamaları (Node.js API desteği gibi) göz önünde bulundurarak, projenizin kritik parçalarını Edge ortamına taşımak, 2026 yılı web standartlarında rekabetçi kalmanızı sağlayacaktır. Unutmayın, en iyi performans optimizasyonu, kodunuzun kullanıcıya en yakın noktada çalıştırılmasıyla başlar.
Next.js Projelerinde Vercel Üzerinden Edge Fonksiyonları Nasıl Dağıtılır?
Modern web geliştirme dünyasında kullanıcı deneyimini belirleyen en temel faktörlerden biri "hız"dır. Next.js ve Vercel ikilisi, bu hızı uç noktalara taşımak için Edge Fonksiyonları (Edge Functions) teknolojisini sunar. Bu rehberde, bir Next.js projesini Edge Runtime üzerinde nasıl yapılandıracağınızı, dağıtım süreçlerini ve performans optimizasyonlarını derinlemesine inceleyeceğiz.
Edge Fonksiyonları Nedir ve Neden Tercih Edilmelidir?
Edge Fonksiyonları, kodunuzun merkezi bir sunucu yerine, kullanıcıya coğrafi olarak en yakın veri merkezlerinde (Edge Network) çalıştırılmasını sağlayan bir teknolojidir. Geleneksel sunucusuz (serverless) fonksiyonlar genellikle belirli bir bölgede (örneğin Frankfurt veya İstanbul) çalışırken, Edge fonksiyonları dünya genelindeki yüzlerce lokasyonda anlık olarak tetiklenebilir.
Neden Edge Fonksiyonları?
- Düşük Gecikme (Low Latency): Kullanıcı ile sunucu arasındaki fiziksel mesafe minimize edildiği için yanıt süresi (TTFB) ciddi oranda düşer.
- Hızlı Başlangıç (Cold Start): Edge Runtime, Node.js tabanlı geleneksel çalışma zamanlarına göre çok daha hafif olduğu için "cold start" süresi neredeyse sıfırdır.
- Küresel Ölçeklenebilirlik: Trafik arttıkça yük, otomatik olarak en yakın Edge lokasyonlarına dağıtılır.
Geleneksel Sunucusuz Fonksiyonlar ile Edge Arasındaki Fark
Geleneksel Node.js tabanlı Serverless fonksiyonlar, tam bir Node.js çalışma zamanı sunar. Bu, tüm npm paketlerini kullanabileceğiniz anlamına gelir. Ancak Edge Runtime, V8 motoru üzerinde çalışan, kısıtlı ancak son derece hızlı bir ortamdır.
| Özellik | Node.js Serverless | Edge Runtime |
|---|---|---|
| Başlangıç Süresi | Orta / Yavaş | Çok Hızlı |
| Dosya Sistemi Erişimi | Var | Yok |
| Paket Desteği | Neredeyse Tamamı | Sadece Web Standartları |
| Çalışma Alanı | Belirli Bir Bölge | Küresel (Global) |
Hangi Durumlarda Edge Fonksiyonları Kullanılmalıdır?
Her fonksiyon Edge için uygun olmayabilir. Özellikle ağır veri işleme veya büyük kütüphane bağımlılıkları gerektiren işlemler için Node.js daha uygundur. Ancak aşağıdaki senaryolar için Edge idealdir:
- A/B Testleri: Kullanıcıyı farklı varyasyonlara yönlendirme işlemlerini anlık olarak yapmak.
- Kişiselleştirilmiş İçerik: Kullanıcının konumuna veya cihazına göre dinamik içerik sunmak.
- Güvenlik ve Kimlik Doğrulama: Token kontrolü veya bot engelleme işlemlerini ana sunucuya ulaşmadan Edge üzerinde gerçekleştirmek.
- Dinamik Yönlendirmeler: Kullanıcıyı coğrafi lokasyonuna göre farklı dillerdeki sayfalara yönlendirmek.
Next.js Projesinde Edge Runtime Yapılandırması
Next.js projenizde bir fonksiyonu Edge Runtime'a geçirmek oldukça basittir. İlgili API route veya sayfa dosyanızın en üstüne runtime yapılandırmasını eklemeniz yeterlidir.
export const runtime = 'edge'; // Veya 'experimental-edge'
export default async function handler(req) {
return new Response('Merhaba, Edge dünyasından!');
}
Sayfa Bazlı Runtime Belirleme
Next.js, projenin tamamını değil, sadece ihtiyaç duyduğunuz sayfaları veya API rotalarını Edge üzerinde çalıştırmanıza izin verir. Bu esneklik, karmaşık projelerde performans ve uyumluluk dengesini kurmanıza yardımcı olur.
Middleware Kullanımı
Middleware, Next.js'in Edge özelliklerini kullanmanın en yaygın yoludur. İstek henüz uygulamanıza ulaşmadan önce araya girerek yönlendirme, kimlik doğrulama veya başlık (header) manipülasyonu yapmanıza olanak tanır.
Örnek: Coğrafi Konuma Göre Yönlendirme
Middleware dosyanızda next/server kütüphanesinden gelen NextRequest ve NextResponse nesnelerini kullanarak kullanıcının ülkesini tespit edebilirsiniz:
import { NextResponse } from 'next/server';
export function middleware(request) {
const country = request.geo?.country || 'TR';
if (country === 'US') {
return NextResponse.rewrite(new URL('/us', request.url));
}
return NextResponse.next();
}
Vercel Üzerinden Dağıtım Adımları
- Proje Hazırlığı: Next.js projenizin
package.jsondosyasında güncel olduğundan emin olun. - Vercel CLI Kurulumu:
npm i -g vercelkomutu ile CLI aracını yükleyin. - Deploy: Terminalde
vercelkomutunu çalıştırın. Vercel,runtime: 'edge'yapılandırmasını otomatik olarak algılayacak ve fonksiyonlarınızı Edge ağında dağıtacaktır. - Doğrulama: Vercel Dashboard üzerinden fonksiyonunuzun loglarına girerek "Edge Runtime" ibaresini gördüğünüze emin olun.
Edge Fonksiyonları İçin Performans Optimizasyonu
Edge fonksiyonları çok hızlı olsa da, kötü yazılmış kodlar bu avantajı yok edebilir. Performansı maksimize etmek için şu kurallara dikkat edin:
Paket Boyutunu Küçültme
Edge fonksiyonlarında paket boyutu, soğuk başlangıç süresini doğrudan etkiler. lodash gibi devasa kütüphanelerin tamamını import etmek yerine, sadece ihtiyacınız olan fonksiyonu import edin.
Veri Tabanı Bağlantıları
Geleneksel SQL bağlantıları (TCP tabanlı) Edge ortamında yavaş çalışabilir. Bunun yerine, HTTP tabanlı veya Edge-ready veritabanı sürücülerini (örn: Prisma Edge, PlanetScale, Upstash Redis) tercih etmelisiniz.
Teknik Karşılaştırma: Node.js vs Edge Runtime
Geliştiricilerin en sık yaptığı hata, Node.js'in sunduğu tüm API'lerin Edge'de de çalışacağını varsaymaktır. Edge Runtime, Web Standards API (Fetch, Request, Response, URL, Crypto) üzerine kuruludur.
- Node.js:
fs,path,child_processgibi yerel sistem modüllerini destekler. - Edge Runtime: Bu modülleri desteklemez. Sadece tarayıcı benzeri standartları destekler.
Sıkça Sorulan Sorular
Edge fonksiyonları için herhangi bir veritabanı sınırı var mı?
Doğrudan bir sınır yoktur, ancak bağlantı havuzu (connection pooling) yönetimi kritiktir. Edge fonksiyonları kısa ömürlü olduğu için her istekte yeni bir veritabanı bağlantısı açmak gecikmeye neden olur. Bu yüzden HTTP üzerinden çalışan veritabanı servisleri kullanılmalıdır.
Edge fonksiyonlarında hata ayıklama (debugging) nasıl yapılır?
Vercel Dashboard üzerindeki "Logs" sekmesi en temel aracınızdır. Ayrıca yerel geliştirmede vercel dev komutu, Edge ortamını simüle ederek hata ayıklamanıza olanak tanır.
Edge fonksiyonları maliyeti etkiler mi?
Vercel'in fiyatlandırma politikası, Edge fonksiyonlarının kullanım sıklığına ve süresine göre değişir. Genellikle daha az kaynak tükettikleri için geleneksel fonksiyonlara göre daha maliyet etkin olabilirler, ancak detaylı güncel fiyatlandırma için Vercel'in resmi dokümantasyonunu incelemelisiniz.
Edge fonksiyonlarında neden fs modülünü kullanamıyorum?
Edge Runtime, güvenlik ve performans nedeniyle dosya sistemine doğrudan erişimi engeller. Kodunuzun izole bir ortamda çalışması, hem güvenlik hem de hız açısından kritik bir gerekliliktir.
Edge fonksiyonları ile hangi dilleri kullanabilirim?
Next.js projelerinde Edge Fonksiyonları öncelikli olarak JavaScript ve TypeScript dillerini destekler. Bu diller, Edge Runtime'ın sunduğu V8 motoru ile tam uyumlu çalışmaktadır.
Sonuç
Next.js projelerinde Vercel üzerinden Edge Fonksiyonları dağıtmak, uygulamanızı bir üst seviyeye taşıyacak en etkili modernizasyon adımlarından biridir. Doğru yapılandırılmış bir Edge stratejisi, sadece hız kazandırmakla kalmaz, aynı zamanda küresel kullanıcı tabanınız için tutarlı bir deneyim sağlar. Teknik kısıtlamaları (Node.js API desteği gibi) göz önünde bulundurarak, projenizin kritik parçalarını Edge ortamına taşımak, 2026 yılı web standartlarında rekabetçi kalmanızı sağlayacaktır. Unutmayın, en iyi performans optimizasyonu, kodunuzun kullanıcıya en yakın noktada çalıştırılmasıyla başlar.
Edge Fonksiyonlarında Sık Karşılaşılan Hatalar ve Çözüm Yöntemleri
Next.js projelerinde Edge Runtime'a geçiş yaparken geliştiricilerin en sık karşılaştığı sorunlar genellikle Node.js ekosistemine olan bağımlılıklardan kaynaklanır. Edge ortamı, V8 motoru üzerinde çalışan kısıtlı bir JavaScript ortamı olduğu için Node.js'in sunduğu tüm kütüphaneler burada çalışmayabilir.
Yaygın Hata Senaryoları
- Node.js Modüllerine Erişim: 'path', 'crypto' veya 'fs' gibi modülleri içe aktarmaya çalışmak "Module not found" hatasına yol açar. Çözüm, bu modüllerin tarayıcı uyumlu veya Edge-ready alternatiflerini (örneğin
web-crypto) kullanmaktır. - Global Değişkenler: Node.js'e özgü
process.envkullanımı bazen beklenmedik sonuçlar verebilir. Next.js, Edge fonksiyonlarındaprocess.envdesteği sunsa da, karmaşık yapılandırmalardaRequestnesnesi üzerinden veri almak daha güvenlidir. - Bellek Sınırları: Edge fonksiyonları, geleneksel sunucusuz fonksiyonlara göre çok daha düşük bellek limitlerine sahiptir. Büyük veri setlerini bellekte tutmak yerine stream (akış) yöntemiyle işlemek gerekir.
Edge Fonksiyonları İçin İdeal Araç ve Kütüphane Seçimi
Edge ortamında çalışacak bir uygulama geliştirirken, paket seçimi projenin başarısı için kritiktir. "Edge-compatible" olarak etiketlenmiş kütüphaneler, uygulamanızın çalışma süresini (cold start) minimize eder.
Önerilen Araçlar
- Veri Tabanı Sürücüleri: Geleneksel ORM'ler yerine, HTTP üzerinden haberleşen (REST veya GraphQL tabanlı) sürücüleri tercih edin. Örneğin, Prisma yerine
Prisma AccelerateveyaDrizzle ORM'in Edge uyumlu sürücüleri. - HTTP İstemcileri:
axiosyerine tarayıcı yerel desteği olanfetchAPI'sini kullanmak, ek paket boyutunu sıfıra indirir. - Doğrulama (Validation):
Zodgibi hafif ve şema tabanlı doğrulama kütüphaneleri, Edge fonksiyonlarının düşük bellek kapasitesinde mükemmel performans gösterir.
Edge Fonksiyonları ve Güvenlik Stratejileri
Edge fonksiyonları kullanıcıya en yakın noktada çalıştığı için güvenlik önlemleri merkezi sunuculardan farklı bir yaklaşım gerektirir. Güvenliği sağlamak için aşağıdaki yöntemleri uygulayabilirsiniz:
Uygulanabilir Güvenlik Katmanları
- Rate Limiting (Hız Sınırlama): Edge fonksiyonları üzerinden gelen istekleri, KV (Key-Value) depolama kullanarak IP bazlı sınırlayın. Bu, DDoS saldırılarına karşı ilk savunma hattınızdır.
- JWT Doğrulaması: Kullanıcı oturumlarını Edge katmanında doğrulayarak, yetkisiz isteklerin ana sunucunuza ulaşmasını engelleyin. Bu, kaynak tüketimini ciddi oranda düşürür.
- Güvenli Çerez Yönetimi: Hassas verileri doğrudan Edge fonksiyonları üzerinden çerezlere yazarken
HttpOnlyveSecurebayraklarını mutlaka kullanın.
Teknik Karşılaştırma: Edge vs. Serverless (Node.js)
Aşağıdaki tablo, projeniz için hangi çalışma ortamını seçmeniz gerektiği konusunda karar vermenize yardımcı olacaktır.
| Özellik | Edge Runtime | Node.js (Serverless) |
|---|---|---|
| Başlangıç Hızı (Cold Start) | Çok Hızlı (ms düzeyinde) | Orta |
| Ekosistem Desteği | Sınırlı (Web standartları) | Tam (NPM paketleri) |
| Dosya Sistemi Erişimi | Yok | Var |
| Dağıtım Konumu | Global (CDN noktaları) | Bölgesel |
| Maliyet | Daha Verimli | Kullanıma Bağlı |
Örnek Senaryo: Edge ile Kişiselleştirilmiş İçerik Sunumu
Bir e-ticaret sitesinde, kullanıcının coğrafi konumuna göre fiyatları veya para birimini anlık olarak değiştirmek istediğinizi varsayalım. Geleneksel bir yapıda bu, sunucu tarafında ağır bir hesaplama gerektirir. Edge fonksiyonları ile:
Kullanıcı isteği Edge lokasyonuna ulaştığında, request.geo verisi kullanılarak konum bilgisi alınır. Bu bilgiyle birlikte önbellekteki (Vercel KV gibi) döviz kurları okunur ve yanıt milisaniyeler içinde kullanıcıya döner. Bu süreçte ana sunucuya (origin) hiç yük binmez.
Uygulama Adımları
- Vercel KV veritabanınızı oluşturun ve güncel döviz kurlarını buraya kaydedin.
- Next.js projenizde
middleware.tsdosyasını açın. request.geonesnesini kullanarak kullanıcının ülkesini tespit edin.- KV üzerinden ilgili ülkenin para birimini çekin ve başlık (header) olarak sayfaya iletin.
- Sayfa bileşenlerinizde bu başlığı okuyarak fiyatları dinamik olarak güncelleyin.
Bu yöntem, hem SEO açısından arama motorlarına hızlı yanıt dönmenizi sağlar hem de kullanıcı deneyimini (Core Web Vitals) en üst düzeye çıkarır. Karmaşık veritabanı sorgularından kaçınmak için veriyi Edge katmanına yakın tutmak, her zaman en yüksek performansı verecektir.
Next.js Projelerinde Vercel Üzerinden Edge Fonksiyonları Nasıl Dağıtılır?
Modern web geliştirme dünyasında hız, sadece bir tercih değil, bir zorunluluk haline geldi. Kullanıcıların milisaniyelerle ölçülen sabrı, geliştiricileri "Edge Computing" (Uç Bilişim) teknolojilerine yönlendiriyor. Next.js ve Vercel ikilisi, bu karmaşık teknolojiyi erişilebilir kılarak, kodunuzu dünyanın dört bir yanındaki veri merkezlerine dağıtmanıza olanak tanıyor.
Edge Fonksiyonları Nedir ve Neden Tercih Edilmelidir?
Edge fonksiyonları, geleneksel sunucuların aksine, kullanıcıya fiziksel olarak en yakın veri merkezinde çalışan hafif kod bloklarıdır. Bir sunucunun merkezi bir bölgede (örneğin sadece Frankfurt'ta) çalışması yerine, Edge fonksiyonları kullanıcı Tokyo'daysa Tokyo'daki bir düğümde, New York'taysa New York'taki bir düğümde çalışır.
Neden Edge Fonksiyonları?
- Düşük Gecikme (Latency): Veri, kullanıcıya daha kısa bir fiziksel mesafe kat ederek ulaşır.
- Hızlı Başlatma: V8 izoleleri sayesinde, geleneksel Node.js "cold start" sorunları neredeyse tamamen ortadan kalkar.
- Ölçeklenebilirlik: Trafik artışlarında sunucu yönetimi yapmanıza gerek kalmadan otomatik ölçeklenir.
Geleneksel Sunucusuz Fonksiyonlar ile Edge Arasındaki Fark
Geleneksel Serverless (Node.js) fonksiyonları, tam bir Node.js çalışma zamanı sunar. Bu, devasa kütüphaneleri kullanabileceğiniz anlamına gelir ancak "cold start" süresi daha uzundur. Edge Runtime ise V8 tabanlı, son derece kısıtlı ama bir o kadar hızlı bir ortamdır.
Teknik Karşılaştırma: Node.js vs Edge Runtime
| Özellik | Node.js Serverless | Edge Runtime |
|---|---|---|
| Başlatma Süresi | Yavaş (Cold Start) | Anlık (Milisaniye) |
| Kütüphane Desteği | Geniş (fs, net, vb.) | Sınırlı (Web Standartları) |
| Dağıtım | Bölgesel | Global (Dünya Çapında) |
Hangi Durumlarda Edge Fonksiyonları Kullanılmalıdır?
Her proje Edge için uygun değildir. Edge fonksiyonları, özellikle I/O (girdi/çıktı) yoğunluklu işlemler için mükemmeldir. Örneğin, bir API isteğini yönlendirme, kimlik doğrulama (authentication) kontrolü veya dinamik içerik kişiselleştirme işlemleri için idealdir. Ancak, ağır veri işleme veya CPU yoğunluklu arka plan görevleri için Node.js Runtime hala tercih edilmelidir.
Next.js Projesinde Edge Runtime Yapılandırması
Next.js'de Edge Runtime'ı aktif etmek oldukça basittir. Projenizdeki herhangi bir API route veya sayfa dosyasında, dışa aktarılan bir config nesnesi ile bunu belirtebilirsiniz.
Sayfa Bazlı Runtime Belirleme
export const runtime = 'edge'; // Bu sayfanın Edge üzerinde çalışmasını sağlar
Middleware Kullanımı
Middleware, Edge fonksiyonlarının en güçlü kullanım alanlarından biridir. İstek henüz uygulamanıza ulaşmadan, yani "kenarda" iken müdahale etmenize olanak tanır. Örneğin, kullanıcı giriş yapmamışsa onu doğrudan giriş sayfasına yönlendirmek için Middleware kullanılabilir.
Vercel Üzerinden Dağıtım Adımları
- Vercel CLI'ı bilgisayarınıza kurun:
npm i -g vercel - Projenizin kök dizininde
vercel loginkomutunu çalıştırın. vercel deploykomutu ile projenizi Vercel'e gönderin.- Vercel Dashboard üzerinden fonksiyonlarınızın hangi bölgelerde çalıştığını gözlemleyin.
Edge Fonksiyonlarında Sık Karşılaşılan Hatalar ve Çözüm Yöntemleri
Edge Runtime, Node.js API'lerinin tamamını desteklemez. En sık karşılaşılan hata, fs (file system) veya path gibi Node.js'e özgü modüllerin kullanılmasıdır.
Yaygın Hata Senaryoları
- Modül Bulunamadı Hataları: "fs module not found" hatası alıyorsanız, kodunuzu Edge uyumlu kütüphanelerle (örneğin
node-fetchyerine yerelfetch) değiştirin. - Bellek Sınırı: Edge fonksiyonları çok az bellek tüketir. Büyük veri setlerini belleğe yüklemekten kaçının.
Edge Fonksiyonları İçin İdeal Araç ve Kütüphane Seçimi
Edge üzerinde çalışacak kütüphanelerin "Edge-compatible" olması gerekir. Geleneksel veritabanı sürücüleri (örneğin eski pg kütüphanesi) çalışmayabilir. Bunun yerine HTTP tabanlı sürücüler (örneğin @vercel/postgres veya Prisma Accelerate) kullanmalısınız.
Önerilen Araçlar
- Veritabanı: Vercel KV, Upstash Redis, Neon (HTTP modu).
- Kimlik Doğrulama: NextAuth.js (Edge uyumlu yapılandırma ile).
- İstek Yönetimi: Web Standard
RequestveResponsenesneleri.
Edge Fonksiyonları ve Güvenlik Stratejileri
Edge fonksiyonları, geleneksel sunuculara göre daha küçük bir saldırı yüzeyine sahiptir. Ancak, yine de bazı güvenlik önlemleri almalısınız.
Uygulanabilir Güvenlik Katmanları
- Rate Limiting: Vercel KV kullanarak belirli IP adreslerinden gelen istekleri sınırlayın.
- Environment Variables: Hassas verilerinizi Vercel Dashboard üzerinden şifreli olarak tanımlayın.
- CORS Politikaları: Fonksiyonlarınızın hangi domainlerden çağrılabileceğini net bir şekilde tanımlayın.
Örnek Senaryo: Edge ile Kişiselleştirilmiş İçerik Sunumu
Bir e-ticaret sitesinde, kullanıcının coğrafi konumuna göre fiyatları veya para birimini anlık olarak değiştirmek istediğinizi varsayalım. Geleneksel bir yapıda bu, sunucu tarafında ağır bir hesaplama gerektirir. Edge fonksiyonları ile:
Kullanıcı isteği Edge lokasyonuna ulaştığında, request.geo verisi kullanılarak konum bilgisi alınır. Bu bilgiyle birlikte önbellekteki (Vercel KV gibi) döviz kurları okunur ve yanıt milisaniyeler içinde kullanıcıya döner. Bu süreçte ana sunucuya (origin) hiç yük binmez.
Uygulama Adımları
- Vercel KV veritabanınızı oluşturun ve güncel döviz kurlarını buraya kaydedin.
- Next.js projenizde middleware.ts dosyasını açın.
- request.geo nesnesini kullanarak kullanıcının ülkesini tespit edin.
- KV üzerinden ilgili ülkenin para birimini çekin ve başlık (header) olarak sayfaya iletin.
- Sayfa bileşenlerinizde bu başlığı okuyarak fiyatları dinamik olarak güncelleyin.
Bu yöntem, hem SEO açısından arama motorlarına hızlı yanıt dönmenizi sağlar hem de kullanıcı deneyimini (Core Web Vitals) en üst düzeye çıkarır. Karmaşık veritabanı sorgularından kaçınmak için veriyi Edge katmanına yakın tutmak, her zaman en yüksek performansı verecektir.

Yorumlar (0)
Yorum Yaz