Skip to content

Remote Facade Pattern ile Network Verimliliğini Arttırmak

Merhaba arkadaşlar.

Bu makalemde sizlere distributed architecture design pattern’leri arasında bulunan Remote Facade pattern’i hakkındaki bilgilerimi aktarmaya çalışacağım.

Bu pattern’i anladığımızda her ne kadar basit ve kolay gelecek olsa da, aslında yaptığı iş ve sağlayacağı fayda açısından asla küçümsememeliyiz. Günümüzde mobil uygulamalar sayesinde RESTful tabanlı mimarilerin git gide popülerleşmesi ile birlikte, yeni geliştirilen ve mevcut sistemler yavaş yavaş servis yönelimli mimarilere kaymaktadır. Bu mimarilerin getirdiği faydaların yanı sıra, “latency” ve “network yavaşlığı” gibi problemleri de beraberinde getirmektedir. Helede bu servislerin implementasyonu sırasında yanlış kararlar verilip, her bir işlem için sürekli ilgili servis call ediliyorsa. Bu gibi durumlarda fazlasıyla servis çağrılarında bulunulacağı için, ilgili servis çağrısı yapan uygulamanın hız performansı hemde çağrılan servisin yüksek concurrent işlem anında ölçeklenebilirliğini sağlamak zamanla imkansız bir hale gelecektir. Peki bu gibi durumlarda neler yapmalıyız?, nelere dikkat etmeliyiz kısmına bir bakalım.

Nedir Remote Facade?

remote-facede

Martin Fowler bu pattern için kitabında derki;

“Provides a coarse-grained facade on fine-grained objects to improve efficiency over a network”

Yani Remote Facade’ın özünde yaptığı iş, network verimliliğini arttırmak için birden fazla veriyi servis üzerinden tek tek çekmek yerine bunu bir nesne üzerinde bir kere çekmektir. Bu sayede hem client tarafında performans artışı sağlamış hemde servis tarafında transaction sayısını azaltacağımız için verimliliğinide sağlamış oluruz.

Remote Facade pattern’inin bir başka faydası ise bize, karmaşık business işlemlerininde kolaylıkla tek bir servis çağrısı ile handle edebilmemizi sağlamasıdır.

Nasıl Kullanılır?

address-remote-facede

Kullanımı yukarıdaki diyagramda görüldüğü gibi aslında oldukça basit örneklemiş Martin Fowler. Buradaki tasarımda görüldüğü gibi Address Facade tasarımı, Address Domain Model‘inden “GetStreet”, “GetZip”, “GetCity” method’larına tek tek servis çağrısı bulunulması yerine, Address Facade üzerinden “GetAddressData” method’u ile bu üç method sonucuna tek bir servis çağrısı aracılığı ile erişilebilinmesini sağlamaktadır. Bu sayede hem network üzerindeki yoğun trafik oranı hemde sunucu tarafındaki serialization maliyeti düşürülmüş olacaktır.

Buradaki Address Facade modeli aklımızı Data Transfer Object (DTO) modeli ile belki karıştırabilir. DTO modeli de içerisinde ortak olan business’ları encapsule ederek, katmanlar arası data geçirebilmektedir. Fakat DTO içerisinde herhangi bir setter method barındırmamaktadır. Remote Facade deseninde ise setter işlemler de dahil olmak üzere, aynı business’lar için bir arada yapılabilmektedir.

Peki derseniz GOF pattern’leri arasında bulunan Facade pattern’i ile arasındaki fark nedir derseniz? Ozaman şöyle diyelim:

  • Facade pattern’i kompleks olan methodların sadeleştirilmesi ile ilgilenirken, Remote Facade pattern’i ise: tam olarak ortak kullanılan birkaç methodu birleştirerek, network trafiğini ve latency oranını azaltmak ile ilgilenmektedir.

Sonuç olarak Remote Facade deseni servis yönelimli mimariler üzerinde network verimliliğimizi daha iyi ölçekleyebilmek adına, birkaç ortak method’u tek bir servis çağrısı aracılığı ile gerçekleştirebilmemizi sağlamaktadır.

Umarım faydalı bir yazı olmuştur. Bir başka yazımda görüşmek dileğiyle.

 

Published inArchitecturalKurumsal Tasarım Kalıpları (Enterprise Design Patterns)

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.