편집

다음을 통해 공유


다중 테넌트 솔루션의 비용 관리 및 할당을 위한 아키텍처 접근 방식

Azure
Azure Cost Management
Azure Resource Manager
Azure Monitor

일반적으로 다중 테넌트 솔루션은 비용을 측정 및 할당할 때와 비용을 최적화할 때 특별한 고려 사항이 필요합니다. 이 페이지에서는 솔루션 설계자가 다중 테넌트 애플리케이션에 대한 비용의 측정, 할당, 최적화에 대해 고려해야 하는 몇 가지 주요 참고 자료를 설명합니다.

주요 고려 사항 및 요구 사항

솔루션의 사용량을 측정하기 위한 요구 사항을 고려합니다. 이는 각 테넌트 사용량 측정에서 자세히 설명합니다.

측정 목적

목표가 무엇인지 결정하는 것이 중요합니다. 목표의 예는 다음과 같습니다.

  • 각 테넌트에 대해 판매되는 상품의 대략적인 비용을 계산합니다. 예를 들어, 상당한 수의 공유 리소스를 배포하는 경우 각 테넌트에 대해 발생하는 대략적인 비용 근삿값에만 관심이 있을 수 있습니다.
  • 각 테넌트로 인해 발생하는 정확한 비용을 계산합니다. 예를 들어, 발생하는 정확한 사용량에 대한 요금을 테넌트에 부과하는 경우 각 테넌트의 리소스 비용에 관한 정확한 정보가 있어야 합니다.
  • 다른 테넌트보다 훨씬 더 많은 비용이 드는 이상값 테넌트를 식별합니다. 예를 들어, 정액제 가격 책정 모델을 제공하는 경우 공정한 사용 정책을 적용할 수 있도록 테넌트가 프로비저닝된 용량을 불균형하게 사용하는지 여부를 확인해야 할 수 있습니다. 대부분의 경우 이 사용 사례에는 정확한 비용 측정이 필요하지 않습니다.
  • 솔루션에 대한 전체 Azure 비용을 줄입니다. 예를 들어, 모든 구성 요소의 비용을 찾은 다음, 워크로드에 대해 초과 프로비저닝했는지 여부를 확인하려고 합니다.

테넌트별 사용량 측정의 목표를 이해하면 비용 할당이 근삿값이거나 매우 정확해야 하는지 여부를 결정할 수 있습니다. 이는 사용할 수 있는 특정 도구와 따를 수 있는 사례에 영향을 줍니다.

공유 구성 요소

테넌트를 공유 인프라로 이동하여 다중 테넌트 솔루션의 비용을 줄일 수 있습니다. 그러나 테넌트에서 노이지 네이버 문제가 발생하기 시작하는지 여부와 같이 리소스 공유의 영향을 신중하게 고려해야 합니다.

공유 구성 요소의 비용을 측정하고 할당하는 방법도 고려해야 합니다. 예를 들어, 공유 구성 요소를 사용하는 각 테넌트 간에 비용을 균등하게 나눌 수 있습니다. 또는 각 테넌트의 사용량을 측정하여 공유 구성 요소의 사용량을 더 정확한 측정값을 얻을 수 있습니다.

고려해야 할 접근 방식 및 패턴

리소스 태그를 사용하여 비용 할당

Azure를 사용하면 리소스에 태그를 적용할 수 있습니다. 태그는 키-값 쌍입니다. 태그를 사용하여 사용자 지정 메타데이터를 추가합니다. 태그는 많은 관리 작업에 유용하며 Azure 사용량의 비용을 분석하는 데도 유용합니다. 태그를 적용한 후 각 태그와 연결된 비용을 확인할 수 있습니다.

다중 테넌트 솔루션에서 태그를 사용하는 방법은 아키텍처에 따라 다를 수 있습니다.

일부 솔루션에서는 각 테넌트에 대한 전용 배포 스탬프를 배포하는 경우와 같이 각 테넌트에 대한 전용 리소스를 배포할 수 있습니다 . 이러한 상황에서는 이 리소스에 대한 Azure 사용량을 해당 테넌트에 할당해야 하므로 테넌트 ID를 사용하여 Azure 리소스에 태그를 지정할 수 있습니다.

