Backend ortamının özü, veriyi kullanıcıya güvenilir biçimde iletmektir. Bunun için web sunucusu, WAS ve veritabanı olmak üzere üç temel unsur mutlaka gereklidir. Bu üç unsur, web’in gelişim sürecinde ortaya çıkan sorunları çözmek için evrilmeye devam etmiştir. Monitoring, load balancing, caching, CI/CD pipeline, Kubernetes gibi ileri düzey teknolojiler de bu 3 unsura dair anlayış olmadan ele alındığında, her an yıkılabilecek bir ev inşa etmeye benzer.
Birincisi, web sunucusunun rolü
Web sunucusunun başlıca görevi bir dosya sunucusu olarak dosyaları iletmekti; Nginx, Apache, IIS ve Caddy buna örnek gösterilebilir. Bu tür web sunucuları, statik dosya sunma konusundaki temel işlevlerine odaklanır ve bu konuda son derece optimize edilmiştir.
İkincisi, WAS (Web Application Server)'ın ortaya çıkışı ve rolü
WAS, belirli bir isteği aldığında önceden tanımlanmış bir programı çalıştırır ve bu programın ürettiği sonucu kullanıcıya sunar. Bu yaklaşım gerçek backend’in doğuşu olarak görülebilir; yani sunucunun yalnızca dosya çıktısı vermenin ötesine geçip düşünmeye, hesaplama yapmaya ve iş mantığını işlemeye başladığı andır. Web sunucusu her zaman aynı statik sayfayı döndürürken, WAS dinamik sayfalar döndürür.
Üçüncüsü, veritabanının gerekliliği ve rolü
Veritabanı, veriyi kalıcı olarak depetmek, güvenli şekilde yönetmek ve eşzamanlı erişimi kontrol etmek görevini üstlenir.
Bunun dışında backend planlaması için bilinmesi çok faydalı olan konular arasında RESTful API tasarımı (kaynak odaklı URL tasarımı, HTTP'nin (GET, POST, PUT, DELETE vb.) anlamı, durum kodlarının kullanımı gibi REST mimari stiline dayalı API tasarım ilkeleri), kimlik doğrulama (oturum tabanlı kimlik doğrulama gibi kullanıcı doğrulama ve yetkilendirme yöntemlerine dair temel anlayış ile kullanıcı yönetimi politikalarının oluşturulması) ve hata işleme (sistem kararlılığını sağlamak için zorunlu olan istisna durumlarının ele alınmasına dair kavramsal anlayış) sayılabilir.
8 yorum
Dünyada backend'in yalnızca web protokolü kullandığını sananlar var
Backend'in temel 3 unsuru deniyor ama web sunucusu çıkınca insanın başı dönüyor
ALB ya da CDN gibi şeyler zaten web sunucusunun yapmasını beklediğimiz kısımların hepsini yapıyorken, buna neden özellikle bağlı kalındığını anlayamıyorum. Sizlerin, gerçekten web sunucusu olduğu için engellenebilen bir güvenlik sorunu gibi somut örnekleri var mı?
ALB işlev olarak web sunucusunun yerini alıyor ve kullanıcıların WAS gibi backend’e doğrudan erişmesi mümkün değilse, mevcut güvenlik ortamı yapılandırmasının gereklilikleri karşıladığını söyleyebiliriz. Ayrıca birçok hizmetin hâlâ on-premise ortamda çalıştığını da unutmamak gerekir.
Güvenlik açısından bakıldığında, Web Server / WAS sunucularının hâlâ ayrılması gerektiğini düşünüyorum. Bulut yerel ortam olsa da bu değişmez. WAS gibi backend bileşenleri, kullanıcıların doğrudan bağlanabileceği bir katmanda yer almamalı.
Web sunucusu / WAS kavramını bilmek hâlâ anlamlı mı?
Java EE, php ve CGI'ın popüler olduğu dönemlerde bu ayrım yerindeydi; ancak bugün çoğu dil kendi HTTP sunucusunu gömülü olarak sunuyor ve ALB, API Gateway, CDN, Object Storage gibi kavramlar ortaya çıkıp gündelik hale geldikçe dönem değişti.
Hatta tarihsel bağlam olmadan, bugünkünden oldukça farklı olan Web Server ve WAS kavramlarının artık uygun kavramlar olmadığını ve başlangıç seviyesindekiler için sadece daha büyük bir kafa karışıklığı yaratacağını düşünüyorum.
Fintech tarafında güvenlik gereksinimleri nedeniyle hâlâ Web-WAS ayrımının olduğu ortamlar çok. Kişinin hangi ortama düşeceği belli olmadığından, bence her şeye hazırlıklı olmak doğru haha
Bulut ortamı olan günümüzde de büyük ölçekli işleme için
tek bir instance içinde birden fazla WAS'ı verimli şekilde dengelemek için kullanılır
Ağ istekleri azsa gerekli olmayabilir ama
Katılıyorum. 12-factor app ilkelerini ve cloud-native kalıplarını öğretmek daha pratik olur gibi görünüyor. Konseptin kendisi fazla eski.