[reinvent 2024] SaaS 스토리지 전략: 멀티 테넌트 데이터의 확장, 보안, 최적화

Summary

SaaS 개발자는 멀티 테넌트 스토리지 전략을 선택할 때 확장성, 소음 문제 방지, 테넌트 데이터 격리, 원격 데이터 지원, 워크로드 샤딩 등 다양한 요소를 균형 있게 고려해야 합니다. 본 세션에서는 비즈니스 성장에 맞춰 진화할 수 있는 확장 가능한 멀티 테넌트 데이터 아키텍처를 설계할 때 적용되는 다양한 전략과 패턴을 다룹니다. 데이터 분할을 넘어서 복잡한 멀티 테넌트 스토리지 모델에서 발생하는 문제를 해결하는 방법과 비용, 운영 효율성, 성능 효율성을 균형 있게 맞추는 방법에 대해 논의합니다.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: SaaS storage strategies: Scaling, securing & tuning multi-tenant data
  • Date: 2024년 12월 2일(월)
  • Venue: Mandalay Bay | Lower Level North | Islander F
  • Speaker:
  • Dave Roberts(Amazon Web Services 수석 솔루션 아키텍트)
  • Ranjith Raman(AWS 수석 솔루션 아키텍트)
  • Industry: –

들어가며

AWS SA로서 다중 테넌시 환경에서 고객이 SaaS(Software as a Service) 솔루션을 도입하기 위해 고려해야 하는 사항은 효율적인 데이터 스토리지와 보안입니다. 이번 세션에서는 다중 테넌시 데이터 아키텍처 설계와 효율적인 스케일링 방법에 대해 확인할 수 있기에 본 세션을 참석하게 되었습니다. 특히 SaaS 환경에서의 격리와 보안, 스케일링 옵션, 데이터 모델 최적화에 많은 정보를 얻을 수 있어 더 나은 고객 대응이 될 수 있을것이라 기대하고 있습니다. 본 세션에서 나온 기술과  패턴은 고객의 데이터 격리 요구 사항을 충족시키는 동시에, 확장성과 효율성을 극대화하는 데 있어 중요한 인사이트가 될 것이라고 기대합니다.

다중 테넌시 배포 모델: 격리에서 공유로의 전환

다중 테넌시 환경의 데이터 관리 방식은 크게 Silo(전용 모델), Bridge(혼합 모델), 그리고 Pool(공유 모델)로 구분됩니다.

각 관리방식에 대해 정리하면 다음과 같습니다.

Silo 모델

  • 각 테넌트(고객)별로 전용 데이터베이스를 사용하는 모델입니다.
  • 장점: 격리와 보안이 자연스럽게 제공되며, 테넌트 간 데이터 접근 충돌 우려가 없습니다.
  • 단점: 테넌트 수가 늘어날수록 관리 오버헤드가 증가하며, 인프라 비용이 비효율적으로 상승합니다.

Bridge 모델

  • 각 테넌트가 공유 인프라를 사용하지만, 논리적으로 분리된 데이터베이스를 갖습니다.
  • 장점: 보안 수준을 유지하면서도 비용 효율성을 확보할 수 있습니다.
  • 단점: 물리적 격리가 아니므로, 관리 및 설계 복잡도가 증가합니다.

Pool 모델

  • 모든 테넌트가 하나의 데이터베이스를 공유하는 완전한 공유 모델입니다.
  • 장점: 최고 수준의 효율성을 제공합니다.
  • 단점: 높은 설계 복잡도와 데이터 격리 구현의 어려움이 따릅니다.

이러한 배포 모델을 선택할 때는 테넌트의 중요도와 사용 사례에 따라 모델을 적절히 조합하여 사용하는 것이 중요합니다. 예를 들어, 무료 고객에게 서비스를 제공하는 경우에는 Pool 모델을 통해서 전체적인 사용자 경험은 유지하면서 비용을 절감하는 효과를 기대할 수 있고, 보안을 중요시하는 엔터프라이즈 고객의 경우 Silo 모델을 통해 독립적인 공간을 제공하여 안정적이고 보안성이 강화된 시스템을 제공할 수 있습니다.

