멀티 테넌시에는 여러 가지 측면이 고려되며, 그 중 하나는 데이터 아키텍처입니다. 청구, 실적, 보안 등도 있습니다.
데이터 아키텍처에 대해 먼저 SQL 스토리지를 살펴 보도록하겠습니다. 다음 옵션을 사용할 수 있습니다. 코드가 레코드를 필터링하는 데 사용할 CustomerID (또는 다른 식별자)를 추가하고, 다른 고객에 대해 다른 스키마 컨테이너를 사용합니다 (각 고객은 전용 스키마에 의해 소유 된 모든 데이터베이스 개체의 자체 복사본을 가짐). 선형 샤딩 (각 고객마다 자체 데이터베이스가 있음) 및 연합 (성능 및 확장 성 요구 사항에 따라 점진적인 샤딩을 제공하는 SQL Azure의 기능)을 지원합니다. 이러한 모든 옵션은 유효하지만 성능, 확장 성, 보안, 유지 관리 (백업 등), 비용 및 물론 데이터베이스 설계에 대해 다른 의미를 갖습니다. 내가 제공 한 정보에 따라 어느 것을 선택할지를 말할 수 없었습니다. 이미 코드 기반이있는 경우 일부 모델은 다른 모델보다 구현이 쉽습니다. 일반적으로 선형 파편은 가장 단순한 모델이며 강력한 고객 격리를 제공하지만 아마도 가장 비싼 것입니다. 스키마 기반 분리는 그리 어렵지 않지만 보안 요구 사항을 잘 처리해야하며이 방법은 공유되지 않으므로 고객 간 성능 문제가 발생할 수 있습니다 (동일한 데이터베이스에있는 고객의 경우). 마지막으로 Federations는 고객 식별자를 사용해야하며 몇 가지 제한이 있습니다. 그러나이 기술을 사용하면 성능 배포와 장기적인 확장 성을보다 효과적으로 제어 할 수 있습니다 (선형 샤드처럼 Federation은 비공유 아키텍처를 사용하기 때문에).
저장소 계정과 관련하여 고객 당 다른 저장소 계정을 사용하는 것이 명확한 방법입니다. 별도의 스토리지 계정을 사용하지 않을 경우 가장 큰 문제는 단일 저장소 계정을 사용하여 실행할 수있는 초당 최대 트랜잭션 수와 같은 성능 제한입니다. 그러나 지적하고 있듯이 로컬에서 테스트하는 것이 문제 일 수 있습니다. 그러나 이것을 고려하십시오. 로컬 에뮬레이터는 Azure 저장소 계정으로 100 % 패리티를 제공하지 않습니다 (일부 기능은 에뮬레이터에서 지원되지 않습니다). 그래서 초기 개발과 문제 해결을 위해서만 로컬 에뮬레이터를 사용했습니다. 멀티 테넌트 테스트를 포함한 모든 심각한 테스트는 실제 스토리지 계정을 사용하여 수행해야합니다. 응용 프로그램을 완전히 테스트 할 수있는 유일한 방법입니다.
고마워요! 이것은 간략하게이 프로젝트를 다루는 동안 내가 배우고 찾고있는 모든 옵션을 요약합니다. 나는 당신이이 기술 분야를 전문으로하는 컨설턴트임을 알아 냈습니다. 당신이나 당신 팀원에게 당신이 지불하는 거래를 준비하는 데 관심이 있습니까, 제가 정말로 기본적인 스켈레톤 멀티 테넌트 애플리케이션을 만들어서 프로비저닝/인증/미터링/스케일링/빌링의 주요 멀티 테넌트 문제에 대한 다른 구성 요소는 무엇입니까? 그런 다음 내 클라이언트의 앱에 동일한 이론을 적용하고 적용 할 수 있습니다. 이게 당신에게 관심이 있다면 알려주세요 :) – John
관심이 있으시다면, 저의 이름으로 이메일을 보내주십시오. (john) johnarnold.ca – John
안녕하세요. 다중 점유 프레임 워크에 관해서, 나는 이미 하나를 개발했습니다! 여기에서 찾으실 수 있습니다 : https://scale.bluesyntax.net. 아직 베타 버전이지만 선형 및 스키마 분리 샤딩에 적합한 모델입니다. 제공되는 API에 대한 자세한 내용은 https://scale.bluesyntax.net/About.aspx에서 찾으실 수 있습니다. - 관심이 있으시거나보다 맞춤화 된 것을 찾고 싶다면 별도로 연락 드리겠습니다. . –