SEN2022 · 12. hafta · Physical Architecture Layer Design

Fiziksel mimari katmanı tasarımı: client-server, cloud, nonfunctional gereksinimler

Uygulamanın dört bileşeninin (veri saklama, veri erişimi, iş mantığı, sunum) donanıma dağıtılması: server-based, client-based, 2/3/n-tier client-server, cloud (IaaS/PaaS/SaaS); nonfunctional gereksinimlerden mimariye geçiş ve donanım/yazılım spesifikasyonu.

physical architecture layerdata storagedata access logicapplication logicpresentation logicserver-based architectureclient-based architectureclient-server architecturethin clientthick (fat) clienttwo-tierthree-tiern-tiermiddlewarescalabilitycloud computingIaaSPaaSSaaSvirtualizationavailabilitydeployment diagramnodeartifacthardware and software specification

Analiz bitti, modeller dengelendi. Tasarımda ilk büyük karar: bu yazılım hangi makinelerde çalışacak ve parçaları nasıl dağıtılacak? Fiziksel mimari katmanı (physical architecture layer) bu soruya cevap verir. Kararı belirleyen şey, 5. haftada topladığın nonfunctional gereksinimlerdir: performans, güvenlik, operasyonel ortam, kültürel ve politik kısıtlar. Sınavda mimari türlerinin karşılaştırması, cloud modelleri ve “bu gereksinimler için hangi mimari” senaryosu gelir; bazen bir erişilebilirlik hesabı.

Altın kurallar:

  1. Her uygulamanın dört işi var: veri saklama, veri erişimi, iş mantığı, sunum. Mimari bunların nerede çalıştığıdır.
  2. Thin client = sadece sunum. İş mantığı sunucudadır.
  3. Nonfunctional gereksinim mimariyi seçer, tersi değil.
  4. Erişilebilirlik hesabı: kesinti = toplam süre × (1 − oran). Seri bileşenlerde oranlar çarpılır.

Dört temel bileşen

BileşenNe yaparYemek sipariş uygulamasında
Data storageVeriyi saklarMenü, sipariş, müşteri tabloları
Data access logicVeriye erişen işlemler“Bu restoranın açık siparişlerini getir” sorgusu
Application logicİş kurallarıTeslimat ücreti hesabı, kurye ataması
Presentation logicGösterim ve girdiMenü ekranı, sepet, butonlar

Mimari türleri

Server-based architecture

Dört bileşenin hepsi merkezi bir sunucuda (eskiden mainframe) çalışır; istemci sadece tuşları gönderen ve ekranı gösteren bir terminaldir.

  • Artı: merkezi kontrol, güvenlik, tek yerde bakım.
  • Eksi: sunucu darboğaz olur, büyütmek pahalı ve kademeli değil (yeni ve çok daha büyük sunucu almak gerekir).

Client-based architecture

İstemci sunum, iş mantığı ve veri erişimini yapar; sunucu sadece dosyaları saklar (dosya sunucusu).

  • Artı: basit, geliştirmesi kolay.
  • Eksi: bütün veri ağ üzerinden istemciye taşınır, ağ yükü büyük; çok kullanıcıda performans düşer.

Client-server architecture

İş bölünür: istemci sunumdan sorumludur, sunucu verilerden; iş mantığı ikisine ya da ayrı sunuculara dağıtılır.

Two-tier
[Client: presentation + app logic]
          |
[DB server: data access + storage]

Three-tier
[Client: presentation]
          |
[App/web server: application logic]
          |
[DB server: data access + storage]

N-tier
[Client] - [Web srv] - [Order svc]
                     - [Payment svc]
                     - [DB server]
AvantajDezavantaj
Client-server genelÖlçeklenebilir (sunucu ekle), farklı platformlar birlikte çalışır, iş mantığı merkezileşebilirKarmaşık; birden çok katmanın yazılımı ve güncellemesi; middleware gerekir
Two-tierBasitİş mantığı istemcide → güncelleme zor, fat client
Three-tier / n-tierYük dengelenir, her katman ayrı büyür, thin client mümkünAğ trafiği ve tasarım karmaşıklığı artar

Middleware, farklı katmanlardaki yazılımların birbiriyle konuşmasını sağlayan ara yazılımdır (mesaj kuyrukları, API ağ geçitleri).

Thin vs thick client: Thin client sadece sunum yapar (web tarayıcısı). Thick (fat) client iş mantığının bir kısmını da çalıştırır (bazı masaüstü ya da mobil uygulamalar). Thin client’ın bakımı kolaydır; thick client çevrimdışı çalışabilir ve sunucu yükünü azaltır.

Karşılaştırma

