Page 135 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 135
REST API ve gRPC Mimari Stillerinin Karşılaştırılması | 135
formatta aktardığını belirtir. Her parçanın bağımsız olarak gelişmesine imkân sunar ve böylelikle
mimariyi, dolayısıyla iletişim sürecini basitleştirir. Ayrıca yalnızca istenilen kaynakların, API
kullanıcısına sunulması sağlar.
1.2. Durumsuzluk
REST mimarisinde durumsuzluk, sunucunun her isteği önceki tüm isteklerden bağımsız olarak
tamamladığı bir iletişim yöntemini ifade eder. Istemciler, kaynakları istedikleri sırada talep edebilir
ve her istek diğer isteklerden yalıtılmıştır. Sunucu gelen isteği işlemek için istemcinin durumunu
bilmesine gerek duymaz ve aynı şekilde istemci de sunucudaki durum bilgisine ihtiyaç duymaz. Bu
REST API tasarımı kısıtlaması, sunucunun isteği her seferinde tam olarak anlayabileceği ve yerine
getirebileceği anlamına gelir. Durumsuzluğa ulaşmak için, her istek, önceki mesajları görmeden
sunucunun kaynak ve işlem hakkında bilmesi gereken tüm bilgileri içermelidir. Sunucu ayrıca, önceki
oturum paketlerinden gelen bağlamsal bilgiler olmadan istemcinin tamamen anlayabileceği bir
mesajla yanıt vermelidir.
Sunucu tarafında oturum bilgileri tutulmaz ve sunucu istekler ilgili verileri kaydetmez. Sunucu
tarafındaki servisin isteği işleyebilmesi için bir veri gerekiyorsa bu verinin kesinlikle her istek paketi
içerisinde gönderilmesi gereklidir. Yani sunucu için istemciden gelen her istek durumsuz bir şekilde
başlar ve istemcinin gönderdiği veriler ile geçici bir durum oluşur. Istemci durum verilerini kendi
önbelleği aracılığıyla kaydeder. Durumsuzluk, önceki isteklerin ve yanıtların depolanmasından
kaynaklanan sunucu yükünü ortadan kaldırarak REST API’leri güvenilir, hızlı ve ölçeklenebilir hale
getirir.
1.3. Istemci Sunucu Ayrımı
REST API’lerde istemci ve sunucu bağımsız olarak çalışır. Istemci sunucu tarafındaki altyapı vs.
hakkında bilgiye ihtiyaç duymaz. Sunucu tarafında yapılacak değişiklikler istemcileri etkilemeyeceği
için bağımlılık azaltılmış olur. Istemci sunucuya kendisi ile paylaşılmış API dokümanları doğrultusunda
geçerli istekler iletir ve geçerli yanıtlar alır.
1.4. Katmanlı Sistem
Katmanlı bir sistem mimarisinde istemci sunucuya doğrudan bağlanmak yerine arada bulunan yetkili
aracılara bağlanarak sunucudan yanıt alır. Istemci yalnızca istek göndereceği sunucuyu bilir. Istek
gönderdiği sunucu arka tarafta belki 10 farklı sunucuya istek gönderip verileri toparlayıp sunuyor
olabilir ya da isteği yük dengeleyici sistemler ile işliyor olabilir. Aslında burada katmanlı olabilen taraf
sunucu kısmıdır. Katmanlı mimari, sunucularda farklı bileşenlerin değiştirilebilir olması ve bakımına
imkân sağlar.