CBS226U-WEB TABANLI CBS
Ünite 3: Web CBS Teknolojileri
Giriş
Bulut teknolojilerin bu kadar ileri seviyeye geldiği günümüzde, CBS kullanıcıları olarak yalnızca CBS araçlarını kullanmak yeterli olmayabilir. CBS araçlarının arkasında çalışan teknolojileri öğrenmek ve hatta ihtiyaç halinde kendi CBS teknolojilerimizi geliştirmek durumunda kalabiliriz. Bu noktada bu ünitede öncelikle web sunucularının ne olduğunu, tiplerinin neler olduğunu, nasıl çalıştıklarını öğreneceğiz. Sonrasında istemcileri tanıyacağız. Akabinde istemci sunucu modeli ile İnternetin nasıl çalıştığını irdeleyeceğiz. İstemci sunucu modelini öğrendikten sonra web servislerin ne işe yaradıklarını, yapılarını ve hangi amaçlarla kullanıldıklarını tartışacağız. Son olarak ise CBS yazılımları üretebilmek için dünyada sıkça kullanılan açık kaynak kodlu altyapıları inceleyeceğiz.
Web Sunucuları
Bir web sunucusu, HTTP (web içeriğini dağıtmak için oluşturulan ağ protokolü) veya güvenli varyantı HTTPS aracılığıyla istekleri kabul eden bilgisayar yazılımı ve temel donanımdır. Genellikle bir web tarayıcısı veya web gezgini olan bir kullanıcı aracısı, HTTP kullanarak bir web sayfası veya başka bir kaynak için istekte bulunarak iletişimi başlatmakta ve sunucu bu kaynağın içeriğiyle veya bir hata mesajıyla yanıt verebilmektedir. Bir web sunucusu, yapılandırılmış ise kullanıcı aracısından gönderilen kaynakları da kabul edebilmekte ve saklayabilmektedir. Bir web sunucusunu çalıştırmak için kullanılan donanım, işlemesi gereken istek hacmine göre değişkenlik gösterebilmektedir. Bir web sunucusundan gönderilen bir kaynak, web sunucusunda önceden var olan bir dosya (statik içerik) olabilir veya sunucu yazılımıyla iletişim kuran başka bir program tarafından istek anında (dinamik içerik) oluşturulabilir.
Sunucular kullanım alanlarına ve türlerine göre çeşitlenmektedirler. Ancak konumuza en uygun çeşitlerinden bahsetmek gerekirse bunlar:
• e-Posta Sunucusu: Eposta mesajlarını almayı ve göndermeyi olanaklı kılan sunuculardır. • FTP Sunucusu: Dosya transferlerini olanaklı kılan sunuculardır. • Web Sunucusu: Web tarayıcıları aracılığıyla web sayfalarının görüntülenerek uygulamaların çalışmasını sağlar.
Web sunucuları yalnızca donanımlardan oluşmazlar. Donanımların üzerinde koşması gereken, sunucuya gelen isteklere cevap vermesi gereken web sunucu yazılımları vardır. Bu yazılımlar http protokolünü veya varyantlarını kullanarak istemci sunucu modelinde sunucu görevini üstlenirler. Her ne kadar web sunucu yazılımları oluşturulma amaçlarına göre değişiklik gösterseler de aşağıdaki ortak özelliklere sahip oldukları söylenebilir:
• Statik İçerik Sunumu: HTTP protokolü aracılığıyla istemcilere statik içerik (web dosyaları) sunabilmek
• HTTP: HTTP yanıtlarının sürümlerini istemci HTTP isteklerinin sürümleriyle uyumlu olarak göndermek için HTTP protokolünün bir veya daha fazla sürümü için destek • Günlük Kaydı: Genellikle web sunucuları, güvenlik ve istatistiksel amaçlarla istemci istekleri ve sunucu yanıtları hakkında bazı bilgileri günlük dosyalarına kaydetme özelliği
Temel ortak özellikleri haricinde günümüzde web sunucu yazılımlarının birçoğunun desteklediği popüler özelliklerden birkaçı aşağıda verilmiştir:
• Dinamik İçerik Sunumu: HTTP protokolü aracılığıyla istemcilere dinamik içerik (anında oluşturulan) sunabilmek • Sanal Barındırma: Sadece bir IP adresi kullanarak birçok web sitesine (alan adı) hizmet verebilmek • Yetkilendirme: Web sitesi yollarının (web kaynakları) bölümlerine erişime izin verebilmek, yasaklamak veya yetkilendirmek • İçerik Önbelleği: Sunucu yanıtlarını hızlandırmak için statik ve/veya dinamik içeriği önbelleğe alabilmek • Büyük Dosya Desteği: 32 bit işletim sisteminde boyutu 2 GB’den büyük olan dosyaları sunabilmek • Bant Genişliği Daraltma: Ağı doyurmamak ve daha fazla müşteriye hizmet verebilmek için içerik yanıtlarının hızını sınırlamak • Özel Hata Sayfaları: Özelleştirilmiş HTTP hata mesajları için özel hata sayfalarına destek vermek
Dünyada sıkça kullanılan web sunucu yazılımlarına örnekler vermek gerekirse:
• Apache HTTP Sunucusu • Microsoft İnternet Bilgi Hizmetleri • Lighttpd • Jigsaw Sunucu • Nginx
İstemci Sunucu Modeli
İstemci-sunucu modeli, görev veya iş yükünü sunucu olarak adlandırılan bir kaynak veya hizmet sağlayıcıları ile istemci olarak adlandırılan hizmet talep ediciler arasında paylaştıran dağıtık bir uygulama yapısıdır. İstemci-sunucu mimarisinde, istemci bilgisayar İnternet üzerinden sunucuya bir veritalebi gönderdiğinde, sunucu talep edilen işlemi kabul eder ve talep edilen veri paketlerini istemciye geri iletir. İstemciler kaynaklarının hiçbirini paylaşmazlar. İstemci-Sunucu Modeline örnek olarak World Wide Web verilebilir. Bu noktada İnternetin nasıl çalıştığını kısaca anlatmak faydalı olacaktır.
Genelde istemciler aşağıdaki adımlar sonucunda sunucular ile iletişime geçebilmektedirler:
• Kullanıcı web sitesinin veya dosyanın URL’sini (Tekdüzen Kaynak Konum Belirleyicisi) girer. • Tarayıcı daha sonra DNS (Alan Adı Sistemi) sunucusunu talep eder. • WEB Sunucusunun adresi için DNS sunucusu üzerinde arama yapılır. • DNS Sunucusu WEB Sunucusunun IP adresi ile yanıt verir. • Tarayıcı, WEB Sunucusunun DNS tarafından sağlanmış IP’sine bir HTTP/HTTPS isteği gönderir. • Sunucu, web sitesinin gerekli dosyalarını istemciye gönderir. • Tarayıcı daha sonra dosyaları işler ve web sitesi görüntülenir. Bu işleme, DOM (Belge Nesne Modeli) yorumlayıcısı, CSS yorumlayıcısı ve JS Motoru yardımıyla toplu olarak JIT Derleme denmektedir.
Bu konuyu bir örnekle perçinlemek gerekirse evinizden Anadolu Üniversitesinin ana sayfasına bir web tarayıcısı aracılığı ile girmek istediğinizi düşünelim. Teorik olarak bu süreçte aşağıdaki adımlar olacaktır:
• Web tarayıcınıza www.anadolu.edu.tr adresini yazacaksınız • Tarayıcınız kendisine en yakın DNS sunucusuna gidecek • DNS sunucusuna www.anadolu.edu.tr adresinin ip adresi istenecek • DNS sunucusundan elde edilmiş ip adresine bir HTTPS isteği göndereceksiniz • Anadolu Üniversitesi sunucuları ana sayfa ile ilgili dosyaları tarayıcınıza gönderecek • Tarayıcınız gelen dosyaları derleyecek ve ekranınızda Anadolu Üniversitesinin ana sayfasını gösterecektir.
Her sistemde veya modelde olduğu gibi istemci sunucu modelinin de avantajları ve dezavantajları mevcuttur. İstemci-Sunucu modelinin avantajlarını saymak gerekirse:
• Tüm verilerin tek bir yerde bulunduğu merkeziyetçi bir sistemdir. • Uygun maliyetli, daha az bakım maliyeti gerektirir. • Veri kurtarma mümkündür. • İstemci ve sunucuların kapasitesi birbirlerinden bağımsız olarak değiştirilebilir.
İstemci-Sunucu modelinin dezavantajları ise:
• İstemciler, Sunucuda mevcut ise veya sunucuya yüklenmiş ise virüslere, truva atlarına ve solucanlara açıktır. • Sunucular Hizmet Reddi (DOS) saldırılarına açıktır. • Veri paketleri iletim sırasında yanıltılabilir veya değiştirilebilir.
• Kimlik avı veya giriş bilgilerinin veya kullanıcının diğer yararlı bilgilerinin ele geçirilmesi yaygındır ve Aradaki Adam Saldırılarına (Man-in-the- Middle Attack) açıktır.
İstemci bir istekte bulunduğunda sunucu dönüş olarak hem veri hem de bir durum kodu döndürmektedir. Bu durum kodu isteğin sonucunu anlatmaktadır. Sonuç kodları temelde 5 kategoriye bölünmüştür:
• 1XX: Bilgi için dönen kodlardır. • 2XX: Başarılı sonuçlar için dönen kodlardır. • 3XX: Yeniden yönlendirme bilgisi için dönen kodlardır. • 4XX: İstemci hataları için kullanılmaktadır. • 5XX: Sunucu hataları için kullanılmaktadır
Örnek hata kodları ve anlamlarına örnekler vermek gerekirse: 200 OK, 300 Çoklu Seçwnwk, +00 Hatalı istek vb.
Web Servisler
İnternet, birden fazla ağa ait olan çeşitli türlerdeki yüz binlerce bilgisayarın dünya çapında birbirine bağlanmasıdır. World Wide Web’de bir web servisi, istemci ve sunucu uygulamaları arasında mesajların yayılması için standartlaştırılmış bir yöntemdir. Bir web servisi, belirli bir dizi işlevi yerine getirmesi amaçlanan bir yazılım modülüdür. Bulut bilişimdeki web servisleri ağ üzerinden bulunabilir ve çağrılabilir. Bir başka deyişle web servisi, web servisini çağıran istemciye işlevsellik sunabilecek bir yazılım modülüdür.
Web servislerinin temel fonksiyonları aşağıda verilmiştir:
• İnternet veya intranet ağları üzerinden erişmek mümkündür. • Standartlaştırılmış XML mesajlaşma protokolü kullanılmaktadır. • İşletim sistemi veya programlama dilinden bağımsızdır. • Kendi kendini tanımlayabilmelidir. • Yerini belirlemek için basit bir konumlandırma yaklaşımları kullanılmaktadır
Web servislerinin neredeyse hepsinin kullandığı temel üç bileşen bulunmaktadır. Bunlar:
• SOAP (Basit Nesne Erişim Protokolü) • UDDI (EvrenselTanımlama, Keşif ve Entegrasyon) • WSDL (Web Hizmetleri Tanımlama Dili):
Web servislerinin doğalarından gelen ortak bazı karakteristik özellikleri vardır. Kısaca bu karakteristik özellikleri sıralamak istersek:
• XML tabanlıdırlar. • Gevşek bağlantılıdırlar. • Eşzamanlı veya eşzamansız olma yeteneğine sahiptirler. • Uzaktan prosedürel çağrıyı desteklerler.
Her ne kadar günümüzde web servislerinin kullanım avantajları yaygın olarak bilinse de ünitemizin bu kısmında bu avantajları tekrar hatırlatmak faydalı olacaktır:
• İş işlevleri internet üzerinden açığa çıkarılabilir. • Birlikte çalışabilirlik mümkündür. • Düşük maliyetli iletişim sağlar. • Herkesin anladığı standart bir protokoldür. • Yeniden kullanılabilirliğe uygundur.
Açık Mekansal Konsorsiyum (OGC)
Uluslararası bir gönüllü uzlaşma standartları organizasyonu olan Açık Mekansal Konsorsiyum (OGC) 1994 yılında ortaya çıkmıştır. OGC’de 500’den fazla ticari, resmî, kâr amacı gütmeyen ve araştırma kuruluşu, mekansal içerik ve hizmetler, sensör ağı ve Nesnelerin İnterneti, CBS veri işleme ve veri paylaşımı için açık standartların geliştirilmesini ve uygulanmasını teşvik eden bir oluşumdur. OGC kuruluşundan beridir çok sayıda standartın gelişmesine ve oluşmasına katkıda bulunmuştur. Bu standartlara örnek olarak:
• 3D Tiles • Web için Katalog Hizmeti (CSW) • Coğrafya İşaretleme Dili (GML) • Web Detay Servisi (WFS) • Web Harita Hizmeti (WMS)
Web Özellik Hizmeti (WFS)
WFS spesifikasyonu, coğrafi özelliklerin veri manipülasyon işlemlerini tanımlamak için arayüzler tanımlamaktadır. Bahsedilen manipülasyonlar:
• Mekânsal ve mekânsal olmayan kısıtlamalara dayalı olarak özellikleri alma veya sorgulama • Yeni bir özellik oluşturma • Bir özelliği silme • Bir özelliği güncelleme
Web Harita Servisi (WMS)
Web Harita Servisi (WMS), Open Geospatial Consortium tarafından 1999 yılında coğrafi referanslı harita görüntülerini İnternet üzerinden sunmak için geliştirilen standart bir protokoldür. Bu görüntüler tipik olarak bir CBS veritabanı tarafından sağlanan verilerden bir harita sunucusu tarafından üretilir. Bir WMS’nin sahip olması gereken metodlar yine OGC tarafından belirlenmiştir.
Sıkça Kullanılan CBS Yazılım Geliştirme Araçları
Bu kısımda bölümlerde daha fazla ayrıntısı verilecek olan CBS yazılımları oluşturmada kullanılabilecek açık kaynak kodlu sıkça kullanılan uygulamalar tanıtılacaktır.
PostgreSQL
PostgreSQL, California Üniversitesi tarafından 1977’den beri çeşitli biçimlerde geliştirilmiş, güvenilir ve performans açısından itibarlı, SQL standardının büyük bir bölümünü destekleyen açık kaynaklı gelişmiş bir nesne-ilişkisel veritabanı yönetim sistemidir (VTYS). Ingres adıyla bir
proje olarak başlamış, Ingres’in kendisi daha sonra Relational Technologies/Ingres Corporation adıyla ticari olarak geliştirilmiştir.
PostGIS
PostGIS, CBS nesnelerinin veritabanında depolanmasına izin veren açık kaynak kodlu ve ücretsiz bir PostgreSQL veritabanı eklentisidir. PostGIS, Victoria, Kanada’da yerleşik bir jeo-mekansal danışmanlık şirketi olan Refractions Research’ün bir projesi olarak başlamıştır. Başladığı günden beri hükümetler, üniversiteler, kamu kuruluşları ve diğer şirketler tarafından benimsenmiş ve geliştirilmektedir (Hsu ve Obe, 2021). PostGIS ve PostgreSQL, endüstri standartlarına çoğu üründen daha yakındır. Örneğin çok yeni olan ANSI SQL ya da OGC mekansal standartlarını desteklemesi verilebilir. Endüstri standartlarına uygun olarak geliştirilmesi nedeniyle standartlara uygun olarak geliştirilen diğer CBS yazılımlarının anlaşılması kolay olacaktır.
Geomajas
Geomajas, JAVA dili kullanılarak Web CBS uygulamaları oluşturması için genişletilebilir bir açık kaynaklı bir kütüphanedir. JAVA, birçok işletim sisteminde çalışabilen bir yazılım dilidir. Veriler üzerinde sunucu tarafı entegrasyonunun yapılabildiği istemci-sunucu mimarisine sahiptir. Bu işlemleri GeoTools (eklenti) veya Hibernate aracılığıyla gerçekleştirmektedir. Geomajas kullanılarak birden çok kaynaktan coğrafi verileri görüntülenebilmekte ve düzenlenebilmektedir, eklentiler ve harita widget’ları aracılığıyla işlevsellik kazandırılabilmektedir. Hem raster hem vektör veriler ile çalışabilmektedir. Kurumsal kullanıma uygun güvenlik entegrasyonu bulunmaktadır. Farklı harita projeksiyonlarını kullanılabilmektedir. İstemciye herhangi bir şey gönderilmeden önce sunucuda güvenlik ve kurumsal iş mantığı uygulanabilmektedir. Böylelikle tasarlanan mimariye uygun sağlam uygulamalar oluşturulabilmektedir. Geomajas temel yeterlilikleri açısından dört farklı katmandan oluşmaktadır.
GeoTools Eklentisi
GeoTools GEOMAJAS’a eklenti olarak kurulabilen ve coğrafi verilerin manipülasyonu için standartlara uygun yöntemler sağlayan açık kaynaklı (LGPL) bir Java kod kütüphanesidir. GeoTools kütüphane veri yapıları Açık Coğrafi Konsorsiyum (OGC) spesifikasyonlarına dayanmaktadır.
GeoServer
GeoServer, web tarayıcıları ve masaüstü CBS programları gibi standart istemcilere çeşitli formatlardan harita ve veri sunmanıza olanak tanıyan bir web sunucusudur. Veriler WMS, WFS, WCS, WPS, Tile Caching ve daha fazlası gibi standart tabanlı arayüzler aracılığıyla yayınlanır. GeoServer tarayıcı tabanlı bir yönetim arayüzü ile birlikte gelir ve arka uçta birden fazla veri kaynağına bağlanır.