SaaS기업의 비밀 : 왜 멀티테넌시가 중요한가
(shomik.substack.com)"Multitenancy는 SaaS의 확장성을 훌륭하게 만드는 숨겨진 기반"
- SaaS 모델의 높은 마진과 무한해 보이는 확장성은 주식시장/투자자/창업자들이 이 분야에 뛰어드는 이유
- 그것을 가능하게 하는 것은 바로 인프라, 특히 "멀티테넌시" 개념
- 오늘날 거의 모든 회사는 클라우드와 SaaS를 이용하며, 클라우드 솔루션 구현의 핵심은 바로 멀티테넌시임
- 세일즈포스 창업자인 Marc Benioff는 "멀티테넌시는 SaaS 벤더가 성공하기 위한 필수 사항" 이라고 했음
- 정확히 멀티테넌시는 무엇이고 왜 중요한가?
멀티테넌시 : 지하철 시스템 구축
- 싱글 테넌시를 먼저 이해하자
- 각 고객은 하나의 고유한 어플리케이션과 데이터베이스를 사용
- 즉 100명의 고객이 있다면, 100대의 서버와 100개의 어플리케이션과 100개의 DB가 있다는 것
- 싱글 테넌시는 대규모로 유지관리 하기 위해 많은 시간,돈,노력이 듬
- 교통 관점에서 생각해보면 출근을 위해 차를 몰거나 지하철을 탈 수 있음
- 차를 몰면 편하지만, 자동차 비용, 유류대, 주차비, 추가로 교통 체증과 공해등에 비용을 지불해야함
- 지하철을 타면 비교적 저렴하고 도로를 깨끗하게 유지하고 오존층을 덜 파괴함
- 세계 무역 센터(WTC)에 있는 5만 명의 모든 노동자가 차를 몰고 간다면 하나의 복잡한 시스템을 가지게 될 것
- 그래서 지하철과 같은 멀티테넌시가 생성되어 비용과 간접비를 줄이고 환경의 '혼돈'을 크게 줄였음
왜 지금일까 ?
- 지하철로 갈아타는 이유는? 그게 정말 좋다면 왜 지금까지 이것이 선택되지 않았을까 ?
- 그 해답은 "클라우드"에 있음. 클라우드 컴퓨팅과 SaaS 비즈니스의 인기가 폭발적으로 증가중
- 퍼블릭 시장을 보면, 예전에 셀프호스팅 제품을 공급하던 회사들이 빠르게 클라우드로 눈을 돌리고 있음
- Atlassian, Autodesk, Elastic, Microsoft 같은 회사들이 클라우드 호스팅 솔루션을 제공하여 폭발적인 매출 성장을 기록중
- Atlassian은 지난 분기에만 1만명 이상의 고객을 추가했음. 1만명의 고객을 싱글테넌시로 유지한다면 개별 엔지니어링 작업, 자원 관리, 복잡성 및 핵심 비즈니스 문제를 해결할 인재의 고갈로 회사가 어려워 질 것
- 따라서 초기 스타트업은 'Quick-and-Dirty(빠르게 간단히 만든)' 싱글 테넌시 환경에서 시작하는 것을 선택할 수는 있지만, 규모가 커지고 성장하기 시작하면 불가피하게 멀티테넌트 환경에서만 해결할 수 있는 기술적 부채에 직면하게 됨
- 클라우드 컴퓨팅 및 SaaS 비즈니스가 성장하면서, 싱글 테넌트 솔루션의 오버헤드도 커지고, 멀티테넌시에 대한 요구도 커짐
멀티테넌시의 장점
- 멀티테넌시는 SaaS 벤더들에게 많은 마법을 부여함
- 고객 기반 전반에 걸쳐 인프라를 공유하는 능력은 게임체인저임
- 멀티테넌시가 제공하는 장점은 스케일 말고도 몇 가지 비밀이 있음
판매 수익(Margins)
- 공유된 인프라를 활용하는 것은 인프라가 더 많이 사용될수록 공급업체의 수익에 직접적인 영향을 줌
- 멀티테넌트는 인력과 소프트웨어/하드웨어 비용면에서 직접(판매된 제품의 비용 측면) 및 간접(주요 인력들이 에너지를 다른곳에 집중 가능하다는 측면)에서 더 적은 리소스를 요구
- 이로인해, 총 마진이 증가하고 결국 시장에서 더 높은 밸류에이션을 받을 수 있는 잉여 현금 흐름(Free Cash Flow)이 발생
가시성(Visibility)
- 멀티테넌시의 사용은 인프라의 성능을 이해하거나 특정 고객 그룹에게 비용이 반영되는지를 아는데에 매우 유리
- 데이터는 통합 또는 고객별로 쿼리가 가능해야함
- 싱글테넌트 인프라에서는 고객 데이터가 분산되어 있기에 Cross-Customer 지표를 분석하는 것은 매우 어려움
- 그러나 멀티테넌트 인프라에서는 전체 고객 기반을 보면서 거시적 트렌드를 확인할 수 있음
- 이는 로깅, DB 단위나 어플레이션 성능 모니터링 수준에서 확인 가능하여 Cross-Functional Team에 큰 이점이 됨
멀티테넌시의 복잡성
- 모든 '마법'에는 문제가 있고, 멀티테넌시도 예외는 아님
문제1: 가용성과 시끄러운 이웃
- 이커머스 하나가 모든 고객데이터를 한DB에 저장한다고 할 때, 대부분의 사용자가 한달에 한두개씩만 사지만, 한 사용자는 매일 5천개씩 산다고 가정해보면
- DB가 이런 고객의 급증하는 부하를 처리 할만큼 충분히 강력하지 않으면 전체 DB가 다운되고 다른 고객이 구매를 못할 수 있음
- 이건 큰 도전이고, 데이터 파티셔닝 결정으로 이어짐
- Silo 파티셔닝(테넌트당 DB분리) vs. Pooled 파티셔닝(테넌트간 DB공유)
- Silo 파티셔닝은 몇몇 고객의 문제를 해결할 수는 있으나, 그러면 원래의 문제로 돌아가서 수많은 인스턴스를 관리해야 함
- Pooled 파티셔닝은 잘 동작하지만, 한 명의 고객이 부하를 일으켜서 문제가 생기면 느려지거나 시스템 다운으로 연결됨
문제2: 공유 자원과 데이터 보안
- 모든 고객이 같은 자원을 이용하며, 멀티테넌트의 표준 구현체 라는 것이 없기 때문에, 서로 다른 테넌트 간에 데이터가 교차되는 기술적 버그가 있을 수 있음.
- 서로 경쟁하는 고객을 동시에 서빙하고 있다면 아주 위험할 수 있는 문제
- 기술팀은 데이터 주권 법(Data Sovereignty Laws) 및 테넌트 격리에 영향을 미치는 규정 등을 평가 해야함
복잡성 해결
- 멀티테넌트는 SaaS 어플리케이션의 주요 기둥(Pilar)중 하나가 되었지만, 아직 구현단계에서 고려해야할 복잡성이 많음.
- Cloudinary의 CEO는 "멀티테넌시는 운영 탁월성(Operational Excellence)을 달성하는 핵심이지만, 제대로 하기 위해서는 많은 지식과 투자를 필요로 한다"라고 강조.
- (이 글을 쓴) Boldstart 와 F2는 이런 멀티테넌시의 문제점을 해결하는 스타트업(현재 스텔스 모드)에 투자했음
- 멀티테넌트 시스템엔 복잡한 것이 많지만, 싱글테넌트 시스템에서 확장 시에 생기는 기술적 부채를 생각하면 더 이상 고민할 필요가 없음
- 이 기술 부채를 해결하기 위해서 최고의 엔지니어 팀을 투입하고 핵심 비즈니스가 아닌 부분에 자원을 소비하게 되기 때문에
- 똘똘한 스타트업들은 아예 처음부터 멀티테넌트 환경을 계획해서 만들고 유지하는 것을 선택함