Ana içeriğe geç

Uygulama Sunucusu

İngilizcesi
Application Server
Okunuşu
eplikeyşın sörvır

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/application-server

Kısaca

Uygulama sunucusu, uygulamanın kodunu ve iş mantığını çalıştırıp istekleri dinamik yanıtlara çeviren, çoğu zaman bir web sunucusunun ardında duran yazılımdır.

Uygulama sunucusu nedir?

Uygulama sunucusu, bir uygulamanın kodunu barındıran ve iş mantığını çalıştıran program ya da onu çalıştıran makinedir: her istek için girdiyi denetler, veritabanlarıyla konuşur ve yanıtı oluşturur. Kodu çalıştırmanın yanında genellikle kodun dayandığı ortak servisleri de sağlar: iş parçacıklarını ya da worker süreçlerini yönetmek, veritabanı bağlantılarını havuzlamak (connection pool), oturumları ve transaction'ları yürütmek ve güvenlik kurallarını uygulamak gibi.

Terim kurumsal Java dünyasından gelir: WildFly (eski adıyla JBoss), Open Liberty, Oracle WebLogic ve GlassFish gibi tam uygulama sunucuları, bugün Jakarta EE adını taşıyan Java EE platformunu uygular ve kendilerine WAR ya da EAR dosyası olarak dağıtılan uygulamaları çalıştırır. Apache Tomcat ve Jetty gibi daha hafif sunucular yalnızca web kısmını, yani servlet'leri uygular ve çoğu zaman servlet container olarak anılır. Diğer ekosistemlerin de kendi sunucuları vardır: Python uygulamalarını Gunicorn ve Uvicorn, Ruby on Rails'i Puma, PHP'yi PHP-FPM, ASP.NET Core'u da Kestrel çalıştırır.

Tipik bir kurulumda NGINX gibi bir web sunucusu ya da reverse proxy internete bakar, HTTPS'i yönetir ve statik dosyaları sunar; dinamik istekleri ise veritabanıyla konuşan uygulama sunucusuna iletir. Web sunucusu bir restoranın ön tezgâhıysa, uygulama sunucusu her siparişin gerçekten piştiği mutfaktır. Birçok modern framework sunucuyu uygulamanın içine gömer: bir Spring Boot uygulaması tek bir JAR dosyasının içinde Tomcat'le gelir, bir Node.js uygulaması da kendi HTTP sunucusunu açar.

Uygulama sunucuları sık sık web sunucularıyla karıştırılır ve aralarındaki çizgi bulanıktır. Web sunucusu HTTP bağlantılarında, dosyalarda, TLS'te ve yönlendirmede uzmanlaşır, uygulama sunucusu ise kod çalıştırmada; yine de Tomcat dosya da sunabilir, NGINX de modüller aracılığıyla küçük script'ler çalıştırabilir. Ayrım katı bir teknik sınır değildir; her birinin yığındaki (stack) asıl işiyle ilgilidir.

Önemli noktalar

  • Uygulama sunucusu, bir uygulamanın kodunu çalıştırır ve dinamik yanıtlar oluşturur.
  • Worker yönetimi, connection pool'lar, oturumlar ve transaction'lar gibi ortak servisler sağlar.
  • Java uygulama sunucuları, eski adı Java EE olan Jakarta EE'yi uygular; Tomcat daha hafif bir servlet container'dır.
  • Python, Ruby, PHP ve .NET'in de Gunicorn, Puma, PHP-FPM ve Kestrel gibi kendi sunucuları vardır.
  • Önde genellikle HTTPS'i ve statik dosyaları yöneten bir web sunucusu durur.

Örnek

NGINX'in arkasında bir uygulama sunucusunun çalıştırdığı Python uygulamasıpython
# app.py: the application code, as a minimal WSGI app
def app(environ, start_response):
    name = environ.get("QUERY_STRING") or "world"   # e.g. /?Ada
    start_response("200 OK", [("Content-Type", "text/plain")])
    return [f"Hello, {name}!".encode()]

# Gunicorn, a Python application server, runs it with 4 worker processes:
#   gunicorn --workers 4 --bind 127.0.0.1:8000 app:app
#
# NGINX, the web server, handles HTTPS on port 443 and forwards to it:
#   location / { proxy_pass http://127.0.0.1:8000; }

Sık sorulan sorular

Web sunucusu ile uygulama sunucusu arasındaki fark nedir?

Web sunucusu HTTP bağlantılarını, HTTPS'i ve statik dosyaları yönetir; uygulama sunucusu ise dinamik yanıtları oluşturan kodu çalıştırır. Çoğu kurulumda web sunucusu önde durur ve dinamik istekleri uygulama sunucusuna iletir.

Tomcat bir uygulama sunucusu mu?

Gevşek anlamda evet, birçok kişi de ona böyle der. Kesin konuşmak gerekirse Tomcat, Jakarta EE'nin yalnızca web kısımlarını uygulayan bir servlet container'dır; WildFly ya da GlassFish gibi tam uygulama sunucuları ise transaction'lar ve mesajlaşma gibi platformun geri kalanını da uygular.

Hâlâ bir uygulama sunucusuna ihtiyacım var mı?

Her web uygulamasının kodunu çalıştıracak bir şeye ihtiyacı vardır, ama bugün bu çoğu zaman ayrıca kurulmak yerine uygulamanın içinde gelir. Spring Boot, ASP.NET Core ve Node.js uygulamaları kendi sunucularını içerir; container'lar da birçok uygulamayı tek bir ortak Java uygulama sunucusuna dağıtma alışkanlığının yerini büyük ölçüde aldı.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar