"매 multi-tenant, subscription-based, browser-delivered software — 매 install 의 X, 매 always-latest". 매 1999 Salesforce ("End of Software") 로 출발 → 매 2010s SaaS 1.0 (horizontal CRM/HR) → 매 2020s vertical SaaS (Toast, Procore, Veeva) → 매 2026 AI-native SaaS (Glean, Harvey, Cursor) 가 매 outcome-based pricing 으로 매 seat-based 모델 을 흔드는 시기.
매 핵심
매 Pillars
Multi-tenancy: tenant-isolated data on shared infra (RLS, schema-per-tenant, DB-per-tenant).
// Charge only when AI agent successfully resolved
asyncfunctionrecordResolution(tenantId: string,ticketId: string,resolved: boolean){if(resolved){awaitstripe.billing.meterEvents.create({event_name:'resolved_ticket',payload:{stripe_customer_id: tenantId,value:'1'},})}}
Tenant-isolated S3 (per-prefix IAM)
# Generate scoped STS token per tenant requeststs=boto3.client("sts")policy={"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:GetObject","s3:PutObject"],"Resource":[f"arn:aws:s3:::tenants-bucket/{tenant_id}/*"],}]}creds=sts.assume_role(RoleArn=ROLE,RoleSessionName=f"tenant-{tenant_id}",Policy=json.dumps(policy),DurationSeconds=900,)
언제: in-product copilot, customer support deflection, churn prediction from usage signals, content/email generation, dynamic onboarding.
언제 X: pricing/billing computation — must be deterministic for audit and revenue recognition.
❌ 안티패턴
No tenant isolation: WHERE tenant_id checked only in app layer → IDOR breach.
Per-seat pricing for AI: high-usage user breaks margin; need usage cap or tier.
Free tier without limits: abuse → infra cost spirals.
Single-region SaaS for global: latency + data residency violations (GDPR).