ÖlçütServer-basedClient-basedClient-server
Altyapı maliyetiÇok yüksekOrtaDüşük-orta
Geliştirme maliyetiOrtaDüşükYüksek
Geliştirme kolaylığıDüşükYüksekDüşük-orta
Arayüz zenginliğiDüşükYüksekYüksek
Kontrol ve güvenlikYüksekDüşükOrta
ÖlçeklenebilirlikDüşükOrtaYüksek

Cloud computing

Donanım ve yazılım kaynakları internet üzerinden, kullandıkça öde modeliyle kiralanır. Temelinde virtualization vardır: bir fiziksel sunucu birden çok sanal makineyi çalıştırır.

ModelSağlayıcı verirSen yönetirsinÖrnek kullanım
IaaSSanal makine, depolama, ağİşletim sistemi, runtime, uygulama, veriKendi sunucunu kurmadan VM kiralamak
PaaSIaaS + işletim sistemi, runtime, veritabanı servisiUygulama kodu ve veriKodunu yükle, platform çalıştırsın
SaaSHazır uygulamanın tamamıSadece kullanım ve ayarlarWeb tabanlı e-posta, ofis yazılımı

Artıları: ilk yatırım düşük, hızlı büyüme (elasticity), bakım sağlayıcıda. Eksileri: sağlayıcıya bağımlılık (vendor lock-in), verinin nerede durduğu (yasal uyum), uzun vadede maliyet, internet bağlantısına bağımlılık.

Diğer kavramlar: ubiquitous computing / Internet of Things (sensörler, turnikeler, akıllı cihazlar sisteme bağlanır), green IT (enerji verimliliği, sanallaştırma ile daha az fiziksel sunucu).

Nonfunctional gereksinimlerden mimariye

KategoriAlt gereksinimlerMimariye etkisi
OperationalTeknik ortam, sistem entegrasyonu, taşınabilirlik, bakım kolaylığıHangi platformlar, hangi dış sistemlere bağlanılacak; thin client bakımı kolaylaştırır
PerformanceHız, kapasite, erişilebilirlik ve güvenilirlikSunucu sayısı, yük dengeleme, yedekleme, cloud elasticity
SecuritySistemin değeri, erişim kontrolü, şifreleme ve kimlik doğrulama, virüs kontrolüVeritabanını ayrı ve korunan katmana koy, HTTPS, güvenlik duvarı
Cultural and politicalÇok dillilik, özelleştirme, yazılı olmayan normlar, yasal gereksinimlerVeri saklama bölgesi (KVKK), çok dilli arayüz, yerel para birimi

Erişilebilirlik hesabı

Erişilebilirlik (availability) sistemin kullanılabilir olduğu zamanın oranıdır. Bir yıl 365 × 24 = 8,760 saattir.

izin verilen kesinti=8760×(1−A)\text{izin verilen kesinti} = 8760 \times (1 - A)

A        Yıllık kesinti
99%      87.6 saat
99.5%    43.8 saat
99.9%    8.76 saat  (525.6 dk)
99.99%   52.56 dk

Seri bileşenler: Web sunucusu (%99) ve veritabanı (%99.5) birlikte çalışmak zorundaysa:

A=0.99×0.995=0.98505≈%98.5A = 0.99 \times 0.995 = 0.98505 \approx \%98.5

Toplam, en zayıf halkadan bile düşük. Çözüm: yedekli (redundant) sunucular, yük dengeleyici.

Kapasite tahmini

Kampüs yemek uygulamasında öğle arası 2,000 aktif kullanıcı, kişi başı dakikada yaklaşık 5 istek:

2,000 x 5 = 10,000 istek/dk
10,000 / 60 ≈ 166.67 istek/sn

Sunucu seçimi bu tepe değere ve bir güvenlik payına göre yapılır.

Çözümlü örnek: FitHub için mimari kararı

Gereksinimler:

  • O1. Üyeler mobil uygulama ve web üzerinden erişir; turnikeler (IoT) check-in yapar. (operational)
  • P1. Akşam 18:00-21:00 arası 5 şubede eşzamanlı 1,500 kullanıcı. (performance)
  • P2. %99.9 erişilebilirlik; turnike çalışmazsa üye içeri giremez. (performance)
  • S1. Kart verisi saklanmayacak, ödeme dış sağlayıcıda. (security)
  • C1. Kişisel veriler Türkiye’deki ya da KVKK’ya uygun bir bölgede saklanacak. (cultural and political)

Karar: Three-tier (n-tier) client-server, PaaS üzerinde.

