SaaS
Software as a Service
소프트웨어 서비스. 구독 기반. Slack, Notion, Salesforce.
Software as a Service
소프트웨어 서비스. 구독 기반. Slack, Notion, Salesforce.
SaaS(Software as a Service)는 인터넷을 통해 소프트웨어를 제공하는 클라우드 서비스 모델입니다. 사용자는 설치나 유지보수 없이 웹 브라우저만으로 애플리케이션을 사용하며, 구독 기반으로 비용을 지불합니다. IaaS, PaaS 위에 구축된 최상위 클라우드 서비스 계층입니다.
SaaS는 1999년 Salesforce가 CRM을 웹으로 제공하면서 대중화되었습니다. 현재 전 세계 SaaS 시장은 연간 2000억 달러 규모이며, 기업용 소프트웨어의 대부분이 SaaS로 전환되고 있습니다. Slack, Notion, Google Workspace, Microsoft 365, Zoom 등이 대표적입니다.
SaaS의 주요 특징은 Multi-tenancy(다중 테넌시)입니다. 여러 고객이 동일한 인프라와 코드베이스를 공유하지만, 데이터는 논리적으로 격리됩니다. 이를 통해 규모의 경제를 달성하고, 업데이트를 모든 사용자에게 즉시 배포할 수 있습니다.
SaaS 비즈니스의 핵심 지표로 MRR(월간 반복 매출), ARR(연간 반복 매출), Churn Rate(이탈율), LTV(고객 생애 가치), CAC(고객 획득 비용)가 있습니다. 성공적인 SaaS는 LTV/CAC 비율이 3 이상이고, 순매출 유지율(NRR)이 100%를 초과합니다.
# Multi-tenant SaaS 아키텍처 예시 (Django)
from django.db import models
class Tenant(models.Model):
"""테넌트 (고객사)"""
name = models.CharField(max_length=100)
subdomain = models.CharField(max_length=50, unique=True)
plan = models.CharField(max_length=20, choices=[
('free', 'Free'),
('starter', 'Starter'),
('pro', 'Professional'),
('enterprise', 'Enterprise')
])
created_at = models.DateTimeField(auto_now_add=True)
class TenantAwareModel(models.Model):
"""테넌트 종속 모델 베이스"""
tenant = models.ForeignKey(Tenant, on_delete=models.CASCADE)
class Meta:
abstract = True
class Project(TenantAwareModel):
"""프로젝트 - 테넌트별 격리"""
name = models.CharField(max_length=200)
owner = models.ForeignKey('User', on_delete=models.CASCADE)
# 미들웨어 - 요청마다 테넌트 식별
class TenantMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 서브도메인에서 테넌트 추출
# acme.myapp.com -> acme
subdomain = request.get_host().split('.')[0]
request.tenant = Tenant.objects.filter(
subdomain=subdomain
).first()
return self.get_response(request)
# 뷰에서 자동 필터링
class ProjectViewSet(viewsets.ModelViewSet):
def get_queryset(self):
# 현재 테넌트의 데이터만 조회
return Project.objects.filter(
tenant=self.request.tenant
)
"SaaS 제품이니까 Multi-tenancy 설계가 중요합니다. 초기에는 Shared Database + Row-level Security로 시작하고, 엔터프라이즈 고객이 생기면 Database per Tenant 옵션을 추가하면 됩니다. Stripe로 구독 결제하고, 플랜별 기능 제한은 Feature Flag로 관리하죠."
"현재 MRR이 $50K이고 월간 이탈율이 3%입니다. LTV/CAC 비율이 4 정도로 건강한 편이에요. 연간 결제 전환율을 높이면 Churn이 줄고 현금 흐름도 개선됩니다. NRR이 110%면 기존 고객 업그레이드만으로도 성장합니다."
"IaaS, PaaS, SaaS의 차이를 설명드리면요. IaaS는 인프라만 제공하고 나머지는 직접 관리, PaaS는 플랫폼까지 제공해서 코드만 배포, SaaS는 완성된 소프트웨어를 사용합니다. AWS EC2는 IaaS, Heroku는 PaaS, Salesforce는 SaaS입니다."
Multi-tenancy에서 쿼리에 테넌트 필터를 빼먹으면 다른 고객 데이터가 노출됩니다. ORM 레벨에서 기본 필터를 적용하고, 정기적인 보안 감사와 침투 테스트를 수행하세요.
SaaS에 비즈니스 크리티컬 데이터를 저장하면 이탈이 어렵습니다. 데이터 Export 기능이 있는지, API로 자동화할 수 있는지 확인하세요. 핵심 데이터는 백업 전략이 필요합니다.
가격 정책(Free/Starter/Pro/Enterprise), 테넌트 격리 수준, 데이터 보관/삭제 정책, GDPR/개인정보 규정 준수, SOC 2 인증을 초기에 설계하세요. SSO(Single Sign-On)와 SCIM 프로비저닝은 엔터프라이즈 필수 기능입니다.