Serverless Altyapı ile Multi-tenant SaaS Platformlar
Serverless
Çok katmanlı bir Yazılım-as-a-Service (SaaS) platformu, geleneksel sunucuları yönetme yükü olmadan karmaşık bir girişimdir.Sistemin veya kurulmuş bir ekip mevcut bir uygulamanızı modernize etmek, sunucusuz bileşenleri ile nasıl bir araya gelmenin, uzun vadeli başarı için önemli olduğunu anlamak.
Bu makale, sunucusuz altyapıdaki çoklu-tancı SaaS platformlarını inşa etmek için kapsamlı, üretim odaklı bir kılavuz sunar.Ana kavramları inceleyeceğiz, her anahtar bileşen için uygulama ayrıntılarına ayırıp, ticari-offları tartışmalısınız, sağlam, güvenli ve maliyet-malzemeli bir çözüm.
Serverless Altyapı Nedir?
Serverless altyapı, bulut sağlayıcının dinamik olarak sunucu atamayı ve sunucuların tedarikini yöneteceği bir bulut-komputing execution modelidir. Uygulama kodu, sağlayıcı tarafından yapılan stateless hesaplar konteynerlerinde çalışır ve tamamen yönetilebilir.
Bir sunucusuz mimaride, artık düzenleme, ya da ölçek sunucu örnekleri yoktur. Bunun yerine, uygulamanızı tetiklemelisiniz (örneğin, HTTP istekleri, veritabanı değişiklikleri, dosya yüklemeleri). Sağlayıcı otomatik olarak hesaplama kaynakları ölçeklendirir - genellikle sıfıra kadar - taleplere dayanarak. sadece milisaniyelerde veya alt-saniyelerdeki değişiklikleri veya alt-saniyelerdeki değişiklikleri ölçdüğünüz olayları tanımlayın.
Hesap ötesinde, sunucusuz ekosistem API'ler için yönetilen hizmetleri içerir (API Gateway), veritabanı (Amazon Aurora Serverless, DynamoDB, Firebase Firestore), doğrulama (Amazon Cognito, Firebase Auth), ve mesajlaşma (SQS, SNS, EventBridge). Bu hizmetler neredeyse tüm altyapı yönetimi dengelemeyi ortadan kaldırmak için tamamen yönetilen bir geri dönüş oluşturur.
Neden Serverless Multi-Tenant SaaS için Doğal Bir Fit
Multi-tenant SaaS platformları tek bir uygulama örneğinden birçok müşteriye hizmet eder.Her bir kiracının verileri izole edilmelidir ve platform, onant mimarilerin bu gereksinimleri birkaç şekilde ele alması gerekir:
- [FONT=0)Automatic Elasticity:[Dönetici:[Dönetici:0)[Dönetici:0)Otomatik Dönüşümlü Boyut:[Dönetici:[Döneticiler)[Döneticileri insan müdahalesi olmadan yatay olarak ölçeklenir.Bir kiracının kullanım aksakları, altyapı diğer kiracıları etkilemeden anında genişletir.
- [FONT=0)Pay-Per-Use Fiyat:[Dönetici:[Dönetici:0)Pay-Per-Use Fiyatlandırma:[[Dönetici:0)[Dönetici: 0,0))))))))) Bu uyum, doğrudan değere mal olur, para kazanmak için ekonomik olarak mümkün kılar.
- [FONT:0)Redüktörlük:[Dönetici:[Dönetici:0]Redüktör: [Dönetici:0]Redüktör Operasyonel Kompleksi:[Dönetici:[Dönetici: 0FLT:1). Serverless, sunucuyu yarılama, kapasite planlama ve yüksek-availability configuration. ekibiniz iş mantığına, onboarding yerine, ve veri izolasyonuna odaklanır.
- [FONT:0) Çok katmanlı Multi-Tenancy Desenleri: Amazon Cognito ve Firebase Authentication gibi yönetilen hizmetler çok katmanlı kullanıcı havuzları için yerleşik destek sunar. Serverless veritabanılar onant izolasyonu sıra dışı güvenlik veya şema-per-tenant stratejileri özel orta dikkatsiz uygulama yoluyla uygulanabilir.
- [FONT:0) Market'e Zaman:[Dönetici:[Dönetici: 0) Çünkü sunucusuz, altyapıyı sağlama ve yapılandırma ihtiyacını azaltır, gelişim ekipleri hızla ve gemi özelliklerini daha hızlı bir şekilde yapabilirler - rekabetçi SaaS piyasalarında kritik bir avantaj.
Multi-Tenant SaaS Mimarinizi Tasarlamak
İyi bir şekilde seçilmiş bir çok katmanlı SaaS platformu sunucusuz veri izolasyonu, kimlik doğrulama, yönlendirme ve faturalandırmayı ele almalıdır. Aşağıdaki alt bölümler her tasarım boyutunu kırıyor.
Tenant Data Isolation Strategies
Veri izolasyonu, çok katmanlı bir sistemdeki en önemli mimari karardır. Üç ortak desen vardır, her biri farklı ticaretle:
- [FONT=0]Shared Database, Shared Schema (Onant ID sütunu ile): [Döneticileri aynı veritabanı tablolarını paylaşıyorlar.Her bir satır, onant tanımlayıcı tanımlayıcı tanımlayıcı tanımlayıcı (örneğin,00 $) içerir.Bu, en pahalı-toaktif bir yaklaşımdır, ancak üst düzey güvenlik birimleriyle ilgili titiz uygulama gerektirir.
- [FONT:0]Shared Database, ayrı Schemas: Her bir kiracı kendi şemasını tek bir veritabanı içinde alır. Bu, veritabanı yönetimi düşük tutmakta iken daha iyi mantıksal izolasyon sağlar. Amazon Aurora Serverless, şema-per-tenant destekler ve bağımsız ölçeklendirme sağlar.
- [FONT:0]Database Per Tenant:[Dönetici: 0,4|Dönetici:0)Database Per Tenant:[Dönetici:0)[Dönetici:0)[Dönetici: En güçlü izolasyonu sunar - birçok kiracının düşük kullanımları varsa maliyet daha yüksek olabilir.
Seçiminiz, kiracılarınızın güvenlik gereksinimlerine, bütçeye ve operasyonel olgunluğa bağlıdır. Birçok startups paylaşılan atabase yaklaşımıyla başlar ve büyümeleri olarak per-tenant veritabanlarına göç eder.
Kimlik ve Yetki
Kullanıcı ve onant ile bağlantı kurmalı bir sistemdeki kullanıcı kimlik doğrulaması, Amazon Cognito veya Auth0 gibi merkezileştirilmiş bir kimlik sağlayıcı kullanır. Cognito ile, kullanıcı veya gruplarının onants ile ilişkilendirebilmeleri gerekir. JWTs (JSON Web Hediyeleri) tarafından yayınlanan bir özel iddiayı IdP olarak belirtilmiş ve veri politikalarına sahip olmak için doğrulanabilir.
İzin için, JWT'den gelen onant kimlike dayalı olarak veri erişimi kontrol (RBAC) yerine, uygulama kodunızda bir otobüs varsa, 10.A.'dan gelen bir kullanıcının Tenant A erişim verilerinin onant B'ye ait olmadığının tespit edilmesi için özel bir orta dikkat edin.
Tenant Routing ve Onboarding
Bir istek geldiğinde, platform hangi onant'ın ait olduğunu tanımlamalıdır. Common yaklaşımlar şunları içerir:
- [FONT:0)Subdomain-based routing:[Dönetici: 1 ) Her bir kiracının eşsiz bir alt alanı vardır (örneğin, 03.03.2012). API Gateway veya yük bakiyesi kontrolleri uygun onant özel mantıka yol açan üst düzeye kadar.
- [FONT=0)Path-based routing: Tenant tanımlayıcı tanımlayıcı URL yolundan (örneğin, 03.03.2012) bir parçasıdır.
- [FONT:0)Header/cookie-based routing:[[Dönetici: 1) 10. şahıs veya JWT iddiasında sıklıkla bir araya getirilir.
Onboarding sırasında, kaynakları dinamik olarak sağlamanız gerekir. Bir sunucusuz işlev, örneğin yeni Aurora Serverless veritabanı oluşturmak veya yeni kiracının yapılandırması ile DynamoDB masasını güncellemeniz gerekir.
SaaS için Serverless Bileşenleri Uygulama
Şimdi, kullanacağınız anahtar sunucusuz bileşenleri inceleyelim ve onları çok fazla bebek için nasıl yapılandırabilirsiniz.
API Gateway: The Front Door
Amazon API Gateway (veya Azure API Yönetimi) tüm müşteri talepleri için giriş noktası olarak hareket eder. Kimlik doğrulama, throttling ve talep aşağılama Lambda işlevleri için.For multi-tenancy, configure API Gateway to:
- Geri dönüş fonksiyonunu teşvik etmeden önce JWT'leri onaylayın ve onant bağlamı çıkarın.
- Kullanım planlarını veya API anahtarlarını onant başına limitleri uygulamak için kullanın (örneğin, ücretsiz tier kiracı 1000 istek / gün alır, ücretli kiracılar 100.000 alır).
- Map custom domain isimleri (örneğin, 03.03.2012) ve onları bölgesel uç noktaları veya kenar uç noktaları ile küresel geçkis azaltımı için ilişkilendirdi.
AWS Lambda: The Compute Heart
Lambda işlevleri işinizi mantığınızı uygular. Çok katmanlı bir sistemde, her bir çalışma, onant ID, kullanıcı kimliği ve diğer ilgili iddialar içeren bir bağlam nesne alır.
- [FONT:0) Servis başına tek bir Lambda işlevi kullanın: Her bir kiracı için ayrı işlevleri yaratmadan kaçının. yerine, onant ID'yi etkinlik ücretinin bir parçası olarak geç.
- [FONT=0]Manage Cold başlar: [Dönetici:0]Sonsuz kiracılara karşı kontrüderasyon kullanın veya başlangıç süresini azaltmak için tek bir dağıtım paketine fonksiyonları birleştirin.
- [FONT:0]Implement onant-aware log:) Her log açıklamasında onant kimlik ve kullanıcı kimlik içerir. AWS CloudWatch Logs Insights ile 10ants arasında silme için yapısal oturum açın.
- [FONT:0)Error kullanımı:[Dönetici:[Dönetici:0) Hiçbir zaman onant-crossing hataları sızdırmayın. Tüm istisnaları yakalayın ve genel hata mesajlarını kullanıcılara tam ayrıntıları içerek döndürürken geri dönün.
Veritabanı Hizmetleri: Tenant Data
Veritabanı seçiminiz doğrudan izolasyonu, performansı ve maliyeti etkiler. İki sunucusuz veritabanı seçenekleri öne çıkıyor:
- [FONT=0)Amazon DynamoDB: [Dönetici: 0,8|Dönemli ve belge veritabanı.Çok değerli bir özellik için, bölme anahtarı tarafından kısıtlanan bir kompozit birincil anahtar kullanın - 10.D. Use DynamoDB Hızlandırma (DA) to reduce latency for read-heavy iş yükleri için.
- [[Dönetici:0)Amazon Aurora Serverless:[Dönetici:[Dönetici: 1 ) Otomatik olarak kullanılan bir ilişki veritabanı.Sistemsiz işlevlerin bağlantı yönetimini kolaylaştıran 10ants için uygun.Data API'yi kullanarak sunucusuz işlevlerin üzerinden basitleştirilmesi.
Hangi veritabanı seçerseniz seçin, on düzey üst düzey bir throttling to prevent a gürültülü onant from ezici paylaşılan kaynaklardan.Use DynamoDB'sDANFLT:10} per table or apply Amazon RDS Proxy for connection pooling in relationshipal databases.
Kimlik ve Access Management
Amazon Cognito Kullanıcı Havuzları, kullanıcı kayıtlarını, girişini ve MFA'yı çok katmanlı uygulamalar için yönetmek için basit hale getiriyor:
- [FONT:0)Müşteriler:[[Döneticiler:[Döneticiler:[Döneticiler:[Döneticiler:[Dönemli)) Bir kullanıcı işaretlerini toplarken, onları bir Lambda tetikleyicisi ile onant'a alayın (Örnek veya Posta onayına ekleyin).
- [FONT:0) Gruplar:[Döneticiler, üye, görüşer) 10. Bölümde 10. Bölümde kullanıcı olarak 10.
- [FONT:0]Identity havuzları:[Dönetici:[Dönetici: 0,0) veya diğer kaynaklara erişmek için geçici AWS kimliklerini vermek, Cognito Identity Pools'u kullanarak kullanıcı düzeyinde izinleri uygulamak için 10.
Firebase Authentication, onant-specific projelerle benzer yetenekler sunuyor.For corporate SaaS, consider Auth0'sULLFLT:0) yerleşik çok-tananlı destek).
Queueing ve Event-Driven Desenleri
Serverless SaaS platformları genellikle bir senkronizasyona ihtiyaç duyar - örneğin, e-posta gönderme, işleme raporları gönderme veya onant düzenleme. Amazon SQS (Simple Queue Service) veya SNS to de çift bileşenleri için. Her mesaj, işlem kuyruğunun verileri üzerinde hareket etmeden önce onant izinleri doğrulaması gerekir.
Meydanlar ve Mitigation Strategies
Serversız multi-tenant mimariler, çöküntü olmadan değildir.Onlara proaktif olarak üretim hazırlığı için gereklidir.
Soğuk Başlangıç Latency
Lambda işlevi yakın zamanda gerçekleşmediğinde, bir sonraki çağrı gecikmeyi yaşayabilir ( soğuk başlangıç). Bu, düşük gecikme gerektiren onant-oku API'leri için sorunlu olabilir. Mitigations şunları içerir:
- Kritik işlevlerin geçici olarak kabul edilebilirliğini kullanın.
- Runtime (Python/Node.js Java/C#)'den daha hızlı başlıyor.
- Küçük işlevleri tutun ve bağımlılık yüklemesini azaltın.
- Yeniden kullanım için tek bir işlev dağıtımında birden fazla eller birleştirin.
Satışcı Lock-InIn
DynamoDB, Cognito ve Lambda belirli bir bulut sağlayıcına sizi bağlar. kilitleme riskini azaltmak:
- Özet Buluta özgü API'ler kodunuzda arayüz veya cephe tabakalarının arkasında.
- API tanımları ve OpenID Connect için açık standartlar kullanın.
- Alan mantığınızı altyapıdan bağımsız olarak tasarlayın.ŞUygun-aktif desen) ortak mesaj formatları (Cloud Events) ile kullanın.
Debugging ve Observability
Serverless fonksiyonlar ephemeral, geleneksel debugging aletleri etkisiz hale getirmektir: Invest in:
- AWS X-Ray veya OpenTelemetri ile Dağıtıldı.
- Tenant- seviyeli hata oranları, geçncy ve istek sayları için özel ölçümlerle giriş yapın.
- 10. seviye eşleri üzerinde uyarılar (örneğin, 10x normal kullanımdan 10x'i aşan bir kiracı).
Throttling ve kötüye kullanım
Bir kiracı, DynamoDB global endekslerini onant bölüm anahtarları ile kullanarak potansiyel olarak tüketebilir ve yaz kapasite sınırlarına göre uygun olarak kullanım kotalarını da uygulamalıdır.In database access, implement onant-specific kapasite limitleri using DynamoDB global indexler with onant partition keys and read/write kapasite limitleri. Lambda functions also use kotaları using use costs operations.
Üretim için en iyi uygulamalar -Grade Serverless SaaS
- [FONT:0) Kod olarak Altyapıyı kullanın (IaC): ), Tüm sunucusuz kaynakları (Lambda, API Gateway, DynamoDB tabloları) AWS CDK, Terraform veya Serverless Framework kullanarak.
- [FONTNT:0]Implement Tenant Onboarding Otomasyon:) Yeni kiracılar için bir adım işlevi veya etkinlik odaklı boru hattı kullanarak yeni kiracılar için geçici kaynaklar. Örneğin, onant sign-up, onant veritabanı şemasını oluşturan bir Lambda, populates varsayılan verileri oluşturur ve hoş geldiniz.
- [FONT:0)Separate Tenant-Specific Construct:[Dönetici:0) Mağaza onant metadata (isim, plan türü, özel bayraklar) onant bir kayıtta - onant ID. Functions tarafından indekslenen basit bir DynamoDB tablo.
- [FONT:0) Göç için Plan: [Dönetici Modeli ile başlayın (Onant ID ile masaya girin) ve daha sonra katı izolasyona yeniden faktör. Sıfır-downtime şema değişiklikleri (Uzgun gibi araçlar) 10 hizmetten kaçınmak için veritabanı geçiş stratejileri kullanın.
- [FONT=0) 10. tarafından Maliyetleri: AWS Cost Explorer'ı özel etiketlerle (örneğin, [[ENFLT:12) hesaplayabilme, depolama ve ağ maliyetleri her bir kiracıya taşımanızı sağlar.
- [FONT:0]Set Up Disaster Recovery:[Dönder:[Dönetici:0)[Dönetici:0)Set Up Disaster Recovery:[Dönetici:[Dönetici:[Dönetici: 1) Serverless hizmetler genellikle bölge dışı iş yükleri içinde yüksek kullanılabilirlik sunar.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Sunucusuz altyapıdaki çok katmanlı bir SaaS platformu inşa etmek, otomatik ölçeklendirme, maliyet verimliliği ve operasyonel yük sağlayan pragmatik bir seçimdir.Veri izolasyon stratejinizi dikkatlice tasarlayarak, API Gateway, Lambda ve sunucusuz veritabanı gibi onant-aware doğrulamayı uygulayın, tek bir kodbaseden yüzlerce veya binlerce kiracıya hizmet eden bir üretim-okuyucu platformu oluşturabilirsiniz.
Herhangi bir mimari ile olduğu gibi, anahtar kasıtlı ticaret yapmaktır. Basit kiracı izolasyonla başlayın, bir gün gözlemlenebilirlik ve IaC'ye yatırım yapmak ve yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaş yavaşlama, kullanım tabanlı faturalama, ve çok-bölge dağıtımları gibi özellikleri ekleyin. Doğru temelle, sunucusuz, bulutun altyapısını ele alırken, onantlara değer vermeye odaklanmanızı sağlar.
Daha fazla okuma için, [[DÜŞÜNÜ:0)AWS SaaS Fabrikası[DÜT:1) kaynakları ve [[ŞUYGÜN:2)AWS Well-Architected SaaS[[DÜDÜDÜye Olmayanlar İçin[DÜye Olmayanlar İçin 3 ).