Posted in

데이터이펙트 Multi-Tenant SaaS Architecture 구축

안녕하세요, Moons입니다.
오늘은 제가 Dataeffect에서 백엔드 개발자로 일하면서 경험한 Multi-Tenant SaaS 아키텍처 구축 과정을 공유해볼까 합니다.
우리가 이 아키텍처를 도입하게 된 이유와 그 과정에서 겪었던 시행착오들에 대해 이야기해보겠습니다.

Multi-Tenant 아키텍처 도입 개요

Multi-Tenant 아키텍처는 여러 고객이 동일한 소프트웨어를 공유하면서도 각자의 데이터는 안전하게 분리되는 구조입니다.
저희 팀이 처음 이 아키텍처를 고민했을 때, 많은 장점과 단점이 있다는 것을 깨달았습니다. 비용을 절감할 수 있지만, 데이터 격리와 보안 문제가 우려되었습니다.

그래서 이런 점들을 어떻게 해결할 수 있을지를 고민했습니다.

Multi-Tenant와 Single-Tenant 차이

  • Single-Tenant

    • 각 고객에게 독립적인 인프라 제공, 높은 보안과 맞춤형 기능을 보장하지만, 비용이 증가합니다.

  • Multi-Tenant

    • 모든 고객이 동일한 인프라를 공유하여 비용을 절감. 그러나 데이터 격리와 보안 문제에 대한 신뢰가 필요함.

이미지 출처: Good Data

설계를 시작할때 가장 중요하게 생각했던 것은 데이터 격리였습니다. 각 테넌트의 데이터가 철저히 분리되어야 고객의 신뢰를 얻을 수 있기 때문입니다. 저희는 테넌트 ID를 데이터베이스에 추가해 데이터를 구분하는 방식을 선택했습니다. 그리고 처음에는 마이크로서비스 아키텍처를 도입해 AWS Lambda를 통해 기능들을 모듈화 해볼까 고민했지만, 피처링의 대부분 서비스는 Django로 구현되어 있어서 팀원들의 역량과 빠른 개발 속도를 고려해 Django를 선택했습니다. Django는 강력한 ORM과 빠른 개발 환경 덕분에 저희가 필요로 하는 기능을 효율적으로 구현할 수 있다고 판단했습니다.

이러한 고민들을 검증 받고자 AWS 컨설팅을 요청했습니다.

AWS 컨설팅 내용 요약

AWS 기반 Multi-Tenant의 SaaS Architecture를 채택할 경우 다른 기업들에서 조금 신뢰하고 선호하는 측면을 무시할 순 없다

AWS 컨설팅

멀테테넌트 Saas 솔루션 아키텍쳐 도입에 따른 이점

  • 개발 측면

    • 기능 개발과 유지보수가 보다 용이하며, 공통된 코드베이스를 활용해 업데이트를 효율적으로 배포할 수 있습니다.

    • 테넌트별 요구사항에 따라 특정 기능을 확장하거나 수정하기 쉬워 개발 속도를 향상시킵니다.

  • 비즈니스적 측면

    • 인프라를 공유함으로써 비용을 절감하고 운영 효율성을 높일 수 있습니다.

    • 특정 테넌트를 위한 커스터마이징 및 티어 구조를 통해 추가적인 수익 창출 기회를 제공합니다.

    • 글로벌 서비스 확장을 위해 각국의 법적 규제(정보통신망법 등)에 대비할 때, AWS와 같은 클라우드 서비스를 활용하여 복잡한 컴플라이언스 문제를 간소화할 수 있습니다.

 

이미지 출처: Featuring Corp

데이터이펙트 서비스 소개

데이터이펙트는 소셜 미디어 데이터를 실시간으로 수집하고 분석하는 소셜 리스닝 및 소셜 인텔리전스 서비스입니다.
수많은 소셜 데이터를 AI 엔진을 통해 처리하여 비즈니스 맞춤 솔루션을 제공하며, 고객의 요구에 맞춘 인프라와 기능을 제공합니다. 고객이 원하는 소셜 데이터 분석을 모두 지원합니다.

요구사항 기반으로 아키텍쳐 설계

수많은 회의를 통해서 “데이터이펙트는 이런 식으로 구축되어야 한다”는 방향성을 정리해봤습니다. 팀원들과의 협업을 통해 도출된 이 방향성은 아키텍처 설계와 개발의 기초가 되었습니다.

  1. 유연성과 확장성이 있게 모듈화된 기능을 제공하고 필요에 따라 오그별로 인프라 및 데이터 분리

  2. 기본적으로 오그별로 App 도메인 분리

  3. 고객 맞춤형 설정이 가능해 개인화된 경험을 제공

  4. 고객이 원하는 데이터를 다양한 조건을 통해 실시간 수집

  5. 복잡한 데이터를 쉽게 이해할 수 있도록 시각화하는 기능

  6. 분석 결과를 쉽게 공유할 수 있는 공유 기능

  7. 데이터 이슈가 발생시 즉시 피드백을 받을 수 있는 알림 시스템

Multi-Tenant 아키텍처의 구체적 설계 및 구현 과정

목차

  1. 구현 방향성

  2. 통합 유저 구축

  3. CI / CD

 

구현 방향성

CI / CD

Terraform을 활용하여 인프라 환경을 구축하고, GitHub Actions를 통해 코드를 Amazon ECR에 업데이트한 뒤,
이를 Amazon EKS에 반영하여 CI/CD 파이프라인을 완성했습니다.

통합 유저 구축

피처링은 데이터이펙트, 피처링코, 시나몬 등 여러 서비스가 존재하기에 통합유저를 구축하기로 결정했습니다.

Multi-Tenant SaaS 아키텍처의 미래와 Dataeffect의 비전 및 향후 계획

AI 시대가 도래하면서 MLaaS(Machine Learning as a Service)도 주목받고 있으며, Multi-Tenant SaaS 아키텍처는 AI와 머신 러닝 기능을 점차 통합하는 방향으로 발전하고 있습니다.
이러한 통합은 고객 맞춤형 예측 모델과 실시간 데이터 분석을 가능하게 하여 SaaS 서비스의 가치를 한층 높이고 있습니다.

Dataeffect 팀 또한 이러한 흐름에 발맞춰 MLaaS 도입을 검토하며, 보다 정교한 데이터 분석과 예측 기능을 제공하는 지능형 플랫폼으로 발전하는 것을 목표로 하고 있습니다.
앞으로 고객에게 더 높은 수준의 가치를 전달하기 위해, Multi-Tenant 아키텍처와 AI의 통합을 통해 개인화된 분석 기능을 제공함과 동시 꾸준히 고객이 원하는 가치를 창조하는것에 집중할 계획입니다.

주요 참고 자료

#Django #Multi-Tenant #Saas #Dataeffect #AWS #AI #MLaas #Kubernetes

피처링에서 6년차 백엔드 아키텍트 문상권입니다.