다른 상황에서는 공유 리소스 세트가 있을 수 있습니다. 예를 들어, 분할 패턴을 적용할 때 여러 데이터베이스를 배포하고 데이터베이스 간에 테넌트를 분산할 수 있습니다. 테넌트 그룹의 식별자를 사용하여 리소스에 태그를 지정하는 것이 좋습니다. 단일 테넌트에 비용을 쉽게 할당할 수는 없지만, 이 접근 방식을 사용하는 경우 최소한 비용 범위를 테넌트 세트로 좁힐 수 있습니다. 특정 분할된 데이터베이스가 다른 데이터베이스보다 더 높은 비용을 발생시키는 경우 사용량 정보를 사용하여 분할된 데이터베이스에서 테넌트의 균형을 다시 조정할 수도 있습니다.

참고

리소스에 적용할 수 있는 태그 수에 대한 제한이 있습니다. 공유 리소스를 사용하는 경우 리소스를 공유하는 모든 테넌트에 대한 태그를 추가하지 않는 것이 가장 좋습니다. 대신 분할된 데이터베이스 ID를 사용하거나 테넌트 그룹을 식별하는 다른 방법으로 태그를 추가하는 것이 좋습니다.

배포 스탬프 패턴세로로 분할된 테넌트 모델을 사용하여 빌드된 다중 테넌트 솔루션의 예를 생각해 보세요. 각 배포 스탬프에는 공유 웹 서버 및 분할된 데이터베이스가 포함됩니다. 다음 다이어그램과 같이 각 Azure 구성 요소에 태그를 적용할 수 있습니다.

각 구성 요소에 태그가 추가된 두 개의 스탬프를 보여 주는 다이어그램

여기에 채택된 태그 지정 전략은 다음과 같습니다.

  • 모든 리소스에는 stamp-id 태그가 있습니다.
  • 모든 분할된 데이터베이스에는 shard-id 태그가 있습니다.
  • 특정 테넌트에만 사용되는 모든 리소스에는 tenant-id 태그가 있습니다.

이 태그 지정 전략을 사용하면 비용 정보를 단일 스탬프로 쉽게 필터링할 수 있습니다. 또한 테넌트 C의 총 데이터베이스 비용과 같은 테넌트별 리소스의 비용을 쉽게 찾을 수 있습니다. 공유 구성 요소에는 tenant-id 태그가 없지만 스탬프에 대한 공유 구성 요소의 비용은 해당 스탬프 또는 분할된 데이터베이스를 사용하도록 할당된 테넌트 간에 나눌 수 있습니다.

애플리케이션 계측

Azure 리소스와 테넌트 간에 직접 관계가 없는 경우 애플리케이션을 계측하여 원격 분석을 수집하는 것이 좋습니다.

애플리케이션 계층은 계량에 대한 질문에 대답하는 데 도움이 되는 로그 및 메트릭을 이미 수집할 수 있습니다. 예를 들면 다음과 같습니다.

  • 테넌트당 대략 몇 개의 API 요청이 이루어지나요?
  • 하루 중 특정 테넌트가 가장 많이 사용되는 시간대는 언제인가요?
  • 테넌트 A의 사용량 패턴은 테넌트 B의 사용량 패턴과 어떻게 비교되나요?

Azure에서 이 메트릭은 일반적으로 Application Insights에 의해 캡처됩니다. 원격 분석 이니셜라이저를 사용하면 Application Insights에서 캡처한 원격 분석을 보강하여 테넌트 식별자 또는 기타 사용자 지정 데이터를 포함할 수 있습니다.

그러나 Application Insights와 기타 로깅 및 모니터링 솔루션은 정확한 비용 측정 또는 계량 목적에 적합하지 않습니다. Application Insights는 특히 애플리케이션에 많은 양의 요청이 있는 경우 데이터를 샘플링하도록 디자인되었습니다. 일반적으로 원격 분석의 모든 부분을 캡처하면 비용이 많이 들 수 있기 때문에 샘플링은 솔루션 모니터링 비용을 줄이도록 디자인되었습니다.

청구 목적으로 사용량에 대한 정확한 세부 정보를 추적해야 하는 경우에는 필요한 데이터를 로그하기 위해 사용자 지정 파이프라인을 빌드해야 합니다. 그런 다음, 요구 사항에 따라 데이터를 집계해야 합니다. 이 목적에 도움이 될 수 있는 Azure 서비스에는 Event Hubs(대량의 원격 분석 캡처) 및 Stream Analytics(실시간 처리)가 있습니다.

Azure Reservations 및 Azure 절감 계획을 사용하여 비용 절감

Azure Reservations: Azure Reservations 를 사용하면 특정 수준의 지출로 미리 커밋하여 Azure 비용을 줄일 수 있습니다. Reservations는 다양한 Azure 리소스 종류에 적용됩니다.

