멀티 테넌트 코어
멀티 테넌트 코어는 격리, 관리 한도 및 보안 사용자 정의가 보장 된 공유 리소스에서 많은 독립 클라이언트 (테넌트) 에게 서비스를 제공하는 플랫폼/제품의 기본 계층입니다. 잘 설계된 코어는 TCO를 줄이고 온 보딩 속도를 높이며 릴리스를 단순화하며 모든 테넌트에게 예측 가능한 품질을 제공합니다.
1) 임차인 모델 및 격리 경계
정의
세입자/조직/계정-자체 사용자, 데이터, 정책 및 제한이있는 논리 조직.
격리: 한 임차인이 다른 임차인의 데이터, 성능 및 보안에 영향을 미치지 않도록하는 기능.
절연 수준
1. 데이터: 개별 데이터베이스/스키마/테이블, "테넌트 키" 가있는 암호화, '테넌트 _ id' 필터.
2. 계산: CPU/RAM/IO 할당량, 테넌트 작업자 풀 또는 가중 대기열.
3. 네트워크: 세분화, 개인 엔드 포인트/VPN, 세입자의 허가 목록.
4. 운영: 마이그레이션, 백업, DR 및 "임차인 당" 영향 경계가있는 사건.
멀티 테넌시 패턴
Silo (하드 격리): 테넌트 당 개별 클러스터/데이터베이스. 최대 보안, 높은 가격.
수영장: 논리적으로 격리 된 공유 인프라; 더 나은 효율성, "시끄러운 이웃" 의 위험 증가.
Bridge/Hybrid: 하이브리드-VIP/규제 고객을위한 공통 제어 평면 + 선택적으로 "사일로".
2) 임차인 요청 식별 및 라우팅
임차인 해상도
도메인 별: 'https ://{ 세입자} .example. com. '
길을 따라: '/t/{ 세입자 }/... '
제목: 'X-Tenant-ID', 'X-Organ' (서명 확인)
토큰별로: 스탬프 'tenant _ id', 'org _ id', 'plan', 'scopes'
라우팅
L7 게이트웨이 (API 게이트웨이/Ingress) 는 '테넌트 _ id' 를 추출하여 컨텍스트 ('계획', 한계, 지역) 를 풍부하게하고 트레일/로그에 기록합니다.
기능 서비스는 읽기 전용 컨텍스트를 허용합니다 경로 및 제한에 대한 결정은 게이트웨이/정책 엔진에 의해 이루어집니다.
3) 데이터 및 스키마: 전략
스토리지 옵션
공유 스키마, 행 레벨: 하나의 테이블 세트, '테넌트 _ id' 필드, 엄격한 RLS (행 레벨 보안).
공유 DB, 스키마 당: 하나의 DBMS, 임차인 당 별도의 체계; 제어 성과 단열 사이의 균형.
DB/클러스터 당: 임차인 당 별도의 데이터베이스/클러스터; 더 비싸고 주권을 주장하기가 더 쉽습니다.
주요 관행
모든 곳에서 '테넌트 _ id' 를 명시 적으로 통과하여 복합 키/인덱스에 포함시킵니다.
RLS/DBMS 수준 액세스 정책 + 이중 잠금 서비스 검증.
암호화: 키 계층 구조 (임차인 당 루트 KMS → 키 엔벨로프 → 객체 당 DEK).
보관/보존 및 "잊을 권리" 는 임차인 수준의 정책에 의해 관리됩니다.
4) 설정, 기능 및 버전
임차인 구성
테이블/스토리지 '테넌트 _ 설정' (계획, 할당량, 기능 플래그, 지역화, SLA).
구성 요소의 우선 순위: 기본 → 계획 → 테넌트 → 환경 → 사용자.
짧은 TTL 및 이벤트 별 장애로 캐싱을 설정하십시오.
기능 플래그 및 호환성
함수 포인트 활성화 (테넌트 당/코호트 당), 카나리아 롤링.
API 버전 지정: 테두리에서 안정적인 계약 + 어댑터 (백/포워드 호환 형식).
5) 한도, 할당량 및 청구
소비 정책
요율 제한: 임차인/경로당 '요청/초', 계획 우선 순위가있는 "토큰 버킷".
쿼타: 저장 용량, 객체 수, 메시지/분, 작업/시간.
공정성: 대기열의 "가중 일정" + VIP 근로자 격리.
청구
'테넌트 _ id' (사용 지표) → 인보이스 애그리 게이터 별 카운터.
국경에서의 사용 스냅 샷 (demotency 및 이벤트 손실 보호).
모델: 고정 플랜 + 소비, 후불/선불, 할인 "계층".
6) 보안 및 액세스
인증/인증
'테넌트 _ id', '역할', '스코프' 마크가있는 OIDC/SAML.
RBAC/ABAC-임차인 레벨 역할 (소유자/관리자/독자), 프로젝트/부서 속성
mTLS 및 제한된 토큰을 사용한 서비스 간 서비스.
신뢰 경계
요청 수락 정책: 헤더 서명 확인, nonce/timestamp, 소스 바인딩.
비밀 및 키: 임차인 당 교체, 개별 KMS 상황, 주요 작업 감사.
다중 지역 및 데이터 레지던트: 임차인을 지역으로 고정하고 지역 간 흐름을 제어합니다.
7) "세입자에 의한" 관찰 가능성
추적 및 측정
필요한 태그는 '테넌트 _ id', '플랜', '지역', '엔드 포인트', '상태' 입니다.
임차인 당 SLI/SLO: '가용성', 'p95 대기 시간', '오류 예산'.
세그먼트 별 대시 보드 및 경고 (VIP/규제/신규).
통나무 및 감사
임차인 정책에 따라 변경 불가능한 저장 및 유지로 활동 로그 (누가/무엇을/언제/어디서).
저렴한 보관을 위해 이벤트를 사전 집계하고 세부 사항을 "클릭하여" 복원합니다.
8) 성능과 "시끄러운 이웃"
노이즈 방지 조치
세입자 당 대기열/작업자 수준, CPU 공유 및 IO 비율 제한.
캐시 분리: 키 접두사의 테넌트: {id}:... ', 계획에 따른 TTL, "캐시 스탬프" 로부터 보호.
'테넌트 _ id' 선택성을 기반으로 한 색인 및 쿼리 계획.
콜드 스타트 및 "따뜻한" 수영장
VIP/피크 창을위한 사전 예열.
미터법 신호 (후압/자동 검사) 를 기반으로하는 작업자의 탄성 풀.
9) 다운 타임없이 업그레이드 및 마이그레이드
전략
역 호환 마이그레이션 (확장 → 마이그레이션 → 계약).
"임차인에 의한" 마이그레이션: 진행 상황을 제어하는 배치, 특정 '테넌트 _ id' 에 대한 "일시 정지/롤백".
세입자의 하위 집합에서 샘플링 및 "카나리아" 마이그레이션.
DR 및 사건
세입자 당 RTO/RPO를 사용한 DR 계획; 전역 다운 타임이없는 부분 "읽기 전용 모드".
사건의 격리: '테넌트 _ id' 에 의한 융합, "핫" 테넌트를 소멸시키는 것은 나머지에 영향을 미치지 않습니다.
10) API 및 프로토콜
필수 테넌트 컨텍스트 (스탬프/헤더) 가있는 REST/gRPC.
이벤트 (이벤트 중심): '테넌트' 라는 이름을 가진 주제. {id}. 이벤트 ', 구독을위한 필터 및 ACL.
글로벌 진입 점: L7 게이트웨이는 컨텍스트를 검증하고 한계를 적용하며 임차인의 정책에 따라 PII를 암호화합니다.
11) 임차인 수명주기
1. 프로비저닝: 테넌트 레코드 생성, 키/컨디셔닝 생성, 영역 연결.
2. 활성화: OIDC/SAML 클라이언트 릴리스, 역할/정책 생성, 기본 할당량.
3. 운영: 모니터링, 청구, 플래그/플랜 업데이트.
4. 일시 중지/조절: 데이터 유지/내보내기로 동결
5. 삭제/내보내기: 보존, 모토 볼 백업, 암호화 파쇄.
12) 미니 참조 아키텍처 (언어 체계)
가장자리 (API 게이트웨이): TLS/mTLS, 추출 '테넌트 _ id', 한계, 감사.
제어 비행기: 세입자, 구성 요소, 깃발, 청구, 정치 카탈로그.
데이터 비행기 (서비스): 무국적 서비스, 대기열, 쿼터 작업자; 임차인이 접두사를 붙인 Redis/kv.
스토리지: RLS-DB/개별 체계/DB; 임차인 당 키가있는 KMS; 엔벨로프 암호화가있는 객체 스토리지
관찰 가능성: '테넌트 _ id' 태그로 추적/메트릭/로그, 계획 당 경고.
관리자: 세입자의 하위 집합에서 격리 된 작업 (마이그레이션/백업).
13) 사전 판매 점검표
- 국경과 서비스에서 테넌트 _ id를 정의하는 단일 방법.
- RLS/ACL 정책은 테스트 및 "음수 스크립트" 로 테스트됩니다.
- 쿼타/제한/청구는 실제로로드에서 검증됩니다. "청구 방울" 에 대한 보호 기능이 있습니다.
- 세입자 당 관찰 및 SLO; VIP/규제에 대한 경고.
- 마이그레이션은 호환되며 부분 롤백 및 대출 배치가 있습니다.
- 임차인 당 RTO/RPO가있는 DR 시나리오 및 정기적 인 연습.
- 테넌트 키 암호화, 키 회전 및 키 감사.
- API 계약/이벤트 및 버전화 정책 문서.
14) 전형적인 오류
문제 세입자를 막을 수있는 능력없이 "한 번에 급락 한" 글로벌 마이그레이션.
'테넌트 _ id' in 캐시/큐에 대한 숨겨진 종속성 → 데이터 누출/큐 교차.
컨텍스트 믹싱 ('테넌트 _ id' 없이 실수로 관리자 작업).
"이중 잠금" 이 없음: 데이터베이스에 RLS가없는 서비스 확인 만 해당됩니다.
전체 클러스터 → "잡음 이웃" 및 SLO 위반에 대한 단일 리미터.
dempotency 및 감사 흔적이없는 투명하지 않은 청구.
15) 빠른 전략 선택
엄격한 격리/규제: Silo (별도의 데이터베이스/클러스터), 지역 잠금.
균형 잡힌 효율성: 스키마 당 공유 DB + RLS, 테넌트 당 키.
높은 실시간 트래픽: "가중" 할당량과 VIP 전용 근로자가있는 일반적인 대기열.
많은 사용자 정의: 플래그 + API 어댑터 기능, 우선 순위별로 구성 요소 저장.
결론
멀티 테넌트 핵심은 엔지니어링 경계의 분야입니다. '테넌트 _ id' 의 명시 적 정의, 모든 계층의 엄격한 격리, 관리 할당량 및 투명 청구, 관찰 가능성 및 릴리스 호환성. 설명 된 패턴을 따르면 각 임차인의 안전, 품질 및 변경 속도를 희생하지 않고도 제품을 확장 할 수 있습니다.