보안 및 격리를 위한 AWS 서비스 활용

SaaS 환경에서는 데이터 격리와 보안이 무엇보다 중요합니다. AWS에서는 이러한 요구사항을 충족하기 위해 여러 가지 서비스를 제공합니다. 이번에는 Secrets Manager를 활용한 인증 방식에 대해 알아보도록 하겠습니다.

IAM 대신에 AWS Secrets Manager을 사용한다면 IAM 인증의 한계를 극복하여 더 많은 연결 요청 처리 가능하며,  시크릿키의 잘못된 관리로 인해 발생할 수 있는 보안사고를 원천적으로 차단할 수 있습니다. 또한 테넌트별 격리된 자격 증명 제공하기 때문에 리소스 공유가 일반적인 SaaS 환경에서는 고객의 데이터를 더욱 안전하게 관리하면서, 비용절감을 얻을 수 있는 시너지를 낼 수 있습니다.

작동방식을 설명하면 다음과 같습니다.

  • 각 테넌트별로 고유한 데이터베이스 자격 증명을 생성하여 Secrets Manager에 저장합니다.
  • Lambda 함수가 실행될 때 테넌트 ID를 기반으로 Secrets Manager에서 적절한 자격 증명을 가져옵니다.
  • 이를 통해 각 테넌트의 데이터베이스에 안전하게 접근할 수 있습니다.

이러한 기능이 가능한 이유는 Token Vending Machine(TVM) 덕분이며,  테넌트별 실행 정책을 동적으로 생성하여, 각 요청에 적합한 권한을 할당합니다. 덕분에 공유 Lambda 환경에서 테넌트를 식별하고 격리하는것이 가능합니다.

스케일링 전략: 효율성을 극대화하기

SaaS 스토리지 아키텍처의 성공은 효율적인 스케일링에 달려 있습니다. 스케일링은 주로 세 가지 축을 중심으로 진행됩니다.

수직 스케일링(Vertical Scaling)은 단순히 인스턴스의 자원을 증가시키는 방식입니다. 간단하고 빠르게 확장 가능하다는 장점이 있지만 물리적 한계에 도달하면 확장이 불가하기 때문에 완벽한 대안이라고 할 수는 없습니다.

연결 관리(Connection Management)는 데이터베이스와 애플리케이션 간의 연결을 효율적으로 관리하는 프로세스를 의미합니다. 다음과 같은 주요 요소를 포함합니다:

  1. 연결 수 제한: 데이터베이스는 동시에 처리할 수 있는 연결 수에 제한이 있기 때문에, 연결 관리 시스템은 이러한 제한을 고려하여 애플리케이션의 요청을 조절합니다.
  2. 연결 재사용: 연결 관리자는 기존의 연결을 재사용하여 새로운 요청을 처리함으로써, 연결을 생성하고 종료하는 데 드는 오버헤드를 줄입니다. 이를 통해 성능을 향상시키고 자원을 절약할 수 있습니다.
  3. 부하 분산: 여러 데이터베이스 인스턴스가 있을 경우, 연결 관리자는 요청을 적절히 분산시켜 각 인스턴스의 부하를 균형 있게 유지합니다.
  4. 세션 관리: 연결 관리자는 각 연결의 세션 상태를 추적하고, 세션 변수를 설정하여 데이터베이스의 보안 및 데이터 접근을 관리합니다.

연결 관리는 특히 다수의 사용자가 동시에 데이터베이스에 접근하는 SaaS(서비스형 소프트웨어) 환경에서 매우 중요합니다. 이를 통해 시스템의 성능과 안정성을 높일 수 있습니다.

