SDK Nedir? Yazılım Geliştirme Kitleri Basitçe Açıklandı
SDK (yazılım geliştirme kiti), bir şirketin geliştiricilere her şeyi sıfırdan yazmadan hizmetini ya da platformunu kullanabilmeleri için sunduğu hazır bir araç setidir. Genellikle belirli bir programlama dili için bir kod kütüphanesi, dokümantasyon ve örnekler içerir; bazen test araçları gibi ek araçlar da bulunur. Uygulamanız "Stripe SDK'sını kullanıyor" dediğinde, kodunuzun Stripe'a giden her isteği elle yazmak yerine Stripe'ın hazır fonksiyonlarını çağırdığı anlamına gelir.
AI ile uygulama geliştirirken SDK'lar neden önemli?
Bir AI oluşturucudan ödeme, AI sohbeti, harita ya da e-posta eklemesini istediğinizde, genellikle o sağlayıcının SDK'sını kurar ve onu çağıran birkaç satır yazar. SDK'nın ne olduğunu bilmek şunlara yardımcı olur:
- Projenize ne eklendiğini anlamak. Bir SDK bir bağımlılıktır; uygulamanızın artık dayandığı dış koddur.
- Gereken kurulumu fark etmek. Neredeyse her SDK bir API anahtarı ister ve birçoğunun, hangi anahtarların güvenle kullanılabileceği konusunda farklı kuralları olan "sunucu" ve "tarayıcı" sürümleri vardır.
- Doğru şeyi istemek. "Sunucuda resmi Stripe SDK'sını kullan" demek, "Stripe ekle" demekten daha açık bir talimattır.
- Hataları okumak. AI ile geliştirilen uygulamalardaki birçok hata, bir SDK'nın yanlış yapılandırılmasından, eski olmasından ya da yanlış yerde kullanılmasından kaynaklanır.
Günlük hayattan bir benzetme
Raf takmak istediğinizi düşünün.
- API, binanın kurallarıdır: hangi duvarlara vida çakılabileceği, neyi taşıdığı, borulların nerede olduğu. Bu kurallarla yetinebilirsiniz; her şeyi kendiniz ölçüp delersiniz.
- SDK, duvarları yapan firmanın sunduğu hazır bir montaj kitidir: önceden kesilmiş parçalar, doğru vidalar, duvarlarına tam uyan bir braket ve bir talimat kitapçığı.
Rafın nereye gideceğine ve üzerine ne konacağına yine siz karar verirsiniz. Kit sadece tahtayı kesmenizi ve vida boyunu tahmin etmenizi gereksiz kılar; ayrıca bir su borusunu delme riskini de azaltır.
SDK, API, kütüphane ve framework karşılaştırması
Bu terimler birbirine girdiği için birçok kişi karışıklık yaşar:
| Terim | Nedir | Örnek |
|---|---|---|
| API | Bir hizmetle konuşma kuralları: hangi istekleri kabul ettiği ve ne döndürdüğü | api.stripe.com adresindeki Stripe REST API'si |
| SDK | Bir sağlayıcının API'sini ya da platformunu belirli bir dilden kullanmak için hazırladığı, dokümantasyonlu araç seti | Stripe'ın resmi Node.js kütüphanesi |
| Kütüphane | Projenize eklenen, yeniden kullanılabilir her türlü kod | Bir tarih biçimlendirme paketi |
| Framework | Tüm uygulamanızın içinde inşa edildiği daha büyük yapı | React, Next.js, Django |
Bir SDK genellikle bir kütüphane içerir ve o kütüphane genellikle bir API'yi çağırır. Web hizmetleri için "SDK" ile "istemci kütüphanesi" çoğu zaman birbirinin yerine kullanılır.
Bazı SDK'lar hiç web hizmetiyle ilgili değildir. Apple ve Google, iOS ve Android uygulamaları geliştirmek için derleyiciler, simülatörler ve platform kodu içeren SDK'lar yayınlar. Mantık aynıdır: bir platform için geliştirmek için gereken her şey tek bir kitte.
Bir SDK sizin yerinize ne yapar?
Aynı işi — bir ödeme sağlayıcısında müşteri oluşturmayı — iki şekilde yapalım.
SDK olmadan kodunuzun HTTP isteğini kendisinin oluşturması gerekir: URL'yi belirlemek, gizli anahtarı doğru başlığa eklemek, verileri API'nin beklediği biçimde hazırlamak, göndermek, durum kodunu kontrol etmek, yanıtı ayrıştırmak ve ağ kesintilerinde yeniden denemeleri yönetmek.
SDK ile ise neredeyse tek satırdır:
const customer = await stripe.customers.create({ email: "lena@example.com" });
Bu satırın arkasında SDK şunları yönetir:
- Kimlik doğrulama — anahtarınızı her isteğe doğru şekilde eklemek
- Veri biçimlendirme — verilerinizi API'nin beklediği hale getirmek ve yanıtı nesnelere dönüştürmek
- Hatalar — durum kodlarını kodunuzun yakalayabileceği açık hata türlerine çevirmek
- Yeniden deneme — geçici nedenlerle başarısız olan istekleri güvenli şekilde yeniden denemek (birçok resmi SDK bunu yapar)
- Tipler — TypeScript'te, düzenleyicinize hangi alanların var olduğunu bildirir; böylece hatalar kodu çalıştırmadan önce görünür
Çalışan bir örnek: bir destek uygulamasına AI yanıtları eklemek
Bir AI oluşturucuya şunu dediğinizi düşünün: "Bir müşteri destek talebi gönderdiğinde, bir AI modeli kullanarak önerilen bir yanıt üret."
- AI, model sağlayıcısının resmi SDK'sını projenizde bir paket olarak kurar (JavaScript projelerinde npm kayıt defterinden).
- Sağlayıcının API anahtarını bir proje sırrı olarak eklersiniz. SDK bunu sunucuda bir ortam değişkeninden okur.
- AI, destek metniyle ve kısa bir talimatla SDK'yı çağıran bir sunucu rotası yazar ve önerilen yanıtı veritabanına kaydeder.
- Tarayıcı anahtarı hiçbir zaman görmez; yalnızca kendi sunucu rotanızı çağırır.
Sağlayıcı ileride API'sini değiştirirse genellikle yeni bir SDK sürümü yayınlar. Paketi güncellemek — ve kırıcı değişiklikler için sürüm notlarını kontrol etmek — çoğu zaman yeterlidir.
Temel terimler
| Terim | Anlamı |
|---|---|
| Bağımlılık | Projenizin dayandığı dış kod. Bir SDK bunlardan biridir. |
| Paket / paket yöneticisi | İndirilebilir kod paketi ve bunu kuran araç (JavaScript için npm, Python için pip). |
| İstemci kütüphanesi | Belirli bir API'yi çağırmayı kolaylaştıran kod. Web hizmetleri için çoğu zaman "SDK" ile aynı anlama gelir. |
| Sunucu tarafı SDK | Arka uçta çalışır ve gizli anahtarları güvenle kullanabilir. |
| İstemci tarafı / tarayıcı SDK'sı | Kullanıcının tarayıcısında çalışır. Yalnızca herkese açık ya da "yayınlanabilir" anahtarlar verilir. |
| Sürüm | Her SDK sürümünün bir numarası vardır (4.2.0 gibi). Büyük sıçramalar çoğu zaman kırıcı değişiklikler anlamına gelir. |
| Kırıcı değişiklik | Kodunuzu değiştirmenizi gerektiren güncelleme. |
| Değişiklik günlüğü / sürüm notları | Sağlayıcının her sürümde neyin değiştiğini listelediği belge. |
Yaygın yanlış anlamalar
- "SDK ile API aynı şeydir." API, hizmetin arayüzüdür; SDK ise onun üzerindeki bir kolaylık katmanıdır. Çoğu web API'sini SDK olmadan da çağırabilirsiniz — sadece daha fazla iş gerekir.
- "SDK kurulduysa entegrasyon bitmiştir." Hâlâ sağlayıcıda bir hesaba, doğru anahtarlara ve işler ters gittiğinde ne olacağını yöneten koda ihtiyacınız vardır.
- "Doğru adı taşıyan her paket resmi pakettir." Saldırganlar bazen benzer görünen sahte paketler yayınlar. Tam paket adı için sağlayıcının dokümanlarına bakın.
- "Tarayıcı SDK'sı gizli anahtarımı kullanabilir." Asla. Tarayıcı kodundaki her şey ziyaretçilere görünür. Gizli anahtarlar yalnızca sunucu tarafı kodda bulunmalıdır — bkz. API anahtarlarını güvende tutma.
- "SDK'ların güncellenmesi gerekmez." Eski sürümler düzeltme almayı bırakır ve sağlayıcılar eski API sürümlerini emekli ettiğinde sonunda çalışmaz hale gelir.
AI uygulama oluşturucunuza ne sormalısınız?
- "Üçüncü taraf bir sarmalayıcı yerine sağlayıcının resmi SDK'sını kullan. Kurduğun tam paket adını ve sürümünü söyle."
- "SDK'yı yalnızca sunucuda kullan ve anahtarı bir ortam değişkeninden oku."
- "Bu SDK'nın hangi kısımları tarayıcıda çalışıyor ve hangi anahtarları kullanıyor?"
- "SDK çağrısı başarısız olursa ya da zaman aşımına uğrarsa ne olur? Kullanıcıya açık bir mesaj göster ve hatayı kaydet."
- "Bu uygulamanın bağımlı olduğu her SDK ve paketi, her birinin ne işe yaradığıyla birlikte listele."
- "Bu SDK'lardan herhangi biri güncel değil mi ya da bilinen bir güvenlik sorunu var mı, kontrol et."
Mythex'te SDK'lar
Mythex agent'ı, proje sandbox'ınıza, stackiniz için kullanılan normal paket yöneticisiyle paket kurabilir; sağlayıcıların SDK'ları da buna dahildir. Paketin adını ve onu hangi özellik için istediğinizi belirtin. Bkz. npm paketlerini kullanma. Mythex, uygulamanız için hazır entegrasyonlardan oluşan bir katalog sunmaz: sağlayıcının anahtarını bir proje sırrı olarak saklar ve Integrate any API bölümünde anlatıldığı gibi agent'tan hizmeti sunucu tarafından çağırmasını istersiniz.
SDK'ların altındaki katman için API nedir yazısını okuyun. İki yaygın SDK tabanlı özellik için bkz. uygulamanıza ödeme nasıl eklenir ve LLM API'leri nasıl kullanılır.
Sorular
SDK basitçe ne demek?
SDK (yazılım geliştirme kiti), bir şirketin hizmetini ya da platformunu geliştiricilerin kolayca kullanabilmesi için sunduğu hazır kod, dokümantasyon ve araçlar bütünüdür. Her isteği bir API'ye elle yazmak yerine, SDK'nın sunduğu basit fonksiyonları çağırırsınız.
SDK ile API arasındaki fark nedir?
API, bir hizmetle konuşmak için kurallar kümesidir: hizmetin kabul ettiği istekler ve döndürdüğü yanıtlar. SDK ise bu API'nin üzerine kurulmuş, genellikle tek bir programlama dili için hazırlanmış bir araç setidir; bu istekleri sizin yerinize yapar ve kimlik doğrulama, yeniden deneme ve veri formatı gibi ayrıntıları yönetir.
SDK'lar ücretsiz mi?
Web hizmetleri için sunulan SDK'ların çoğu indirmek için ücretsiz ve açık kaynaktır; ancak bağlandıkları hizmet kullanım için ücret alabilir. Stripe ya da OpenAI SDK'sını kullanmak kendi başına ücretsizdir; SDK'nın yaptığı ödeme ya da AI istekleri ise sağlayıcı tarafından faturalandırılır.
SDK kullanmak güvenli mi?
Sağlayıcının resmi SDK'ları, hizmetlerine erişmenin genellikle en güvenli yoludur; çünkü bakımları yapılır ve güvenlik ayrıntılarını ele alırlar. Bunları resmi paket kayıt defterinden kurun, güncel tutun ve benzer adlara sahip resmi olmayan paketlere karşı dikkatli olun.