Reservations는 다중 테넌트 솔루션에서 효과적으로 사용할 수 있습니다. 다음 고려 사항에 유의하세요.

  • 공유 리소스를 포함하는 다중 테넌트 솔루션을 배포하는 경우 워크로드에 필요한 기준 사용량 수준을 고려해야 합니다. 해당 기준 사용량에 대한 예약을 고려할 수 있는데 이후 예측할 수 없는 최대 사용량이 발생하여 더 높은 사용량에 대해 표준 요금을 지불합니다.
  • 각 테넌트에 대한 리소스를 배포할 때 특정 테넌트의 리소스 사용량으로 또는 테넌트 포트폴리오 전체 리소스 사용량으로 미리 약정할 수 있는지 고려합니다.

Azure Reservations를 사용하면 리소스 그룹, 구독 또는 구독 세트에 적용할 예약 범위를 지정할 수 있습니다. 즉, 여러 구독에 걸쳐 워크로드를 분할하더라도 예약을 활용할 수 있습니다.

예측할 수 없는 워크로드가 있는 테넌트가 사용하는 경우에도 예약 범위가 유용할 수 있습니다. 예를 들어, 테넌트 A에는 특정 리소스의 한 인스턴스만 필요하지만 테넌트 B와 C에는 각각 2개가 필요한 솔루션을 살펴봅니다. 이후 테넌트 B의 사용량이 감소하므로 인스턴스 수를 줄이고 테넌트 A 사용량이 증가하므로 인스턴스 수를 늘립니다. 예약은 해당 예약이 필요한 테넌트에 적용됩니다.

컴퓨팅에 대한 Azure 절감 계획: 컴퓨팅에 대한 Azure 절감 계획은 종량제 가격에 비해 상당한 절감액을 생성하는 유연한 비용 절감 계획입니다. 1년 또는 3년 계약에 동의하고 적격 컴퓨팅 서비스에 대한 할인을 받습니다. 이러한 서비스에는 가상 머신, 전용 호스트, 컨테이너 인스턴스, Azure 프리미엄 함수 및 Azure App Services가 포함됩니다. 절감액은 지역, 인스턴스 크기 또는 운영 체제에 관계없이 이러한 컴퓨팅 서비스에 적용됩니다. 자세한 내용은 Azure 저축 계획 개요Azure 저축 계획 설명서를 참조하세요.

예약 및 절감 계획 결합: 비용 및 유연성을 더욱 최적화하기 위해 Azure 저축 계획을 Azure Reservations와 결합할 수 있습니다.

피해야 할 안티패턴

  • 비용을 전혀 추적하지 않음. 적어도 발생하는 비용과 각 테넌트가 솔루션 제공 비용에 미치는 영향에 관한 대략적인 아이디어를 마련해야 합니다. 그렇지 않으면 시간이 지남에 따라 비용이 변경되는 경우 비교할 기준이 없습니다. 또한 테넌트의 증가가 비용과 수익성에 어떤 영향을 미치는지 예측하지 못할 수도 있습니다.
  • 가정 또는 추측. 비용 측정이 실제 정보를 기반으로 하는지 확인합니다. 높은 정밀도가 필요한 것이 아니라 실제 측정을 통해 예측치라도 알려야 합니다.
  • 불필요한 정밀도. 모든 테넌트에 대해 발생하는 모든 비용에 대한 자세한 회계가 필요하지 않을 수도 있습니다. 불필요하게 정확한 비용 측정 및 최적화 프로세스를 빌드하는 것은 엔지니어링 복잡성을 더하고 부서지기 쉬운 프로세스를 만들기 때문에 비생산적일 수 있습니다.
  • 실시간 측정. 대부분의 솔루션에는 최신 비용 측정이 필요하지 않습니다. 계량 및 사용량 데이터는 처리가 복잡할 수 있으므로 필요한 데이터를 로그한 다음, 나중에 데이터를 비동기적으로 집계하고 처리해야 합니다.
  • 청구에 모니터링 도구 사용. 애플리케이션 계측에 설명된 대로 비용 모니터링 및 계량용으로 디자인된 도구를 사용해야 합니다. 일반적으로 애플리케이션 모니터링 솔루션은 특히 높은 정밀도가 필요할 때 이 유형의 데이터에 적합하지 않습니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

  • John Downs | 주요 소프트웨어 엔지니어

기타 기여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.

다음 단계