You are on page 1of 20

TYZM-612: Yazılım Mimarileri

10.Hafta: Web Uygulamaları


10.1 Web Uygulamaları

•Arayüzden ziyade sunucu tarafındaki yapıların önemli olduğu


web-tabanlı uygulamalardır.
•Genellikle 3 katmanlı mimari ve Model-View-Controller
mimarisi ile geliştirilir.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 2
10.2 Web Uygulama
Mimarisi

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 3
10.3 Tasarım Kararları

•Bakımının kolay yapılabilmesi, performansın gözlenebilmesi


ve ölçeklenebilirliğin sağlanabilmesi için uygulama doğru bir
mantıksal yaklaşım ile katmanlara bölünmelidir.
•Katmanlar arasındaki bağı azaltmak için, özellikle arayüz
bileşenlerinin ortak dil kullanması için, ‘Interface’ ve ‘Abstract
Class’ kullanın.
•Tarayıcı ile sunucu arasındaki gidip-gelme işlemlerini
azaltmak için bellekleme (caching) ve çıktı tampon belleği
(output buffering) kullanın.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 4
10.3 Tasarım Kararları

•Şüpheli atakları yakalamak için loglama ve logları inceleme


işlemlerine önem verin.
•Uzun süren işlemlerde ya da sistemi bloklayan işlemlerde eş
zamanlı olmayan iletişim tercih edin.
•Katmanlar arası geçişlerde kullanıcıların kimliğini doğrulayın.
•Önemli bilgileri gönderirken SSL gibi şifreleme metotları kullanın.
•Uygulamanın en düşük yetki düzeyiyle kullanılmasını sağlayın. Bir
korsan bu yetkiyi ele geçirdiğinde yapabilecekleri kısıtlı olsun.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 5
10.4 Konuşlandırma Kararları

•Dağıtık olmayan konuşlandırma:


• Mantıksal olarak ayrılmış tüm katmanlar aynı sunucu üzerinde yer alır.
• Katmanlar arasındaki yerel çağrılar performans kazancı sağlar.
• Katmanlar arasında yeniden kimlik doğrulama gerekmez.
• Veritabanı ile web sunucusu arasında ‘Trusted Subsytem’ kullan.
• Web sunucusu ile DB sunucusu arasında verileri şifrele.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 6
10.4 Konuşlandırma Kararları

•Dağıtık konuşlandırma:
• Eğer zorunlu değilse iş katmanı bileşenlerini aynı sunucuda çalıştırın.
• Güvenlik gereksinimleri nedeniyle sunum katmanı ile iş katmanı ayrı sunucularda
olabilir.
• İş katmanı için mesaj tabanlı arayüz kullanın.
• Farklı katmanlar arasındaki veri alışverişi için şifreleme kullanın.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 7
10.4 Konuşlandırma Kararları

•Performansı arttırmak istiyorsanız dağıtık olmayan yapıyı


seçin.
•Ölçeklenebilirliği arttırmak ve katmanların güvenliğini ayrı-
ayrı sağlamak için dağıtık yapıyı seçin.
•Yük dağıtım uygulaması kullanın:

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 8
10.5 Tarayıcı-Sunucu İlişkisi

•Tarayıcılar web sunucuları ile ‘HyperText Transfer Protocol


(HTTP)’ ile iletişim kurarlar.
• Kullanıcı bir linke tıkladığında, formu submit ettiğinde, bir arama yaptığında bir ‘HTTP
İsteği (Request)’ mesajı tarayıcıdan sunucuya gönderilir.
• İstek, hangi kaynağın (ya da dosyanın) istendiğini belirleyen URL, ilgili aksiyonu (get, delete, post)
içerir.
• Ek bilgileri içeren URL parametreleri POST verisi şeklinde de gönderilir.
• Sunucu, gelen isteği işler ve ‘HTTP Yanıt (Response)’ mesajı ile cevap verir.
• Mesaj, işlemin başarı durumunu (örneğin ‘HTTP/1.1 200 OK), ve ilgili kaynakları (HTML sayfası,
resim vb.) içerir.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 9
10.6 Sunucu Tarafı ve İstemci Tarafı
Programlama

•İstemci tarafı programlama, tarayıcı içerisinde çalışan,


