Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Web sunucusu, istemciden gelen HTTP/HTTPS isteklerini karşılayıp statik içerikleri doğrudan sunan ve gerektiğinde isteği başka bir bileşene aktaran sunucudur. Uygulama sunucusu ise iş kurallarını çalıştırır; veritabanı sorguları, oturum yönetimi, doğrulama ve dinamik sayfa üretimi gibi işlemleri yürütür. Kısaca web sunucusu çoğunlukla isteğin giriş ve dağıtım katmanı, uygulama sunucusu ise uygulamanın çalıştığı katmandır.

Nasıl çalışırlar?​


Bir ziyaretçi example.com/urun/42 adresine girdiğinde istek genellikle şu akıştan geçer:

  1. Web sunucusu bağlantıyı kabul eder, TLS işlemini ve temel HTTP kontrollerini yürütür.
  2. İstenen dosya bir görsel, CSS veya JavaScript dosyasıysa dosyayı doğrudan gönderir.
  3. İstek dinamik bir işlem gerektiriyorsa, örneğin ürün bilgisi veya kullanıcı hesabı gerekiyorsa, uygulama sunucusuna iletir.
  4. Uygulama sunucusu isteği yorumlar, gerekli iş kurallarını çalıştırır, veritabanına erişir ve yanıtı oluşturur.
  5. Web sunucusu uygulamadan gelen yanıtı istemciye iletir; gerekirse önbellekleme, sıkıştırma veya erişim günlüğü işlemlerini uygular.

Bu iki rol aynı makinede bulunabilir; ancak görevleri yine de farklıdır. Küçük bir uygulamada tek işlem hem HTTP isteklerini kabul edip hem de uygulamayı çalıştırabilir. Trafik veya bakım ihtiyacı arttığında roller ayrı süreçlere, hatta ayrı sunuculara bölünebilir.

Somut örnek​


Bir e-ticaret sitesinde ürün görseli, CSS dosyası veya indirilebilir bir dosya statik içeriktir. Herkese açık statik dosyalar uygulama çalışmadan sunulabilir. Yetki gerektiren özel indirmeleri ise yalnız uzantısı statik diye doğrudan açmayın; erişim kontrolü ayrıca uygulanır. Buna karşılık sepete ürün ekleme isteği; kullanıcının oturumunu, stok durumunu ve sipariş kurallarını kontrol eder. Bu iş uygulama sunucusunun görevidir. Uygulama sunucusu gerektiğinde veritabanından bilgi alır ve sonucu web sunucusuna döndürür.

Basitleştirilmiş mimari şu şekildedir:

Kod:
Kullanıcı
   |
   v
Web sunucusu
   |-- statik dosya -> doğrudan yanıt
   |
   `-- dinamik istek -> Uygulama sunucusu -> Veritabanı

Aşağıdaki karşılaştırma, hangi bileşenin hangi işi üstlendiğini ayırmaya yardımcı olur.

KonuWeb sunucusuUygulama sunucusu
Temel görevHTTP isteklerini karşılamak ve içerik sunmakUygulama kodunu ve iş kurallarını çalıştırmak
Tipik içerikHTML, CSS, JavaScript, görsel ve dosyalarDinamik yanıt, API sonucu ve işlem çıktısı
Veritabanı ihtiyacıGenellikle doğrudan gerekmezUygulama gerektiriyorsa erişir
Örnek görevStatik dosyayı önbellekten sunmakSepete ürün ekleme işlemini doğrulamak

PHP-FPM HTTP sunucusu değil, webserver ile FastCGI üzerinden konuşan PHP süreç yöneticisidir; Nginx/Apache HTTP ön katmanı bu protokolle bağlanabilir. Node.js HTTP sunucusu veya Java servlet container gibi örnekler HTTP ile uygulama işini aynı süreçte birleştirebilir. Bu yüzden tüm mimariler mutlaka iki ayrı makine gerektirmez.

Hangisini kullanmalısınız?​


Yalnızca statik bir tanıtım sitesi, dokümantasyon veya dosya sunumu yapıyorsanız web sunucusu tek başına yeterli olabilir. PHP, Python, Java, Node.js veya benzeri bir çalışma ortamı kullanan dinamik bir site için uygulama sunucusu ya da ilgili uygulama çalışma süreci gerekir. Web sunucusu bu uygulamanın önünde ters vekil olarak konumlandırılabilir.

Uygulama sunucusunu doğrudan internete açmak her zaman gerekli değildir. Yaygın yerleşimde dış istekleri web sunucusu alır; uygulama sunucusu yalnızca yerel ağdan veya aynı makinedeki güvenli bir bağlantıdan erişilebilir. Böylece statik içerik, TLS, alan adı yönlendirmesi ve temel trafik kontrolü web sunucusunda; uygulama mantığı ise uygulama sunucusunda tutulur.

Sorun giderirken önce isteğin hangi katmanda başarısız olduğunu ayırın: Statik dosya da açılmıyorsa web sunucusu, alan adı veya dosya erişimi incelenir. Statik içerik çalışıyor ancak dinamik istek hata veriyorsa uygulama süreci, uygulama günlükleri, bağlantı ayarları veya veritabanı incelenir. Web sunucusunun başarıyla çalışması, uygulama sunucusunun da sağlıklı olduğu anlamına gelmez.

Sık yapılan hatalar​


  • Web sunucusunu uygulama kodunu çalıştıran bileşen sanmak: Bu bir rol ayrımıdır; Apache mod_php veya entegre çalışma ortamları uygulama kodunu aynı süreçte çalıştırabilir. Webserver adı bir ürünün yalnız statik içerikle sınırlı olduğunu göstermez.
  • Her isteği uygulama sunucusuna göndermek: Statik dosyaları doğrudan sunmak gereksiz işlem yükünü azaltabilir.
  • Uygulama sunucusunu yalnızca port numarasıyla değerlendirmek: Asıl ayrım porttan çok, HTTP isteğini kimin kabul ettiği ve iş mantığını kimin çalıştırdığıdır.
  • Katmanlardan birinin günlüklerini kontrol etmemek: Hatanın web sunucusunda mı, uygulama sürecinde mi olduğunu anlamak için her iki katmanın kayıtları karşılaştırılmalıdır.

Kaynaklar​



Sık sorulan sorular​


Web sunucusu ve uygulama sunucusu aynı program olabilir mi?​

Evet. Bazı çalışma ortamları HTTP isteklerini doğrudan kabul edip uygulama kodunu da çalıştırabilir. Ancak görev ayrımı kavramsal olarak devam eder; üretim mimarisinde önüne ayrıca web sunucusu konulması performans, yönlendirme ve işletim ihtiyaçlarına göre tercih edilebilir.

API için de web sunucusu gerekir mi?​

API istekleri de HTTP veya HTTPS üzerinden geldiği için bir HTTP katmanına ihtiyaç duyar. Bu katman doğrudan uygulamanın HTTP bileşeni olabilir veya istekleri uygulama sunucusuna ileten ayrı bir web sunucusu olabilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.