n8n ile Zapier Karşılaştırması: Hangisi Seçilmeli?
Geçen ay bir müşterimizin Zapier faturasını gördüğümde içim sıkışmıştı. Aylık 600 dolar, sadece birkaç iş akışı için. “Bunun yarısına kendi sunucunda çalışan bir şey kursak olmaz mı?” diye sorduğumda, ekibin yarısı “n8n nedir ki?” diye baktı bana. İşte bu yazıyı yazmaya o gün karar verdim.
Otomasyon dünyasında Zapier neredeyse standart haline geldi. Kolaylığı tartışılmaz, ekosistemi muazzam. Ama belirli bir ölçeğin üzerine çıktığınızda ya da veri gizliliği konusunda hassas bir kurumda çalıştığınızda, Zapier’in duvarlarına çarpıyorsunuz. n8n tam da bu noktada sahneye giriyor.
Temel Fark: Felsefe ve Kontrol
Zapier SaaS odaklı bir ürün. Her şey Zapier’in sunucularında çalışıyor, verileriniz Zapier’in altyapısından geçiyor, fiyatlandırma zap sayısına ve görev (task) kullanımına göre artıyor. Bu model birçok senaryo için mükemmel çalışıyor. Küçük ekipler, hızlı prototipleme, teknik bilgi gerektirmeyen otomasyon kurulumları için Zapier gerçekten rakipsiz.
n8n ise farklı bir zihniyetle tasarlanmış. Açık kaynak kodlu (fair-code lisanslı), kendi sunucunuzda çalıştırabiliyorsunuz, Python veya JavaScript kodu doğrudan iş akışı içinde yazabiliyorsunuz, ve en önemlisi: verileriniz sizin elinizde kalıyor. n8n Cloud seçeneği de var ama asıl avantajı self-hosted olması.
Bu fark teorik değil, pratikte çok somut şekillerde karşınıza çıkıyor.
Zapier’in Gerçek Hayat Sınırları
Bir e-ticaret müşterisiyle çalışırken şöyle bir senaryo yaşadım: Sipariş geldiğinde müşteri segmentine göre farklı akışlar tetiklenmeli, büyük müşteriler için ek bir onay adımı eklenmeli, ve tüm bu süreçte kendi veritabanlarına yazılmalıydı. Zapier’de bunu kurmaya çalıştığımızda birkaç sorunla karşılaştık:
Görev limitleri: Her adım bir “task” sayılıyor. Karmaşık iş akışlarında aylık task limiti hızla doluyordu.
Branching (dallanma) kısıtları: Zapier’de koşullu mantık kurmak için “Paths” özelliğini kullanıyorsunuz ama bu özellik belirli plan seviyelerinden itibaren geliyor ve karmaşıklaştıkça hantal hale geliyor.
Özel kod: Zapier’de JavaScript ya da Python kodu çalıştırabiliyorsunuz ama bu “Code by Zapier” adımı oldukça kısıtlı. Harici kütüphaneleri kullanamıyorsunuz, dosya sistemi erişiminiz yok.
Veri gizliliği: Sağlık sektöründe veya finans alanında çalışıyorsanız, müşteri verilerinin Zapier sunucularından geçmesi ciddi bir KVKK/GDPR sorunu yaratıyor.
n8n Kurulumu: İki Dakikada Çalışır Hale Getirmek
n8n’i Docker ile kurmak gerçekten bu kadar basit. Bir VPS veya şirket içi sunucu üzerinde şunu çalıştırmanız yeterli:
docker run -it --rm
--name n8n
-p 5678:5678
-v ~/.n8n:/home/node/.n8n
docker.n8nio/n8n
Production ortamı için daha sağlam bir yapı istiyorsanız Docker Compose kullanın:
# docker-compose.yml oluşturun
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
n8n:
image: docker.n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=guclu_bir_sifre_koy
- N8N_HOST=n8n.sirketiniz.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://n8n.sirketiniz.com/
- GENERIC_TIMEZONE=Europe/Istanbul
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
EOF
docker-compose up -d
Zapier için böyle bir kurulum adımı yok tabii. Sadece zapier.com’a gidip kaydoluyorsunuz. Bu n8n’nin bir dezavantajı mı? Teknik olmayan kullanıcılar için evet, kesinlikle. Sysadmin için değil.
Gerçek Senaryo 1: Slack Bildirimi ile Sunucu İzleme
Diyelim ki sunucularınızın disk kullanımını izlemek ve belirli eşikleri aşınca Slack’e bildirim göndermek istiyorsunuz. Zapier’de bunu yapmak için önce bir webhook tetikleyicisi kurmanız, sonra dışarıdan veri göndermeniz gerekiyor. n8n’de ise doğrudan bir cron job ve sistem komutu çalıştırabilirsiniz.
İşte n8n’de kullanabileceğiniz bir yaklaşım. Önce sunucu tarafında disk bilgisini almak için basit bir script:
#!/bin/bash
# /usr/local/bin/disk_kontrol.sh
ESIK=85
HOSTNAME=$(hostname)
DISK_KULLANIM=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$DISK_KULLANIM" -gt "$ESIK" ]; then
echo "{"alarm": true, "kullanim": $DISK_KULLANIM, "sunucu": "$HOSTNAME"}"
else
echo "{"alarm": false, "kullanim": $DISK_KULLANIM, "sunucu": "$HOSTNAME"}"
fi
Bu script’ten gelen veriyi n8n’de işlemek için bir “Execute Command” node’u kullanabilir, sonra IF node’u ile alarm durumunu kontrol edip Slack’e mesaj gönderebilirsiniz. n8n’de JavaScript ile veri dönüştürme şöyle yapılır:
// n8n Function Node içinde
const diskVerisi = JSON.parse($input.first().json.stdout);
if (diskVerisi.alarm) {
return [{
json: {
mesaj: `⚠️ UYARI: ${diskVerisi.sunucu} sunucusunda disk kullanımı %${diskVerisi.kullanim}'e ulaştı!`,
renk: "danger",
kanal: "#ops-alarmlar"
}
}];
}
return [{ json: { atla: true } }];
Zapier’de “Execute Command” node’u yok. Bunu yapmak için bir ara API katmanı yazmanız ya da ayrı bir monitoring aracı kullanmanız gerekiyor.
Gerçek Senaryo 2: Veritabanı ile Direkt Entegrasyon
n8n’in en güçlü özelliklerinden biri veritabanlarına doğrudan bağlanabilmesi. PostgreSQL, MySQL, MongoDB, SQLite, hepsini native olarak destekliyor.
# n8n'e PostgreSQL bağlantısı için gerekli environment variable
# docker-compose.yml içine ekleyin
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres_sunucunuz
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n_db
- DB_POSTGRESDB_USER=n8n_kullanici
- DB_POSTGRESDB_PASSWORD=sifre
Zapier’de bir veritabanına doğrudan bağlanmak için ya bir middleware oluşturmanız ya da Airtable/Notion gibi bir ara katman kullanmanız gerekiyor. Bu hem maliyet hem de gecikme açısından ekstra yük demek.
Gerçek Senaryo 3: API Entegrasyonu ve Veri Dönüştürme
Bir müşteri için şöyle bir iş akışı kurmuştum: Shopify’dan gelen siparişleri alıp kendi ERP sistemlerine uygun formata dönüştürmek ve bir REST API’ye göndermek. Zapier’de bu dönüşüm mantığını “Formatter” adımlarıyla yapmak zorunda kalıyordunuz, oldukça zahmetli.
n8n’de aynı işi yapmak için Code node’u kullanıyorsunuz:
// Shopify sipariş verisini ERP formatına dönüştür
const siparisler = $input.all();
const donusturulmus = siparisler.map(siparis => {
const veri = siparis.json;
return {
json: {
erp_siparis_no: `SP-${veri.id}`,
musteri_kodu: veri.customer?.id || 'MISAFIR',
toplam_tutar: parseFloat(veri.total_price),
para_birimi: veri.currency,
urunler: veri.line_items.map(urun => ({
stok_kodu: urun.sku,
miktar: urun.quantity,
birim_fiyat: parseFloat(urun.price)
})),
kargo_adresi: {
ad_soyad: `${veri.shipping_address?.first_name} ${veri.shipping_address?.last_name}`,
adres: veri.shipping_address?.address1,
sehir: veri.shipping_address?.city,
posta_kodu: veri.shipping_address?.zip
},
olusturma_tarihi: new Date().toISOString()
}
};
});
return donusturulmus;
Bu tür karmaşık dönüşümleri Zapier’de yapmak hem daha fazla adım gerektiriyor hem de hata ayıklamak epey zor oluyor.
n8n’de Webhook Yönetimi
n8n’in webhook yönetimi oldukça güçlü. Gelen webhook verilerini doğrulayabilir, header kontrolü yapabilirsiniz:
// Webhook doğrulama için n8n Function Node
const headers = $input.first().json.headers;
const gelen_imza = headers['x-webhook-secret'];
const beklenen_imza = 'sizin_secret_anahtariniz';
if (gelen_imza !== beklenen_imza) {
throw new Error('Yetkisiz webhook isteği reddedildi');
}
// Doğrulandı, işleme devam et
return $input.all();
Zapier’de webhook güvenliği oldukça basit düzeyde kalıyor.
n8n Komut Satırı Yönetimi
n8n’i self-hosted çalıştırdığınızda bazı yönetim işlemlerini CLI üzerinden yapabilirsiniz:
# Tüm aktif iş akışlarını listele
docker exec -it n8n n8n list:workflow
# Belirli bir iş akışını dışa aktar
docker exec -it n8n n8n export:workflow --id=5 --output=/tmp/workflow_5.json
# Tüm iş akışlarını yedekle
docker exec -it n8n n8n export:workflow --all --output=/backup/workflows/
# Yedekten geri yükle
docker exec -it n8n n8n import:workflow --input=/backup/workflows/workflow_5.json
Bu yedekleme mekanizması Zapier’de yok. Zapier iş akışlarınızı bir şekilde dışa aktaramazsınız, o da kendi formatında tutuyor. Git ile versiyon kontrolü yapmak, CI/CD pipeline’a iş akışı dağıtımı entegre etmek, ekip içinde iş akışlarını paylaşmak: bunların hepsini n8n ile yapabiliyorsunuz.
Fiyatlandırma Gerçekleri
Açık konuşmak gerekirse, n8n’in maliyeti sıfır değil. Self-hosted için bir sunucuya ihtiyacınız var. Küçük bir kurulum için bile en az 2 CPU, 2GB RAM’lik bir VPS gerekiyor.
Basit bir hesap yapalım. Hetzner’da CX21 tipi bir VPS aylık yaklaşık 6-7 Euro. Bu fiyata n8n’i çalıştırabilirsiniz. Karşılaştırmak için:
- Zapier Free: Aylık 100 görev, 5 zap
- Zapier Starter: Aylık yaklaşık 20 dolar, 750 görev
- Zapier Professional: Aylık yaklaşık 50 dolar, 2000 görev
- Zapier Team: Aylık yaklaşık 70 dolar, 2000 görev
- n8n Self-hosted: VPS maliyeti + sıfır lisans ücreti, sınırsız iş akışı ve yürütme
Yüz binlerce görev çalıştırıyorsanız bu fark devasa boyutlara ulaşıyor. Ama Zapier’in yönetim kolaylığının da bir değeri var, bunu göz ardı etmemek lazım.
Hangisini Seçmelisiniz?
Şimdi asıl soruya gelelim. Bu iki aracın da yeri var, seçim tamamen kullanım senaryonuza bağlı.
Zapier tercih edin eğer:
- Teknik ekibiniz yok veya minimal teknik bilgi ile yönetmek istiyorsunuz
- Hızlı kurulum ve 400’den fazla entegrasyon önceliğiniz
- Aylık görev sayısı düşük ve maliyet sorun değil
- Sunucu yönetimi yapmak istemiyorsunuz
- Müşteri destek hattına ihtiyaç duyuyorsunuz
n8n tercih edin eğer:
- Veri gizliliği ve KVKK uyumu kritik
- Karmaşık iş akışları ve özel kod ihtiyacınız var
- Veritabanlarına doğrudan bağlanmak istiyorsunuz
- Yüksek hacimli görev çalıştırıyorsunuz
- DevOps/sysadmin ekibiniz var ve sunucu yönetiminden çekinmiyorsunuz
- İş akışlarını versiyon kontrol sisteminde tutmak istiyorsunuz
- Sınırsız iş akışı ve özel entegrasyonlar kuruyorsunuz
n8n’de Ortam Değişkeni Yönetimi
Production ortamında n8n kullanırken ortam değişkenlerini düzgün yönetmek önemli:
# .env dosyası ile yönetim
cat > /opt/n8n/.env << 'EOF'
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=cok_guclu_sifre_buraya
N8N_HOST=n8n.sirketiniz.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.sirketiniz.com/
GENERIC_TIMEZONE=Europe/Istanbul
N8N_LOG_LEVEL=info
N8N_LOG_OUTPUT=console,file
N8N_LOG_FILE_LOCATION=/home/node/.n8n/logs/n8n.log
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=720
EOF
# Güvenli izinler ayarla
chmod 600 /opt/n8n/.env
# n8n servisini systemd ile yönetmek için
cat > /etc/systemd/system/n8n.service << 'EOF'
[Unit]
Description=n8n Workflow Automation
After=docker.service
Requires=docker.service
[Service]
Restart=always
ExecStart=/usr/local/bin/docker-compose -f /opt/n8n/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f /opt/n8n/docker-compose.yml down
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable n8n
systemctl start n8n
İkisini Birlikte Kullanmak
Bir diğer seçenek: ikisini birlikte kullanmak. Hassas verilerin geçtiği, özel kod gerektiren, yüksek hacimli iş akışları için n8n; diğer ekiplerin kendi başına yönettiği basit entegrasyonlar için Zapier. Bu hibrit yaklaşım bazı kurumlar için en mantıklı çözüm olabiliyor.
Sonuç
Dürüst olmak gerekirse, n8n’i öğrenme eğrisi Zapier’e kıyasla daha dikik. Ama bir kez kavradığınızda, size verdiği özgürlük ve kontrol gerçekten farklı bir boyutta. Kendi altyapınızda çalışan, kodla özelleştirebileceğiniz, versiyon kontrolü yapabileceğiniz, binlerce görevi bedavaya çalıştırabileceğiniz bir otomasyon platformu: bu ihtiyaçlar sysadminlerin ve DevOps mühendislerinin günlük gerçekliğiyle örtüşüyor.
Zapier’i tamamen silip atmak için bir neden yok. Ama şirket kritik süreçlerinizi, hassas müşteri verilerinizi, yüksek hacimli otomasyonlarınızı taşımak için n8n’i ciddi bir alternatif olarak değerlendirmeniz gerekiyor. Özellikle KVKK hassasiyeti olan Türk kurumları için self-hosted n8n gerçekten cazip bir seçenek.
600 dolarlık Zapier faturasıyla karşılaştığım o müşteri? Şu an n8n üzerinde çalışıyor, aynı iş akışlarını çok daha düşük maliyetle yönetiyorlar. Geçiş süreci biraz emek istedi, ama sonuç ortada.