GereksinimKarşılayan tasarım
O1Thin client: web tarayıcısı ve hafif mobil uygulama; turnikeler REST API ile uygulama katmanına bağlanır
P1, P2Uygulama katmanında birden çok sunucu ve yük dengeleyici; veritabanı yedekli
P2 (turnike)Turnikede kısa süreli çevrimdışı mod: son senkronize üye listesiyle kontrol
S1Ödeme dış sağlayıcıya yönlendirilir (EIF), sistem sadece işlem numarası saklar
C1Cloud bölgesi uygun seçilir; veritabanı katmanı sadece uygulama sunucularından erişilebilir

Deployment diagram

+------------------+     +-------------------+
| <<device>>       |     | <<device>>        |
| Member phone     |     | Turnstile (IoT)   |
| [fithub.apk]     |     | [gate-agent]      |
+--------+---------+     +---------+---------+
         | HTTPS                   | HTTPS
         v                         v
+--------------------------------------------+
| <<execution env>> PaaS app tier (x3)       |
| [fithub-api.jar]                           |
+--------------------+-----------------------+
                     | TCP (private network)
+--------------------v-----------------------+
| <<node>> Managed DB (primary + replica)    |
+--------------------------------------------+

Node (küp; burada kutu) donanım ya da çalışma ortamıdır, köşeli parantezdekiler artifact’lardır, oklar communication path.

Donanım ve yazılım spesifikasyonu

Tasarımın çıktılarından biri, satın alınacak ya da kiralanacak kaynakların listesidir:

KalemMinimumÖnerilen
Uygulama sunucusu2 sanal CPU, 4 GB RAM3 örnek, 4 sanal CPU, 8 GB RAM, otomatik ölçekleme
VeritabanıYönetilen ilişkisel veritabanı, 50 GBBirincil + kopya (replica), günlük yedek
İstemciGüncel tarayıcı / Android 10+, iOS 15+
AğHTTPS, şubelerde 50 MbpsŞubelerde yedek mobil hat
Yazılımİşletim sistemi, runtime, veritabanı lisanslarıİzleme ve loglama aracı

Spesifikasyon tedarikçilere (vendor) gönderilir; teklifler fiyat, performans, destek ve güvenilirliğe göre karşılaştırılır. Bütün maliyet hesaba katılır: lisans, kurulum, eğitim, bakım (total cost of ownership).

Sık yapılan hatalar

Yanlış düşünceDoğrusu
Thin client iş mantığını çalıştırırThin client sadece sunum yapar
Two-tier = istemci + sunucu, mantık sunucudaTwo-tier’da iş mantığı genelde istemcide (fat client)
SaaS’ta işletim sistemini sen yönetirsinO IaaS; SaaS’ta sadece uygulamayı kullanırsın
Cloud her zaman daha ucuzdurİlk yatırım düşük, uzun vadede değişir; bağımlılık riski var
%99.9 = yılda 8.76 dakika kesinti8.76 saat
Seri bileşenlerde erişilebilirlik ortalaması alınırÇarpılır
Mimari önce seçilir, gereksinim sonra uydurulurNonfunctional gereksinimler mimariyi belirler
Deployment diagram’da sınıflar çizilirNode’lar, artifact’lar ve bağlantılar çizilir

Kendini test et

Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.

Soru 1kolay

Name the four basic functions of any application that the architecture distributes between client and server.

Cevabı göster
Data storage, data access logic, application (business) logic, presentation logic

Data storage: verinin saklanması. Data access logic: veriye erişen işlem (SQL sorguları). Application logic: iş kuralları. Presentation logic: kullanıcıya gösterim ve girdi alma. Mimari türü, bu dördünün nerede çalıştığına göre belirlenir.

Soru 2orta

In a three-tier architecture, where does each part typically run?

Cevabı göster
Presentation on the client; application logic on an application (web) server; data access logic and data storage on a database server.

İki katmanlıda (two-tier) istemci sunum + iş mantığını, sunucu veriyi tutar. Üç katmanlıda iş mantığı ayrı bir uygulama sunucusuna taşınır. N-tier'da iş mantığı birden çok sunucuya bölünür (ör. web sunucusu + ödeme servisi + bildirim servisi).

Soru 3kolay

Which statement about thin and thick clients is TRUE?

  1. A thin client runs most of the application logic
  2. A thick client runs only presentation logic
  3. A thin client (e.g., a web browser) runs little or no application logic
  4. Thin clients cannot use servers
Cevabı göster
C) A thin client (e.g., a web browser) runs little or no application logic

Thin client sadece (ya da çoğunlukla) sunum yapar, iş mantığı sunucudadır. Thick (fat) client iş mantığının çoğunu da çalıştırır. Thin client'ın bakımı kolaydır: güncelleme sunucuda yapılır.

Soru 4orta

Which architecture's main advantage is scalability, because servers can be added at each tier?

  1. Server-based (mainframe)
  2. Client-based
  3. Client-server (n-tier)
  4. Stand-alone desktop