genellikle HTML, CSS, JavaScript kullanılarak geliştirilen ve
arayüz ile ilgili bileşenleri içeren işlemdir.
•Sunucu tarafı programlama, sunucu bilgisayara tam erişim
sağlanabilen, bir veritabanı ile iletişim kurulan, PHP, Python,
Ruby, C#, NodeJS gibi dillerle geliştirilen ve çoğunlukla iş
katmanı bileşenlerini içeren işlemdir.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 10
10.7 Sunucu Tarafı Web Programlama

•Statik

•Dinamik

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 11
10.8 Sunucu-İstemci Çerçeveleri

•Sunucu Çerçevleri
• Django – Python
• Ruby on Rails – Ruby
• ASP.NET
• Spring
• Laravel
• Express – Node.js
•İstemci Çerçeveleri
• Angular
• React
• Vue.js

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 12
10.9 Çerçeve Kullanmanın Avantajları

•HTTP istekleri ile kolay çalışma:


• HTTP’nin ve network nesnelerinin alt-düzey kodları ile çalışma gerektirmeden, üst
düzey kodlarla istekleri cevaplama.

•İstekleri doğru işleyicilere yönlendirme:


• Onlarca değişik URL örüntüsünü doğru fonksiyonlara kolayca yönlendirme.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 13
10.9 Çerçeve Kullanmanın Avantajları

•HTTP Get ve Post istekleri ve bunların parametreleri, çerez


ve oturum bilgileri kolayca işlenir.
• Django HttpRequest nesnesi bu bilgilerin işlenmesi için kullanılır.
•Veritabanı erişimi kolaylaşır. Genellikle çoğu bir Object-
Relational Mapping (ORM) kullanırlar.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 14
10.9 Çerçeve Kullanmanın Avantajları

•Veri sunumu kolaylaşır.


• Genellikle çıktılar bir şablon ile oluşturlur. Dinamik kısımlar şablondaki yer tutucularla
belirlenir.
• JSON ve XML ile çalışma desteklenir.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 15
10.10 Web Uygulama Örneği

•Storyblocks: ticari fotoğraf, video deposu:


• Bir kullanıcı Google üzerinden bir resim arar. Çıkan resimlerden birine tıklar. Google
arama sayfası, ilgili resmin IP adresini DNS
sunucusundan alır ve kullanıcının isteği
Storyblocks web sitesine yönlendirilir.
• Load Balancer kullanıcıyı web sunucularından
birine gönderir. Storyblocks’un AWS
üzerinde 150-400 EC2 sunucusu vardır.
• Web sunucusu ilgili resmi Caching
Service üzerinde arar.
• Caching Service key/value veri deposudur.
• Çok aranan kaynakların hızlı bulunmasını sağlarlar.
• Redis ve Memcache en bilinenleridir.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 16
10.10 Web Uygulama Örneği

• Bulunan resmin üzerinde renklendirme işlemlerinin yapılmadığı anlaşılır ve bu işlem


için Job Queue üzerinde bir iş tanımlanır.
• Renklendirme işlemi eş zamanlı olmayan bir biçimde çalışır ve işlem bitince veritabanı
güncellenir.
• Resmin başlığı kullanılarak ilgili diğer
resimler için bir text search yapılır.
• En bilinenleri:
• ElasticSearch,
• Sphinx,
• Apache Solr

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 17
10.10 Web Uygulama Örneği

• Hesap Hizmeti, Ödeme Hizmeti, HTMNL->PDF çevrim hizmeti gibi hizmetler diğer
servislerden alınabilir.
• İşlenmiş resim ve ilgili resimler ‘Data Firehose’ üzerinden bulut sunucularına ve Data
Warehouse’a aktarılır.
• Data Firehose: veri depolarına ve analitik
araçlarına akış verilerini güvenilir bir şekilde
yüklemenin en kolay yoludur.
• AWS Kinesis, Apache Kafka
• Storyblocks’un kendi veritabanı
üzerindeki veriler her gece Amazon
Redshift data warehouse’una yüklenir.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 18
10.10 Web Uygulama Örneği

• Storyblocks’un tüm resim, video ve ses assetleri, JavaScript ve CSS belgeleri, bulut
sunucuları üzerinde bir Content Delivery Network içerir.
• Web Sunucusu, Load Balancer üzerinden Web sayfasını kullanıcıya gönderir.
• Resimler ve ilgili JavaScript, CSS kodları
CDN üzerinden sayfadaki ilgili yerlere
yerleştirilir.

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 19
Ders Sonu

•Soru & Cevap

29.04.2020 İlgili sunu Ahmet Yesevi Üniversitesi için "Dr. Bilgin Avenoğlu" tarafından hazırlanmıştır. 20

You might also like