BLOG
스토리지 파티셔닝은 SaaS (Software-as-a-Service) 개발자에게 항상 어려운 주제입니다. SaaS 환경에서는 테넌트 데이터를 효과적이고 효율적으로 파티셔닝 하고 SaaS가 요구하는 복잡한 스케일링 및 비용 최적화 요구 사항을 유의해야 합니다.
관계형 데이터 베이스를 사용하고 있는 경우, 특히 어려운 경우가 있습니다. 파티션화 전략에서는 이러한 데이터 베이스를 실행하는 인스턴스가 다중 테넌트 워크로드의 확장 요구 사항을 어떻게 처리 할 수 있는지 고려할 필요가 있습니다.
Amazon Aurora Serverless가 도입됨에 따라 현재 SaaS 제공 업체는 SaaS 솔루션의 스토리지 파티셔닝 모델에 직접 서버리스 컴퓨팅의 규모와 비용 효율성을 제공하는 모델을 갖추고 있습니다.
오늘 메가존 테크블로그에서는 Aurora 서버리스의 작동 방식과 SaaS 환경에서 스토리지 파티셔닝의 접근에 어떤 영향을 미치는지 자세히 살펴볼 예정입니다. 여기서의 목표는 서버리스 스토리지 모델의 의미를 강조하여, SaaS 개발자에게 특히 중요한 주요 영역을 특정하는 것입니다.
SaaS 파티셔닝 과제
Aurora 서버리스의 가치와 힘을 이해하려면 먼저 SaaS 개발자가 현재 관계형 데이터베이스로 데이터 파티셔닝을 구현하는 방법을 살펴 봐야 합니다. 파티셔닝은 일반적으로 몇 가지 일반적인 체계를 통해 이루어집니다. 그림 1에 표시된 첫 번째 옵션은 각 테넌트마다 별도의 데이터베이스 인스턴스를 작성하는 것입니다. 이를 “사일로” 스토리지 모델이라고 합니다.
그림 1 – 사일로화 된 인스턴스
기본적인 사고방식은 각 테넌트 마다 고유한 전용 인스턴스가 있다는 것입니다. 그런 다음 맵핑 구성(좌측에 표시)을 통해 데이터에 대한 액세스가 해결됩니다. 이 전략은 높은 수준의 데이터 격리를 요구하는 SaaS 환경에서 특히 일반적입니다.
사일로화 모델은 장점도 있지만, SaaS 환경의 민첩성과 비용을 관리하기가 더 어려울 수 있습니다. 대안으로 일부 SaaS 팀은 모든 테넌트 데이터가 단일 데이터베이스 인스턴스 내에 존재하는 풀링된 모델이라고 불리는 것을 사용합니다. 그림 2 의 다이어그램은 풀링된 구성의 간략도를 나타냅니다.
그림 2 – 풀링된 파티션
이 접근 방식의 주요 차이점은 데이터에 테넌트에 속해있는지를 판별하기 위해, 테넌트 식별자를 데이터에 도입할 필요가 있다는 것입니다. 이 전략은 환경에 대한 관리 및 데이터 마이그레이션 모델을 단순화시켜 솔루션의 전반적인 민첩성을 향상시킵니다.
모든 테넌트는 공유 데이터베이스 인스턴스를 통해 처리되어야 합니다. 이 인스턴스는 시스템의 각 테넌트의 다양한 부하 및 데이터 풋 프린트를 수용할 수 있는 크기여야 합니다. 이 접근 방식을 통해 운영 및 관리 효율성이 향상되지만, 이 인스턴스 수준에서 잠재적인 병목 현상이 발생합니다. 이는 종종 데이터 베이스 인스턴스 사이즈를 과도하게 프로비저닝 하여, 병목 현상의 가능성을 제한합니다.
이 문제를 해결할 수 있는 창의적인 방법이 있습니다. 한 가지 방법은 한 인스턴스에 배치된 부하를 더 적절히 분배하기 위해 부하 및 활동을 분석하여 파티션 모델에 지능을 추가하는 것입니다. 그러나 이것은 솔루션 전체를 복잡하게 만듭니다.
문제의 핵심
이러한 배경과 조금 전 설명한 파티셔닝 구성표를 통해 SaaS가 하나의 데이터베이스 인스턴스의 한계를 어떻게 뛰어 넘는지 알 수 있습니다. 우리가 직면한 근본적인 문제는 어떤 접근을 해도, 컴퓨팅 인스턴스에 묶여있다는 것입니다. 이 부하를 어떻게 분산할지에 대해서는 현명하게 접근해야 하며, 테넌트 요구 최대 부하에 가까운 크기를 가진 인스턴스를 선택해야 합니다.
서버에 대한 이러한 의존성은 SaaS 환경의 효율성과 비용에도 영향을 줍니다. SaaS의 목표는 실제 테넌트로드를 기준으로 항상 동적으로 크기를 조정하는 것이지만 다중 테넌트 데이터베이스 인스턴스 서버는 초과 프로비저닝을 요구하여 SaaS 환경의 비용을 인위적으로 증가시켜야 합니다.
구조를 위한 Aurora 서버리스
문제의 본질을 살펴보면 가장 큰 과제는 SaaS 데이터베이스를(어떻게 설정 해도) 온 디맨드 리소스와 같이 취급할 수 없다는 사실을 피할 수 없다는 것입니다. 실제 서버에서 자기 자신을 분리해야 하는 것은 Aurora Serverless가 목표로 하는 문제입니다.
Aurora 서버리스를 사용하면 개발자는 서버리스 컴퓨팅 환경과 동일한 사고방식과 가치를 채택 할 수 있습니다. 이를 통해 Aurora는 데이터 관리에 사용되는 기본 인스턴스를 의식하지 않고, 오늘날의 모든 규모와 성능을 제공 할 수 있습니다.
그림 3은 Aurora 서버리스 모델을 개략적으로 보여줍니다. 이전 파티션 모델의 일부였던 인스턴스가 사용자와 Aurora 데이터베이스 사이에 있는 서버리스 프록시 계층으로 대체되었음을 알 수 있습니다.
그림 3 – Aurora 서버리스 모델
Aurora 서버리스가 추가한 프록시 계층은 Aurora 인스턴스에 대한 인식에서 솔루션을 분리 할 수 있게 하는 핵심입니다. 이 계층은 모든 데이터베이스 접속을 관리하고 기본 데이터와의 모든 상호 작용에 대한 표면을 나타냅니다. 이는 개발 경험에 추가적인 복잡성을 추가하지 않고도 달성됩니다. 인스턴스가 프록시의 반대쪽에서 스왑 인 및 스왑 아웃됨에 따라 코드에서 사용되는 접속이 이 이행을 정상적이며 투과적으로 진행합니다.
프록시 계층을 배치하면, Aurora 서버리스에는 현재의 부하를 처리하는 데 필요한 계산 리소스를 관리할 수 있는 자연스러운 메커니즘이 있습니다. 방정식에서 인스턴스를 삭제하면 Aurora 서버리스는 시스템의 활동을 동적으로 평가하고 실제 시스템 부하를 기반으로 필요한 계산량을 결정할 수 있습니다.
프록시 뒤에 있는 Aurora 서버리스에는 솔루션의 크기를 효율적이고 동적으로 확보하기 위한 새로운 메커니즘이 포함되어 있습니다. 이는 Aurora 서버리스가 리소스를 신속하게 추가 할 수 있는 새로운 풀링 모델을 도입함으로써 실현됩니다. 그림 4는 풀링된 Aurora 리소스를 개념도로 보여줍니다.
그림 4 – 풀링된 Aurora 리소스
풀(우측에 표시됨)은 환경에 용량을 추가하기 위해 간단히 교체 할 수 있는 인스턴스 집합을 나타냅니다. 이러한 인스턴스는 다양한 크기로 할당되어 Aurora 서버리스의 부하의 변동에 어떻게 응답할지에 대해 보다 세분화된 접근 방식을 제공합니다. 실제로 시스템에 스토리지 작업이 없는 경우 Aurora 서버리스는 실제로 클러스터를 일시 중지합니다.
Aurora 서버리스는 SaaS 환경의 근본적인 복잡함을 줄일 수도 있습니다. 자체 프로파일링 및 분석을 기반으로 스토리지 인스턴스를 프로파일링 하고 파티션을 나눌 필요성이 사라졌습니다. 그 대신 Aurora를 사용하여 시스템의 계산 부하를 효율적으로 분배할 수 있습니다.
SaaS 확장 효율성
여러분도 상상할 수 있듯이 Aurora 서버리스에 이 프록시 계층을 도입하면 이 글의 앞부분에서 설명한 SaaS 파티셔닝 문제를 직접 해결할 수 있습니다. 이제 인스턴스가 수식에서 벗어나면, SaaS 아키텍처는 인스턴스 크기라고 예측할 수 없는 다중 테넌트 데이터 부하와 일치시키는 것을 고려하지 않아도 됩니다.
인스턴스를 동적으로 확장 및 교체 할 수 있는 이 기능을 통해 Aurora 서버리스는 시스템의 현재 부하를 평가하고 적절한 양의 컴퓨팅 리소스와 일치시킬 수 있습니다. 궁극적으로 이 모델이 제공하는 것은 SaaS 환경에서 흔히 볼 수 있는 변형을 대응하도록 확장 및 축소할 수 있는 기능입니다. 이러한 수준의 최적화는 서버리스 모델을 도입하지 않으면 달성할 수 없었습니다.
비용 최적화
서버리스 모델로의 전환은 SaaS 애플리케이션의 비용 풋 프린트에도 긍정적인 영향을 미칩니다. 방정식에서 인스턴스를 제거함으로써 Aurora Serverless는 (프로비저닝 된 인스턴스 대신) 청구를 실제 활동에서 도출된 진정한 소비 기반 가격 책정 모델로 제공할 수 있었습니다.
이러한 환경은 Aurora 부하가 하루 중 특정 시간에 상당히 최소화 될 수 있는 경우가 많기 때문에, SaaS 제공 업체에게 얼마나 매력적인 지 알 수 있습니다.
SaaS 및 서버리스: 자연스러운 교차점
서버리스 컴퓨팅은 이미 기세를 높여가고 있습니다. 개발자는 이 모델의 구축, 배포, 관리, 보안 및 비용 가치 제안에서 실제 가치를 인식하고 있습니다. 이제 이러한 값이 데이터베이스 유니버스로 범위를 확장함에 따라 멀티 테넌트 스토리지 전략의 규모, 성능 및 비용을 서버리스로 개선 할 수 있는 새롭고 흥미로운 방법을 보여주고 있습니다.
서버리스 데이터베이스 모델은 SaaS 워크로드의 동적 특성을 지원하기 위해 보다 효과적인 모델을 찾고 있는 SaaS 제공 업체에게 매우 매력적일 수 있습니다. Aurora 서버리스는 다중 테넌트 데이터의 문제와 다양한 사용자 활동을 처리할 수 있는 새로운 도구와 전략을 SaaS 설계자에게 제공하여 솔루션의 기능적 측면에 집중할 수 있게 합니다.
AWS SaaS Factory에 대해
AWS SaaS Factory는 AWS 파트너 네트워크(APN) 파트너에게 SaaS 제공 모델 채택을 촉진하고 안내하는 데 도움이 되는 리소스를 제공합니다. SaaS Factory에는 AWS에서 SaaS 솔루션을 구축하기 위한 참조 아키텍처가 포함되어 있습니다. AWS의 주요 워크로드에 대한 배포를 자동화하는 빠른 시작 및 AWS에서 SaaS 비즈니스를 구축하기 위한 전용 교육 기회가 포함되어 있습니다. SaaS 솔루션을 개발하는 APN 기술 파트너는 이 프로그램에 참여하도록 권장하고 있습니다!
AWS SaaS Factory에 대한 자세한 정보 >>
원문 URL: https://aws.amazon.com/ko/blogs/apn/saas-storage-partitioning-with-amazon-aurora-serverless/
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.