Cevabı göster
C) Client-server (n-tier)

Client-server'da yük artınca sunucu eklenir ya da güçlendirilir (scale up / scale out). Server-based mimaride tek merkez sunucu darboğazdır ve büyütmek pahalıdır. Client-based mimaride ağ trafiği büyür.

Soru 5orta

A startup uses a provider's database, runtime and OS, and only deploys its own code. Which cloud model is this?

  1. IaaS
  2. PaaS
  3. SaaS
  4. On-premises
Cevabı göster
B) PaaS

IaaS: sanal makine, depolama, ağ; işletim sistemi ve üstü senin. PaaS: platform (runtime, veritabanı servisi) sağlanır, sen kodunu koyarsın. SaaS: hazır uygulamayı kullanırsın (e-posta, CRM).

Soru 6orta

A system must have 99.9% availability. What is the maximum downtime per year (365 days)?

Cevabı göster
8.76 hours

Yılda 365 × 24 = 8,760 saat. Kesinti payı %0.1: 8,760 × 0.001 = 8.76 saat (yaklaşık 525.6 dakika).

Soru 7orta

Same question for 99.99% availability, in minutes per year.

Cevabı göster
52.56 minutes

8,760 × 60 = 525,600 dakika. %0.01'i: 525,600 × 0.0001 = 52.56 dakika. Her ek "9" kesintiyi 10'da birine indirir ve maliyeti ciddi artırır.

Soru 8zor

A web server with 99% availability and a database server with 99.5% availability are both required (in series). What is the overall availability?

Cevabı göster
≈ 98.5%

Seri bağlı bileşenlerde ikisinin de çalışması gerekir, olasılıklar çarpılır: 0.99 × 0.995 = 0.98505 ≈ %98.5. Toplam erişilebilirlik en zayıf bileşenden bile düşüktür. Bu yüzden kritik bileşenler yedeklenir (redundancy).

Soru 9kolay

At peak time 2,000 users each send about 5 requests per minute. How many requests per second must the server handle?

Cevabı göster
≈ 167 requests per second

2,000 × 5 = 10,000 istek/dakika. 10,000 / 60 = 166.67 ≈ 167 istek/saniye. Kapasite planında üstüne güvenlik payı eklenir.

Soru 10zor

Classify: 'The app must be available in Turkish and English and follow KVKK rules.' Which nonfunctional category drives this, and what is one architecture consequence?

Cevabı göster
Cultural and political; e.g., store personal data in a region/data center that complies with KVKK and design the UI for multiple languages.

Dil desteği ve yasal uyum cultural and political gereksinimdir. Mimariye etkisi: verinin hangi ülkede/bölgede saklanacağı (cloud bölgesi seçimi), çok dilli arayüz desteği, kişisel veriye erişim kaydı.

Soru 11kolay

In a UML deployment diagram, what does a 3D box represent?

  1. A class
  2. A node (hardware or execution environment)
  3. A use case
  4. An artifact only
Cevabı göster
B) A node (hardware or execution environment)

Deployment diagram'da node (küp) donanım ya da çalışma ortamıdır (sunucu, telefon, Docker konteyneri). Artifact (yazılım dosyası: .jar, .apk) node'un içine yerleştirilir. Node'lar arasındaki çizgi communication path'tir (HTTPS, TCP).

Doğrulama: Erişilebilirlik (availability) kesinti süreleri, seri bağlı bileşenlerin toplam erişilebilirliği ve saniyedeki istek sayısı node ile hesaplandı (verify/SEN2022/12.mjs). Kavramsal sorular mimari türleri, cloud servis modelleri ve nonfunctional gereksinim kategorilerinin standart tanımlarıyla karşılaştırıldı.

Deftere not kartı

4 bileşen: data storage, data access logic, application logic, presentation logic Server-based: hepsi sunucuda (terminal); merkezi, pahalı büyür Client-based: mantık istemcide, sunucu sadece dosya; ağ yükü yüksek Client-server: 2-tier (istemci: sunum+mantık), 3-tier (ayrı uygulama sunucusu), n-tier Thin client: sadece sunum (tarayıcı); thick client: mantık da istemcide C/S artı: ölçeklenebilir, platform bağımsız; eksi: karmaşık, güncelleme zor Cloud: IaaS (sanal makine) / PaaS (platform) / SaaS (hazır uygulama) Nonfunctional → mimari: operational, performance, security, cultural & political Availability: kesinti = 8760 saat × (1 - oran) %99 → 87.6 sa %99.9 → 8.76 sa %99.99 → 52.56 dk Seri bileşen: erişilebilirlikler çarpılır Deployment diagram: node (küp), artifact, communication path Spec: donanım + yazılım + ağ, minimum ve önerilen değerler