Çok Kiracılı Bir Uygulama İçin Kiralama Modelleri
"Çok kiracılılık" kavramına daha derinlemesine bakarak, bu konuda nasıl bir algıya sahip olduğumuzu paylaşıyoruz.
Özellikle bir Hizmet Olarak Yazılım (SaaS) uygulaması geliştirirken, çok kiracılı uygulama yaratmanın öneminden sıkça bahsediyoruz.
"Çok kiracılı uygulama" kavramı ve bir tane geliştirmek için kullanılan çeşitli modeller hakkında biraz kafa karışıklığı var. Bu makalede, bu terimlere daha pratik bir şekilde yakından baktık.
Teknik açıdan farklı kiralama modellerini anlamak
Tek Kiracılı Mimari
Tek kiracılı mimari, her müşteri veya kiracının bir uygulama veya hizmetin kendilerine ait bir örneğine sahip olduğu bir yazılım veya bulut bilişim modelidir. B2B iş modelinin kökenine baktığımızda, yazılımın her örneğinin yalnızca bir müşteri veya kuruma hizmet etmesiyle başladığını görüyoruz.
Özellikler
- İzolasyon: Her müşteri veya kiracı, kendilerine ayrılmış kaynaklar, veritabanları ve yapılandırmalar ile izole bir ortamda çalışır.
- Özelleştirme: Tek kiracılı mimariler genellikle belirli müşteri ihtiyaçlarını karşılamak için daha fazla özelleştirme ve esneklik sağlar.
- Güvenlik: Müşteri verileri diğer kiracılarla karışmadığından, artırılmış güvenlik ve veri gizliliği.
- Ölçeklenebilirlik: Her kiracının örneği bağımsız olarak ayarlanabildiğinden, kaynakları ve kapasiteyi ölçeklendirmek daha kolay olabilir.
- Bakım: Bir kiracının ortamına yapılan değişiklikler diğerlerini etkilemediğinden, bağımsız bakım ve güncellemeler.
- Maliyet: Her kiracı için ayrı örneklerin bakımını gerektirdiğinden, tipik olarak daha yüksek altyapı ve operasyonel maliyetler.
Örnekler
- Özel hosting: Geleneksel web hosting sağlayıcıları, her müşterinin kendi kaynaklarını, veritabanlarını veya yapılandırmalarını aldığı, tek kiracılı mimariler sunar.
- Yerinde yazılım: Müşteri ilişkileri yönetimi (CRM) veya insan kaynakları yönetim sistemleri (HRMS) gibi bazı kurumsal seviye yazılım uygulamaları, sıkı veri güvenliği ve özelleştirme gereksinimlerine sahip kuruluşlar için tek kiracı dağıtım seçenekleri sunar.
- SaaS ile premium katmanlar: Bazı Hizmet Olarak Yazılım (SaaS) tekliflerinde, premium veya kurumsal katmanlar, artırılmış güvenlik, uyumluluk veya özelleştirme gerektiren müşteriler için tek kiracı seçenekleri sunar.
Tek kiracılı mimari, uyumluluğun önem arz ettiği veya özelleştirilmiş güvenlik gereksinimleri olan durumlarda yaygın olarak kullanılır. Örneğin, finans, sağlık ve hükümet gibi sıkı düzenleyici gereksinimlere sahip endüstriler, uyumluluğu sağlamak için genellikle tek kiracılı çözümleri tercih eder.
Ancak, tek kiracılı mimarilerin, çok kiracılı mimarilere kıyasla daha fazla kaynak gerektirdiğini ve yönetiminin daha karmaşık olabileceğini belirtmek önemlidir, çünkü her müşterinin örneği kendi altyapısı ve bakımı gerektirir. Sonuç olarak, özelleştirme ve izolasyonun kritik olduğu veya daha az ama daha büyük müşterilere sahip uygulamalar için daha uygun olabilirler.
Çok Kiracılı Mimari
Yazılım çok kiracılığı, bir yazılımın örneğinin bir sunucuda çalıştığı ve birden fazla kiracıya hizmet verdiği bir yazılım mimarisi türüdür. Bu şekilde tasarlanmış sistemler "paylaşımlı" ("özel" veya "izole" yerine) olarak adlandırılır. Kiracı, belirli açılımlarla yazılım örneğine ortak erişim sağlayan bir kullanıcı grubudur. Çok kiracılı bir mimari ile bir yazılım uygulaması, kiracıya özel veri, yapılandırma, kullanıcı yönetimi, kiracıya özel işlevsellik ve işlevsel olmayan özellikler dahil olmak üzere her kiracıya özel bir pay sağlamayı amaçlar. -- Vikipedi
Özellikler
- Paylaşılan kaynaklar: Kaynak kullanımını optimize etmek için birden fazla kiracı aynı altyapıyı, sunucuları, veritabanlarını ve ağ kaynaklarını paylaşır.
- İzolasyon: Kiracıların verileri ve yapılandırmaları mantıksal olarak ayrılmıştır, veri gizliliği ve güvenliği sağlanır.
- Maliyet avantajları: Çok kiracılılık maliyeti etkin olabilir, çünkü genel giderler birden fazla kullanıcı arasında dağıtılır, operasyonel ve altyapı maliyetlerini azaltır.
- Ölçeklenebilirlik: Mimari, büyüyen kiracı ve kullanıcı sayısını karşılamak için yatay veya dikey olarak ölçeklenebilir.
- Bakım: Güncellemeler ve bakım tüm kiracılar için aynı şekilde uygulanarak yönetimi kolaylaştırır.
- Özelleştirme: Bazı özelleştirmeler mümkün olsa da, sistem genelinde tutarlılığı korumak için genellikle tek kiracılı mimarilere kıyasla daha sınırlıdır.
Örnekler
- Bulut tabanlı SaaS: Google Workspace ve Salesforce gibi çoğu Hizmet Olarak Yazılım (SaaS) uygulaması, birden fazla kuruma veya kullanıcıya paylaşımlı bir platformda hizmet vermek için çok kiracılığı kullanır.
- Paylaşımlı hosting: Web hostingde, paylaşımlı hosting hizmetleri, farklı müşteri veya kuruluşlara ait web sitelerini aynı sunucuda barındırır.
- Halka açık bulut hizmetleri: AWS ve Azure gibi halka açık bulut sağlayıcıları, çeşitli müşterilere paylaşımlı veri merkezleri içinde izole edilmiş sanallaştırılmış kaynaklar sunarak hizmet verir.
- Kurumsal ölçekli altyapı çözümleri: Örneğin, bir organizasyon içindeki birden fazla iş biriminin kullandığı paylaşımlı bir Kubernetes kümesi.
Gerçek dünyada çok kiracılı uygulamaları yeniden tanımlamak
Mimari bir perspektiften tanımlar verdik, bu da çok kiracılı ve tek kiracılı tasarımları ayırt etmeyi kolaylaştırır. Ancak, bu daha çok teknik tanıma yönelir. Kiralama modellerini tasarlarken bu tanımları gerçek dünya geliştirme ortamımızda kullanırsak, bu düşünce şekli, çok kiracılı bir uygulamanın tamamen paylaşımlı, çok kiracılı bir altyapıya sahip olması gerektiğini varsayar.
Ancak, iş ve ürün çok çeşitlidir ve durum bazında birçok gereksinime sahiptir, bu yüzden her duruma uyan tek bir çözüm yoktur.
Bir kiracının paylaşımlı bir altyapıdan kaynakları kullandığı ancak belirli iş ihtiyaçları nedeniyle sistemin bir veya iki bölümünün yalnızca onlara özel ayrılması gerektiği bir senaryo düşünün. Bu özel ayrılmış bölümler, veritabanı, örnekler veya diğer bileşenlerin kombinasyonu olabilir ve tüm altyapıyı paylaşırken. Bu, karma kiracılı mimarinin devreye girdiği yerdir.
Pratik SaaS ürün geliştirmesinde, bir ürünün ağırlıklı olarak genel bir çok kiracılı modelle tasarlandığı bir senaryo ile karşılaşmak yaygındır. Ancak, mimarinin veya kaynakların belirli yönleri, "tek kiracılı" bir yaklaşıma yönelebilir.
AWS, bu kavramı iletmek için aşağıdaki durumu örnek olarak kullandı: çok kiracılık geniş bir kavramdır ve paylaşılan kaynaklar ve veri izolasyonunu tanımlamak için doğru stratejiyi birleştirip, seçmek durum bazıdır.
Diğer bir deyişle, bazen insanlar bu modele hala "Çok kiracılılık" derler, bu nedenle çok kiracılılığın daha geniş tanımında, bir çözümdeki her bileşenin paylaşıldığını ima etmez. Daha ziyade, bir çözümün bazı bileşenlerinin birden fazla kiracı arasında yeniden kullanıldığını ima eder.
Bu terimi geniş bir şekilde anlamak, müşterinizin ihtiyaçlarını ve nereden geldiklerini daha iyi anlamanıza yardımcı olabilir.
Tek bir mimari modelde ısrar etmek yerine, çok kiracılık, bir SaaS ürününün gerçek dünya mimarisinin pratikliğini yansıtır. Çok kiracılı bir uygulamadan bahsettiğimizde, uygulamanın tek bir mimari modele bağlı olması gerekmez; çeşitli kiralama stratejileri kullanabilir ve en azından bazı bileşenlerinin paylaşıldığını gösterebilir.
Kiralama model stratejinizi belirlemek için kilit noktalar
Burada soru geliyor, ürünüm için kiralama stratejisini nasıl öneririm? İşte düşünmeniz gereken bazı önemli sorular:
- İş hedefleriniz nelerdir?
- Tek kiracılı bir çözüm, gelecekteki büyüme planlarınızı destekleyebilir mi?
- Operasyon ekibiniz ne kadar büyük ve altyapı yönetiminiz ne kadar otomatik hale getirilebilir? Çeviklik ve maliyet etkinliğine önem veriyor musunuz?
- Müşterileriniz çeşitli çok kiracılı seçeneklerle rahat mı?
- Her seçeneğin uyumluluğu, hem sizin hem de müşterilerinizinki nasıl etkilediği nasıl olur?
- Hizmet düzeyi anlaşmalarını (SLA'lar) karşılamanız bekleniyor mu veya belirli hizmet düzeyi hedeflerine (SLO'lar) ulaşmayı mı amaçlıyorsunuz?
- Güvenlik, maliyet, performans, güvenilirlik ve bireysel kiracı ihtiyaçlarına yanıt verilmesi açısından bir bütün olarak düşündünüz mü?
Ürününüzde yalnızca tamamen çok kiracılı veya yalnızca tek kiracılı bir model seçmeniz gereken katı bir bölünme olmadığını unutmayın. Kararınız, ürününüzün mimari bileşenlerini nasıl böldüğünüze ve müşterilerinizin veya işinizin ihtiyaç duyduğu belirli izolasyon seviyelerine dayanmalıdır. Daha sonra farklı yaklaşımları buna göre uygulayabilirsiniz.
Sıradaki
"Yeni" çok kiracılı uygulama tanımından bahsettik, ancak kiracı izolasyonu, kimlikler ve kimliklerinizin izole edilip edilmemesi gerektiği nasıl belirlenir? "Kimliklerin izole edilmesi" ne anlama gelir?
Gerçek dünya kullanıcısının iki farklı kimliğe sahip olduğu durumlardayken bu karışıklık genellikle ortaya çıkar. Bu durumu - "izole kimlikler" olarak mı nitelendirmek doğrudur?
Bu soruları yaklaşan makale serimizde ele alacağız. Takipte kalın!