Bölüm 2: SaaS Soğana Benzer ve Birçok Katmanı Vardır

Bora Ünal
Türkçe Yayın
Published in
3 min readApr 24, 2019
Ogres are like Onions — Shrek

Birinci bölümde aaS kavramından bahsetmiştim, okumadıysanız buradan ulaşabilirsiniz.

Bir yazılımı servis olarak sunmak, kolay kazanç için hızlı bir yol olarak gözükse de, hiçbir şey göründüğü gibi değildir.

Birden fazla müşteriye benzer özelliklerde ortak bir altyapı ile hizmet vermenin ilk bakışta görünmeyen birçok kısıtı ve zor tarafları bulunur.

Deneyimlerimizi paylaştığım Ganipara, e-ticaret alanında hizmet veren bir SaaS uygulamasıdır. E-ticaretin, ülkemize özgü ticaret çeşitliliği nedeniyle karmaşık bir operasyon olduğunu hatırlatarak, ilk sürümünden bugüne kadar öngörmediğimiz birçok zorluk yaşadığımızı, basit görünen özelliklerin aslında birer sorunlar yumağına evrildiğini deneyimledik ve epey dersler çıkardık.

Katman

Uygulama fikrini hayata geçirmeden önce öngöremediğimiz ve çalışırken karşımıza çıkan tekrar eden zorlukları bir kavramla tanımlamanın yararını zaman içinde öğrendik, zorlukları isimlendirdik. Belki dünyada zaten tanımlı olan bazı kavramları biz de tekrar isimlendirmiş olabiliriz, çok önemli değil, önemli olan deneyimler ve deneyimleri paylaşmak.

Bu kavramlardan birisi uygulamanın katman (*) sayısıydı.

Katmanlar, projenizin farklı kullanıcılarının, ayrı bir uygulama olarak kullandığı yüzleridir (**). Her bir katman birbirinden tamamen farklı bir uygulama mantığına sahiptir ve genellikle farklı kullanıcılara hitap eder.

Biz, projelerimizi değerlendirirken, doğrudan son kullanıcıya hizmet verilen SaaS uygulamalarını tek katmanlı, son kullanıcının müşterilerine hizmet verdiği SaaS uygulamalarını da çift katmanlı olarak sınıflandırıyoruz.

Bir uygulamada daha fazla katman olabilir, ama bence, daha fazla katman eklendiğinde ilk iki katman bir aaS halinde ayrı bir ürün haline gelebilir ve döngü yeniden başlayabilir.

Örneğin, Ganipara çift katmanlı bir SaaS uygulamasıdır. Çünkü kullanıcıları içinde kendi e-ticaret web sitesini açmak isteyen mağaza sahibi ve onun mağazasından alışveriş yapan müşterileri vardır. Dolayısıyla SaaS’ın hem mağaza sahibine hem de son kullanıcıya bakan iki farklı katmanı bulunmaktadır.

Ya da Slack tek katmanlı bir SaaS uygulamasıdır, yararlanıcısı olan tek kullanıcı grubu bulunmaktadır ve aşağı yukarı tüm seviyedeki kullanıcılar aynı özelliklerdeki ürünü kullanmaktadırlar.

Her Katman Yeni Bir Çözüm Gerektirir

Tahmin edeceğiniz gibi, SaaS’a eklenen her katman, herhangi bir seviyedeki sorunun çözümü veya eklenen özellik için ek çözüm kümesi üretmeniz anlamına gelir.

Bir SaaS projesini planlarken özelliklerin hangi katmanlar için üretilmesi gerektiğini öngörebilmeniz size vakit kazandırır ve belki de yolun başında kararlarınızı tekrar değerlendirmenizi sağlar.

Örneğin, Ganipara’da, müşterinin mağazasında bir ürünü güncellenmesi sonrasında, önbellek güncellemesi için iki çözüm kümesi bulunur. Birinci çözüm kümesi, birinci katmandaki (mağaza yönetim paneli) görünümlere ve işlevlere uygun çözümü içerirken, ikinci çözüm kümesi ise, ikinci katmandaki (müşteri arayüzü) görünüm ve işlevlere uygun çözümü içerir. Genellikle her iki katman için uygulanan çözüm birbirinden farklıdır ve ayrı olmalıdır.

SaaS uygulamasını katman seviyesinde düşünmeden özelliklere karar vermek ve yol haritası çizmek bitmez yollarda boşuna seyahat etmeye sebep olur.

Uygulamanızın seviyelerini katman olarak sınıflandırmak, takım içi iletişimde de kelime tutarlılığına sahip olmaya yardımcı olur.

Fikir vermesi için bir örneği aşağıda bulabilirsiniz:

  • Katman 0: SaaS Çekirdeği (Örn: Ganipara)
  • Katman 1: Son Kullanıcı (Örn: Mağaza)
  • Katman 2: Kullanıcı (Örn: Mağazanın Müşterisi)

Bu şekilde bir sınıflandırma özellikler üzerinde tartışırken takım içinde herkesin aynı yerden bahsettiğinden emin olmayı da sağlar.

Elbette bu yaklaşımın kendi sorunlarımıza bir cevap bulmak isterken ortaya çıktığını tekrar hatırlatmak isterim. Eminim büyük yazılım ekiplerinde bu kavramı daha iyi tanımlayacak yaklaşımlar mevcuttur, ancak deneyimle sabit bir şeyi de eklemeden olmaz, küçük bir girişimci ekibin, önce kavramları öğrenip sonra ürün ortaya çıkarması için yeterince vakti olmaz, bu nedenle farklı kaynaklardan gelen böyle küçük deneyimlerin katkısının önemli olduğunu düşünüyorum.

  • : Katman (tier) tanımı aslında uygulama bileşenleri için de kullanılmakta olan bir kavramdır. Anlam olarak karşıladığı için katman kelimesini bu tanıma uygun gördüm.
    **: Yüz kelimesi, MVC tanımındaki View yerine değil, kullanıcıların eriştiği farklı uygulamayı tanımlamak için kullanılmıştır.

Bölüm 1 — My aaS, Your aaS, Their aaS

Eğer okuduğunuz bu yazıyı beğendiyseniz aşağıdaki kalp şeklindeki “Recommend” butonuna basarak başkalarının da okumasını sağlayabilirsiniz. Düzenli yazılarımdan haberdar olmak için “Follow” butonuna basarak takip edebilirsiniz.

Facebook | Twitter | Instagram | Slack | Kodcular | Editör | Sponsor

--

--