스토리지의 연결 수가 제한적인 상황에서, RDS Proxy를 활용하여 효율적으로 연결을 관리할 수 있습니다. 세션 변수를 사용하여 각 연결이 고유한 세션 상태를 가지게 되는데, RDS 프록시는 이러한 세션을 관리하여 여러 세션 간의 연결을 재사용할 수 있도록 합니다. 또한 여러 데이터베이스 인스턴스가 있을 경우, RDS 프록시는 요청을 적절히 분산시켜 각 인스턴스의 부하를 균형있게 유지합니다.

추가적으로 Amazon Aurora Serverless와 함께 사용되는 기능인 Data API를 사용하면 SQL 쿼리를 HTTP 요청으로 전송할 수 있게 하여, 데이터베이스와의 연결을 직접 관리할 필요 없이 애플리케이션에서 쉽게 사용할 수 있고 연결을 자동으로 관리하기 때문에 애플리케이션이 데이터베이스에 대한 연결을 수동으로 설정하거나 종료할 필요가 없습니다. 이는 특히 서버리스 아키텍처에서 유용합니다.

데이터 모델링 및 효율화

효율적인 데이터 모델링은 SaaS 애플리케이션의 성능을 결정짓는 중요한 요소입니다. 특히, 테넌트 데이터와 샤딩(Sharding) 전략은 데이터 관리의 핵심입니다. 테넌트 ID를 샤드 키(Shard Key)로 설정함으로써 데이터를 논리적으로 분리할 수 있습니다. 이러한 접근 방식의 장점은 각 테넌트별로 성능을 격리할 수 있어, 특정 테넌트의 데이터 액세스가 다른 테넌트에 영향을 미치지 않도록 할 수 있다는 점입니다. 또한, 효율적인 데이터 액세스를 제공하여 전체 시스템의 성능을 향상시킵니다.

AWS의 Limitless Database와 같은 서비스는 샤딩의 복잡성을 줄여주며, 개발자가 애플리케이션 개발에 더욱 집중할 수 있도록 돕습니다. 이러한 서비스는 샤딩을 자동으로 관리하여 개발자가 데이터베이스 구조에 대한 걱정 없이 비즈니스 로직에 집중할 수 있게 합니다.

또한, 데이터 배치 전략을 통해 테넌트 데이터를 같은 물리적 디스크에 배치함으로써 쿼리 효율성을 극대화할 수 있습니다. 이 전략의 장점은 성능 개선과 함께 운영 복잡성을 감소시킬 수 있다는 것입니다. 데이터가 물리적으로 가까이 위치할수록 쿼리 처리 속도가 빨라지며, 이는 사용자 경험을 향상시키는 데 기여합니다. 이러한 데이터 모델링 기법들은 SaaS 애플리케이션의 성능을 극대화하는 데 필수적입니다.

결론

이번 세션은 SaaS 스토리지 아키텍처의 설계 및 스케일링을 위한 모범 사례와 AWS 서비스를 활용한 전략을 포괄적으로 다루었습니다. 특히 다중 테넌시 환경에서의 보안 및 격리, 효율적인 스케일링 방법, 그리고 데이터 모델링 최적화는 SaaS 솔루션의 성공에 있어 핵심적인 요소임을 다시 한번 확인할 수 있었습니다.

이 세션을 통해 얻은 주요 인사이트는 다음과 같습니다.

  1. 테넌트 요구 사항에 따라 적절한 배포 모델을 선택하는 것이 중요하다.
  2. AWS Secrets Manager와 RDS Proxy와 같은 서비스를 활용하여 보안과 효율성을 동시에 달성할 수 있다.
  3. 효율적인 데이터 모델링과 샤딩 전략은 스케일링을 극대화하는 데 필수적이다.

해당 자료가 AWS 환경에서 SaaS 환경을 설계하고 운영하는 모든 이에게 도움이 되었으면 합니다.

글 │메가존클라우드 Cloud Technology Center (CTC), Team2 이성원 SA
게시물 주소가 복사되었습니다.