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.
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:
- Her uygulamanın dört işi var: veri saklama, veri erişimi, iş mantığı, sunum. Mimari bunların nerede çalıştığıdır.
- Thin client = sadece sunum. İş mantığı sunucudadır.
- Nonfunctional gereksinim mimariyi seçer, tersi değil.
- Erişilebilirlik hesabı: kesinti = toplam süre × (1 − oran). Seri bileşenlerde oranlar çarpılır.
Dört temel bileşen
| Bileşen | Ne yapar | Yemek sipariş uygulamasında |
|---|---|---|
| Data storage | Veriyi saklar | Menü, sipariş, müşteri tabloları |
| Data access logic | Veriye erişen işlemler | “Bu restoranın açık siparişlerini getir” sorgusu |
| Application logic | İş kuralları | Teslimat ücreti hesabı, kurye ataması |
| Presentation logic | Gösterim ve girdi | Menü 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]
| Avantaj | Dezavantaj | |
|---|---|---|
| Client-server genel | Ölçeklenebilir (sunucu ekle), farklı platformlar birlikte çalışır, iş mantığı merkezileşebilir | Karmaşık; birden çok katmanın yazılımı ve güncellemesi; middleware gerekir |
| Two-tier | Basit | İş mantığı istemcide → güncelleme zor, fat client |
| Three-tier / n-tier | Yük dengelenir, her katman ayrı büyür, thin client mümkün | Ağ 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çüt | Server-based | Client-based | Client-server |
|---|---|---|---|
| Altyapı maliyeti | Çok yüksek | Orta | Düşük-orta |
| Geliştirme maliyeti | Orta | Düşük | Yüksek |
| Geliştirme kolaylığı | Düşük | Yüksek | Düşük-orta |
| Arayüz zenginliği | Düşük | Yüksek | Yüksek |
| Kontrol ve güvenlik | Yüksek | Düşük | Orta |
| Ölçeklenebilirlik | Düşük | Orta | Yü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.
| Model | Sağlayıcı verir | Sen yönetirsin | Örnek kullanım |
|---|---|---|---|
| IaaS | Sanal makine, depolama, ağ | İşletim sistemi, runtime, uygulama, veri | Kendi sunucunu kurmadan VM kiralamak |
| PaaS | IaaS + işletim sistemi, runtime, veritabanı servisi | Uygulama kodu ve veri | Kodunu yükle, platform çalıştırsın |
| SaaS | Hazır uygulamanın tamamı | Sadece kullanım ve ayarlar | Web 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
| Kategori | Alt gereksinimler | Mimariye etkisi |
|---|---|---|
| Operational | Teknik ortam, sistem entegrasyonu, taşınabilirlik, bakım kolaylığı | Hangi platformlar, hangi dış sistemlere bağlanılacak; thin client bakımı kolaylaştırır |
| Performance | Hız, kapasite, erişilebilirlik ve güvenilirlik | Sunucu sayısı, yük dengeleme, yedekleme, cloud elasticity |
| Security | Sistemin 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 gereksinimler | Veri 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.
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:
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.
| Gereksinim | Karşılayan tasarım |
|---|---|
| O1 | Thin client: web tarayıcısı ve hafif mobil uygulama; turnikeler REST API ile uygulama katmanına bağlanır |
| P1, P2 | Uygulama 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 |
| C1 | Cloud 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:
| Kalem | Minimum | Önerilen |
|---|---|---|
| Uygulama sunucusu | 2 sanal CPU, 4 GB RAM | 3 örnek, 4 sanal CPU, 8 GB RAM, otomatik ölçekleme |
| Veritabanı | Yönetilen ilişkisel veritabanı, 50 GB | Birincil + kopya (replica), günlük yedek |
| İstemci | Gü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üşünce | Doğrusu |
|---|---|
| Thin client iş mantığını çalıştırır | Thin client sadece sunum yapar |
| Two-tier = istemci + sunucu, mantık sunucuda | Two-tier’da iş mantığı genelde istemcide (fat client) |
| SaaS’ta işletim sistemini sen yönetirsin | O 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 kesinti | 8.76 saat |
| Seri bileşenlerde erişilebilirlik ortalaması alınır | Çarpılır |
| Mimari önce seçilir, gereksinim sonra uydurulur | Nonfunctional gereksinimler mimariyi belirler |
| Deployment diagram’da sınıflar çizilir | Node’lar, artifact’lar ve bağlantılar çizilir |
Kendini test et
Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.
Name the four basic functions of any application that the architecture distributes between client and server.
Cevabı göster
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.
In a three-tier architecture, where does each part typically run?
Cevabı göster
İ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).
Which statement about thin and thick clients is TRUE?
- A thin client runs most of the application logic
- A thick client runs only presentation logic
- A thin client (e.g., a web browser) runs little or no application logic
- Thin clients cannot use servers
Cevabı göster
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.
Which architecture's main advantage is scalability, because servers can be added at each tier?
- Server-based (mainframe)
- Client-based
- Client-server (n-tier)
- Stand-alone desktop
Cevabı göster
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.
A startup uses a provider's database, runtime and OS, and only deploys its own code. Which cloud model is this?
- IaaS
- PaaS
- SaaS
- On-premises
Cevabı göster
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).
A system must have 99.9% availability. What is the maximum downtime per year (365 days)?
Cevabı göster
Yılda 365 × 24 = 8,760 saat. Kesinti payı %0.1: 8,760 × 0.001 = 8.76 saat (yaklaşık 525.6 dakika).
Same question for 99.99% availability, in minutes per year.
Cevabı göster
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.
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
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).
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
2,000 × 5 = 10,000 istek/dakika. 10,000 / 60 = 166.67 ≈ 167 istek/saniye. Kapasite planında üstüne güvenlik payı eklenir.
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
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ı.
In a UML deployment diagram, what does a 3D box represent?
- A class
- A node (hardware or execution environment)
- A use case
- An artifact only
Cevabı göster
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ı.