Ağ Sunucuları Hakkında
İnternet, server (sunucu) ve client (istemci/kullanıcı) arasında protokoller çerçevesinde veri akışının sağlandığı temelde yazılım ve donanım ile iki alana ayrılabilen, tek merkezi olmayan ve bu sayede devamlı canlı kalabilen hem sanal hem fiziksel ağlar bütünüdür. İnternet hakkında çok şey söylenebilir, çok çeşitli tanımlamalar yapılabilir fakat bu yazıda internetten değil, onu bize ulaştıran önemli oyunculardan birinden bahsetmeye çalışacağız. Ağ sunucularından… Burada bulacağınız bilgileri daha derin şekilde internetin çeşitli mecralarında da bulabilirsiniz fakat farklı olarak burada bu işe yeni gönül vermiş kişilerin zihinlerindeki bir takım soru işaretlerine cevap vermek adına konuyu daha basit ve anlaşılır şekilde ele alacağız. O halde başlayalım!
Yazının başında internetin server ve client arasında olduğundan bahsetmiştik. Peki server ve client nedir, önce buradan başlayalım. Client (istemci) internet erişimi olan bir cihaza sahip olan ve bu cihazla internet ağları içinde varlık gösteren her bir kişi şeklinde tanımlanabilir. İstemciler internette, bir internet sitesine girmek, o internet sitesinin içindeki dosyaları açmak, görmek, kullanmak, download ve upload etmek gibi bir takım işlemlerde bulunurlar. Bu işlemlerin her biri birer istek olarak internet ağları üstünde harekete geçer. Ancak gönderilen bir isteğe karşılık veren bir cevap varsa eylem gerçekleşmiş olur. İstemci isteklerine karşılık veren internetin belkemiği diyebileceğimiz bu yapıya da server (sunucu) denir. Sunucular istemcilerin ulaşabilecekleri kullanıma ve paylaşıma açık çeşitli dosyaları barındıran ya da dosya transferi, e-posta, web sitesi gibi çeşitli servisleri sağlayan bilgisayar birimleridir. Temelde donanımlı bilgisayarlar olan sunucular temel işlevlerine göre altı çeşide ayrılmışlardır. Ağ sunucuları bu altı sunucu çeşidinden yalnızca bir tanesidir.
Ağ Sunucuları Nedir?
Ağ sunucuları ya da evrensel adıyla web server, kısaca bir web sitesinin internet ağları üzerinde yayınlanmasından sorumlu olan sunucu olarak tanımlanabilir. İstemcilerin web sitelerine yaptıkları istekleri cevaplandırarak sunucudaki web sitesi dosyalarını istemcilere bir çeşit kurallar dizisi yoluyla gösterir. Bu kurallar dizisine HTTP (hyper text transfer protocol) protokolü denir. HTTP protokolü, sunucu içinde barındırılan web sitesi dosyalarının o siteye girmek isteyen istemciye ağ sunucusu tarafından gösterilirken izlenen yol denilebilir.
Ağ sunucuları fiziksel olarak çeşitli bilgisayar bileşenlerinden oluşan sunucuların içindeki işletim sisteminde kurulu olan programlardır. Yani ağ sunucuları da bir çeşit yazılımdır. Sunucular genel anlamda bir bilgisayarın sahip olduğu donanıma sahip makinelerdir fakat bir ekrandan yönetilmek yerine bir komut sistemi sistemi ile uzaktan yönetilirler. Ağ sunucuları ise çeşitli şekilde geliştirilmiş yazılımlar oldukları için sunucu makinenin donanımı desteği ile bir program şeklinde çalışırlar. Dünya üzerinde büyük – küçük birçok ağ sunucusu bulunmaktadır. Yazımızın devamında dünyada en çok kullanılan ağ sunucularını ele alacağız. Burada amaç karşılaştırma yapmak değil, çoğunluğun kullandığı bu sistemleri ayrıntılı inceleyerek fikir sahibi olmaktır.
Dünya üzerinde en çok kullanılan web server’lar burada da görüldüğü üzere Apache, Nginx ve Internet Information Service şeklinde sıralanabilir.
Apache Web Server
Apache Web Server, Apache Software Foundation (ASF) tarafından geliştirilen açık kaynak kodlu web server’dır. Güçlü ve stabil şekilde çalışması, aynı zamanda açık kaynak kodlu olduğundan dolayı ücretsiz olarak temin edilebilmesi Apache’yi internet dünyasında önemli bir konuma oturtmuştur. Dünya üzerindeki web sitelerinin %60’ı Apache Web Server tarafından sunulmaktadır. Apache kullanan kitle bu kadar büyük olunca destek toplulukları da çok geniş çaplı olabiliyor, bu sebepten dolayı hosting çalışanları Apache ile ilgili karşılaştıkları problemlere rahat bir şekilde çözüm bulabiliyorlar. Öte yandan Apache’nin ücretsiz olması verilen teknik destekten gelir elde edilmesi kapısını açıyor. ASF ve ortaklığındaki firmalar Apache kullanan kurumlara teknik destek sağlayarak gelir elde edebilmektedirler.
Apache, internet ağının günümüzde bu noktaya kadar gelebilmesinde büyük önem taşımaktadır. Güvenilir, güçlü ve esnek bir yapının hedeflenmesi ile, bir topluluk tarafından geliştiriliyor olması Apache’yi devamlı gelişen ve büyüyen bir yapı haline getirmiştir. Microsoft ve Linux işletim sistemlerinde çalışabilir olan Apache’nin en verimli olarak Linux işletim sistemleri üzerinde çalıştığı bilinmektedir. Microsoft işletim sistemi üzerinde çalışabilir olmasına karşın başka bir Microsoft ürünü olan ASP.NET uygulamalarını destekleyememektedir. Ona karşılık PHP ve Java uygulamalarını sorunsuz şekilde çalıştırmaktadır.
Apache kullanan çok kullanıcılı internet siteleri sunucularında load balancer’a (yük dengeleyici) ihtiyaç duymaktadırlar. Çünkü siteye gelen trafiği ayırma ve dağıtma yeteneğine sahip olmayan Apache, aşırı yoğunluk durumunda sitede çökmelere neden olabilmektedir. Bundan dolayı yüksek trafiğe sahip olan internet sitelerinde trafiği server’lar arasında paylaştıracak bir load balancer kullanılmalıdır. En çok kullanılan bir diğer web server olan Nginx ise bu sorunu ekstra bir load balancer’a ihtiyaç duymadan hallediyor.
Nginx Web Server
Nginx 2000’li yılların başında Rus yazılım mühendisi lgor Sysoev tarafından hızlı ve stabil bir mail istemcisi olarak yazılmıştır. Fakat geliştirilerek mail istemcisi olarak kalmayıp güçlü, yüksek performanslı ve hafif bir web sunucusu haline gelmiştir. Apache gibi açık kaynak kodlu olan bu web server, temelde her isteğe yeni bir işlem oluşturmadığı için donanımı daha verimli kullanılır. Yani daha az RAM kapasitesi kullanmasıyla beraber hafif bir davranış sergiler.
Günümüzde popülerliği gittikçe artan Nginx hakkında da ihtiyaç duyulduğunda ulaşılabilecek olan topluluk geniş bir kitle halini almıştır. Çok işlevli olması Nginx’i kısa sürede internet dünyasının vazgeçilmezleri arasına sokmuştur. Yalnızca web server değil, HTTP load balancer, ters vekil sunucu (reverse proxy server) ve e-mail vekil sunucu hizmetleri de verebilmektedir.
Nginx’in çalışma mantığı geleneksel web server’larınkinden biraz daha farklıdır. Burada çok derine inmeden bu farktan bahsetmekte fayda var. Bir siteye girmek için tarayıcınızın alan kısmına sitenin alan adını yazdığınızda tarayıcı o siteye bir istek gönderir. Geleneksel ağ sunucuları gelen her bi isteğe karşı bir işlem oluşturur ve cevap verir fakat yukarda da bahsettiğimiz gibi Nginx farklı bir mimari ile çalışmasından dolayı her bir isteği bir işleme çevirmek yerine istekleri toplu şekilde cevaplandırır. Bu sayede aynı anda binlerce aynı tür isteğin altından rahatça ve geleneksel ağ sunucularından daha az RAM kullanarak kalkar. Nginx’in bu yapısı statik sitelerde, arama motorlarında ve e-ticaret sitelerinde çok başarılı şekilde çalışmasını sağlamaktadır. Öte yandan haricen bir load balancer’a ihtiyaç duymaması Nginx’i yüksek trafikli siteler için vazgeçilmez kılmaktadır.
Microsoft, Linux ve Unix tabanlı birçok işletim sisteminde çalışıyor olmasına karşın Nginx’in Microsoft üzerindeki performansı diğer işletim sistemlerine nazar daha kötüdür.
Internet Information Service (IIS)
Internet Information Service (IIS) Microsoft tarafından geliştirilen, diğer iki ağ sunucusundan farklı olarak kapalı kaynak kodlu olan dünya üzerinde en çok tercih edilen bir diğer ağ sunucusudur. Kapalı kaynak kodlu olmasıyla beraber lisansı ücretli olup kişiselleştirilmiş kullanıma çok da yatkın olmadığı görülmektedir. Bunun yanında kurulumu ve kullanımı kolaydır ve Microsoft IIS için geniş çaplı destek sağlamaktadır.
Sadece Microsoft işletim sisteminde çalışması IIS’in daha az tercih edilir gibi gösterse de .NET çatısı altında olan ASP.NET gibi uygulamaları ve PHP uygulamalarını çalıştırabilen web server olması IIS’i değerli kılmaktadır.