İstemci-Sunucu Mimarisi
- İngilizcesi
- Client-Server Architecture
- Okunuşu
- klayınt sörvır
Günlük kullanımda iki ad da yaygın.
Kısaca
İstemci-sunucu mimarisi bir sistemi veri ya da işlem isteyen istemcilere ve bunları sağlayan sunuculara ayırır; tarayıcının sunucudan sayfa istemesi gibi.
İstemci-sunucu mimarisi (client-server) nedir?
İstemci, kullanıcının etkileşim kurduğu kısımdır: bir web tarayıcısı, bir mobil uygulama, bir masaüstü programı ya da başka bir servis. Sunucu istekleri bekler; bir veritabanını okumak, izinleri kontrol etmek ya da iş mantığını çalıştırmak gibi işi yapar ve bir yanıt geri gönderir. İletişim bir protokolü izler: web için HTTP, e-posta için SMTP ya da bir veritabanının kendi tel protokolü gibi.
Veriyi ve kuralları sunucuda tutmanın büyük avantajları vardır. Herkes aynı, yetkili veriyi görür; güvenlik kontrolleri istemci kodu değiştirilerek atlatılamaz; sunucuyu güncellemek de sistemi bütün kullanıcılar için birden günceller. Sunucular, özellikle durumsuz (stateless) olduklarında ve oturum verisini ortak bir depoda tuttuklarında, bir yük dengeleyicinin arkasına daha fazlası eklenerek ölçeklenebilir.
Bu ayrım istemcilerin uzmanlaşmasını da sağlar. Basit bir web sayfası gibi ince bir istemci (thin client) neredeyse her şeyi sunucuya bırakır; tek sayfalı bir uygulama ya da mobil uygulama gibi zengin bir istemci ise arayüzün ve çevrimdışı davranışın çoğunu kendisi üstlenir ve sunucuyu çoğunlukla bir API üzerinden kullanır. Birçok sistem ayrı bir veritabanı sunucusu gibi daha fazla katman ekler; buna üç katmanlı ya da n katmanlı mimari denir.
Sık yapılan bir yanlış, istemci ile sunucunun ayrı makineler olması gerektiğini düşünmektir. Bunlar rollerdir: aynı dizüstü bilgisayardaki bir geliştirme sunucusu ile bir tarayıcı da birer istemci ve sunucudur; bir program da kullanıcılarına sunucu olurken bir veritabanının ya da başka bir API'nin istemcisi gibi davranabilir.
Önemli noktalar
- İstemciler istek gönderir; sunucular işi yapar ve yanıt verir.
- HTTP gibi protokoller nasıl haberleşeceklerini tanımlar.
- Merkezî sunucular veriyi yetkili tutar ve güvenliği uygulanabilir kılar.
- İnce istemciler sunucuya dayanır; zengin istemciler yerelde daha fazlasını yapar.
- İstemci ve sunucu roldür, ayrı makineler olmaları gerekmez.
Sık sorulan sorular
İstemci-sunucu ile eşler arası (P2P) arasındaki fark nedir?
İstemci-sunucuda ayrılmış sunucular birçok istemciye hizmet verir. Eşler arasında ise her katılımcı hem istemci hem sunucu gibi davranabilir ve merkezî bir sunucu olmadan kaynakları doğrudan paylaşır.
Web bir istemci-sunucu sistemi mi?
Evet. Tarayıcılar sayfa ve veri isteyen istemcilerdir, web sunucuları da HTTP üzerinden yanıt verir. Arkada ise web sunucuları çoğu zaman veritabanlarının ve başka servislerin istemcisidir.
Üç katmanlı mimari nedir?
Üç katmanlı bir istemci-sunucu tasarımıdır: istemcideki sunum katmanı, sunucuda iş mantığını içeren uygulama katmanı ve veritabanını içeren veri katmanı.
İlgili sayfalar
- Peer-to-PeerYazılım Mimarisi, s. 31Peer-to-peer (P2P, eşler arası), eşlerin merkezî sunucu olmadan doğrudan bağlanıp kaynak paylaştığı, her birinin hem istemci hem sunucu olduğu ağ tasarımıdır.
- Web SunucusuBackend ve API'ler, s. 46Web sunucusu, tarayıcılardan ve diğer istemcilerden gelen HTTP isteklerini alıp sayfa, dosya ya da veriyle yanıt veren yazılım veya onu çalıştıran makinedir.
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- Katmanlı MimariYazılım Mimarisi, s. 21Katmanlı mimari, uygulamayı sunum, iş mantığı ve veri erişimi gibi yatay katmanlara böler ve her katman yalnızca altındaki katmanı çağırır.
- Yük DengeleyiciDevOps ve Bulut, s. 54Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin