SDK (Yazılım Geliştirme Kiti) Nedir?
Kısa tanım
SDK (Software Development Kit, yazılım geliştirme kiti), belirli bir platform, servis veya cihaz için uygulama geliştirmeyi kolaylaştıran araçlar paketidir. İçinde genellikle istemci kütüphaneleri, API sarmalayıcıları, dokümantasyon ve örnek kodlar; bazen de derleyici, emülatör veya komut satırı araçları bulunur. Örneğin bir ödeme servisinin SDK'sı, ham HTTP isteklerini kimlik doğrulama ve hata yönetimi hazır fonksiyonlara dönüştürür.
Diğer adları: software development kit, yazılım geliştirme kiti, geliştirici kiti, devkit, client SDK

API, SDK ve kütüphane: hangisi ne?
Bu üç kavram sık karıştırılır çünkü çoğu zaman birlikte gelir. API, iki yazılımın nasıl konuşacağını tanımlayan sözleşmedir: hangi adrese, hangi formatta istek gönderileceği ve ne yanıt döneceği. Kütüphane, belirli bir işi yapan, kodunuzdan çağırdığınız yeniden kullanılabilir koddur. SDK ise bir platformu veya servisi kullanmak için gereken her şeyi bir araya getiren pakettir: o servisin API'sini saran bir veya birkaç kütüphane, dokümantasyon, örnekler ve gerekiyorsa geliştirme araçları.
Kısacası API “ne konuşulacağını”, SDK ise “sizin dilinizde nasıl konuşulacağını” verir. Bir SDK, kendi kurallarıyla uygulamanızın akışını yöneten bir framework değildir; siz çağırana kadar bir şey yapmaz.
Bir SDK sizin yerinize neleri üstlenir?
Aynı işlemi ham HTTP ile ve SDK ile yapmayı karşılaştırmak farkı netleştirir (örnekteki ornekpay paketi temsilîdir):
// Ham HTTP
const yanit = await fetch("https://api.ornekpay.com/v1/charges", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ORNEKPAY_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": siparisId,
},
body: JSON.stringify({ amount: 149990, currency: "TRY" }),
});
if (!yanit.ok) { /* durum kodu, yeniden deneme, hata gövdesi... */ }
// SDK ile
const odeme = await ornekpay.charges.create(
{ amount: 149990, currency: "TRY" },
{ idempotencyKey: siparisId },
);İyi bir SDK'nın arka planda yaptıkları genellikle şunlardır:
- Kimlik doğrulama ve istek imzalama; API anahtarının doğru başlıkta gönderilmesi.
- Geçici hatalarda üstel beklemeli yeniden deneme ve zaman aşımı yönetimi.
- Sayfalama: binlerce kaydı tek bir döngüyle gezebilmek.
- Tipli veri modelleri; TypeScript gibi dillerde editörün alanları önermesi ve hataları derleme anında yakalaması.
- Webhook imzalarını doğrulama gibi güvenlik açısından hassas yardımcılar.
Platform SDK'ları ve servis SDK'ları
“SDK” kelimesi iki farklı ölçekte kullanılır. Platform SDK'ları bir işletim sistemi veya cihaz için uygulama yazmayı sağlar: Android SDK, Apple platformları için Xcode ile gelen SDK'lar, oyun konsolu kitleri. Bunlar derleyici, emülatör, hata ayıklayıcı ve sistem kütüphanelerini kapsar. Servis SDK'ları ise bir bulut veya SaaS ürününün REST API'sini kullanmayı kolaylaştırır: ödeme, e-posta, bulut depolama, harita, analitik veya yapay zekâ servislerinin farklı programlama dilleri için sunduğu paketler bu gruptadır.
Projeye eklemeden önce sorulacaklar
- Resmî mi, topluluk mu? Servis sağlayıcının yayımladığı SDK genellikle API değişikliklerine daha hızlı uyum sağlar. Topluluk paketleri iyi olabilir ama bakımı bırakılma riski taşır.
- Bakım ve sürüm politikası: Son sürüm ne zaman çıktı, kırıcı değişiklikler nasıl duyuruluyor? Her SDK projenize yeni bir bağımlılık ve dolayısıyla güncelleme ve güvenlik takibi yükü ekler.
- Boyut ve çalışma ortamı: Tarayıcıda çalışacak bir SDK sayfa ağırlığını artırır; bazı SDK'lar edge veya serverless ortamlarında desteklenmeyen modüllere dayanır.
- Veri toplama: Özellikle mobil analitik, reklam ve hata raporlama SDK'ları cihaz bilgisi ve kullanıcı davranışı toplayabilir. Hangi verinin nereye gittiğini bilmek, kişisel veri yükümlülükleri açısından sizin sorumluluğunuzdadır.
- Lisans: Kaynak kodu açık mı, ticari kullanıma uygun mu?
SDK'sız çalışmak ne zaman mantıklı?
Bir servisin yalnızca bir veya iki uç noktasını kullanıyorsanız, SDK'nın getirdiği bağımlılık ağacı ve boyut, birkaç satırlık HTTP çağrısından daha pahalı olabilir. SDK'nın desteklemediği yeni bir API özelliğine ihtiyaç duyduğunuzda ya da çalışma ortamınız SDK'yla uyumsuz olduğunda da doğrudan API'yi çağırmak gerekir. Bu durumda SDK'nın sizin yerinize yaptığı işleri (yeniden deneme, zaman aşımı, imza doğrulama) kendiniz üstlenmeniz gerektiğini unutmayın.

