SaaS nedir ? MultiTenant yaklaşım ile SaaS a genel bir bakış
SaaS : "Service as a Service" servis gibi servis anlamı taşır. Para kazandırır yüzünüzü güldürür :)
Evet çokca kullanıyoruz outlook üzerinden mail server, Office 365, Dropbox v.s v.s bunları zaten siz de biliyorsunuz eee google ile arama yaptığınızda bir Rest servisi nasıl yazarız hangi teknolojileri kullanırız gibi soruların cevaplarını kolayca bulabiliniyor. Yani servis yazacak isek seçenek çok. Ancak bu servisler bütününü satacak duruma getirmek için bir altyapı kurmak ve bu altyapıyı kurarken muhtelif misafirleri farklı kategorilerde değerlendirerek servis sağlamak ayrı incelenesi bir konu.
Yazımızda önce yapımızı nasıl kuracağımıza karar vereceğiz bir yandan da bu müşteri bazlı dataları nasıl tutacağız sorusuna cevap vermeye çalışacağız.
Şimdi dört soruda bir SaaS projesinin bileşenlerini değerlendirelim;
Soru 1: Bileşen hangi networkten nasıl servis edilecek ?
Bu soru genel olarak şöyle bir anlam taşıyor. Müşterilerinizden aldığınız bir isteği ilettiğiniz bileşen ya da içerdeki bileşenleriniz birbirleriyle konuşurken alıcı bileşenin nasıl bir network içerisinde olacağı sorusuna cevap arıyoruz. Kabaca üç farklı şekilde sınıflandırabiliriz.
Shared : Tüm müşterilerden gelen istekleri aynı bileşen yapısına gönderiyoruz.
Bu yaklaşımda herhangi bir sürpriz yok. Resource kullanımı açısından muazzam tüm müşterilerimiz aynı kaynakları kullandığı için en uygun Scability sağlanıyor. Yani alttaki yapımızı genişletmemiz mümkün. E peki data ? İşte orada işler karışıyor. Bu konuya son olarak ayrı bir başlık altında bakalım.
Farm : Müşterileri gruplayarak istekleri belirli farm lara yönlendiriyoruz. Güzel... böylece sadece belirli gruplara hizmet eden bir bileşenler yapısı kurguladık. Evet resource tarafında kısmen kaybımız olacak ve maalesef data ise sadece grup bazında izole edilmiş duruma gelecek ancak bu tam istediğimiz durum değil tabi.
Exclusive : Her müşteri için komple bir altyapı veriyoruz. Kaynak harcaması üst seviyede ve data da tam bir izolasyon. Bununla beraber upgrade süreçlerinde müşteri bazlı sıfır etki gibi artıları var.
Bu üç network yaklaşımını bir adsl satış stratejisiyle de görmek mümkün. Standart bir hızı taahütsüz bir şekilde aldınız. Bu durumu shared network e benzetebilirsiniz. Hız taahütü alınmasıyla belirli sayıda abone bulunduran hatları da farmlara benzetebilirsiniz. Kurumsal için direk internet hatları da satılıyor. Exlusive yaklaşımı da buna yakın.
Soru 2: Bileşen müşteriden haberdar olmalı mı ?
Bu soru kurduğunuz network altyapısı ile doğru orantılı. Shared veya farm altyapısında çalışan bir bileşen için gelen servis isteği için tenant bilgisi alınmalı. Exclusive ise sadece o tenant'a hizmet vereceğinden gerekmeyecektir.
http://uygulamaismi/servis?tenant=1
yada post ile
http://uygulamaismi/servis
{
...data,
"tenant":"1"
}
Soru 3: Bileşen müşteri için objeleri saklamalı mı ve özelleştirmeli mi ?
Bu tamamen uygulamanıza özel bir durum. Bir bileşenin eğer sadece request oluşturmasını istiyorsanız ya da tamemen müşteri bağımsız bazı işleri yapıyorsa Stateful dediğimiz objeleri tutmak zorunda değil.
Tabi burada bu objeleri nasıl tutacağınız yine size kalmış ancak memory de tutma durumunda kaynak durumundan dolayı başta kullandığınız network tipi önem arz ediyor.
Soru 4: Bileşen ölçeklendirilmesi nasıl yapılacak ?
Soru 1 de genel olarak tüm bileşenler üzerinden bir ölçeklendirme mantığı konuşmuştuk. Ancak her bileşen için bir gereklilik bulunmuyor. Kısmen az çağrılan bileşenler için aktif-pasif ya da aktif-aktif yaklaşımlar yeterli olurken N+1 şeklinde belirli kurallar ile artırılıp azaltılan bileşen örnekleri üzerinden de yönetilme imkanı bulunuyor.
Veritabanı yaklaşımı :
Bir kolon ismi olarak tenant datasının kaydedilmesi
Evet aşağıdaki datalarımızı tenant id bazlı ekleyerek bir tabloda tutabiliriz. Izolasyonun bulunmadığı bu durumda riskler ve sonrasındaki data yönetim işleri oldukça fazla.
Her tenant datasının ayrı tablolara kaydedilmesi.
Bu durumda kaydı yapan bileşenin ayrı schemalar üzerinden veritabanına kayıt yapması beklenir.
Umarım faydalı olmuştur. Kolaylıklar.




Yorumlar
Yorum Gönder