테넌트 격리(Tenant isolation)

테넌트 격리(Tenant isolation)

개별 최종 사용자나 테넌트가 Lambda 함수를 호출할 때 격리된 요청 처리가 필요하다면 테넌트 격리(tenant isolation) 모드를 사용해요. 이 기능은 테넌트별 코드나 데이터를 처리하는 멀티테넌트 애플리케이션(예: 워크플로 자동화나 코드 실행을 위한 SaaS 플랫폼)을 구축하는 것을 단순화해요. 테넌트별 함수 리소스와 요청 라우팅 로직을 직접 관리할 필요가 없어지거든요.

멀티테넌트 애플리케이션은 개별 테넌트나 최종 사용자를 위해 코드를 실행하거나 데이터를 처리할 때 엄격한 격리 요구 사항이 있어요. 테넌트 격리 모드에서 Lambda는 고객이 지정한 테넌트 식별자로 요청을 기본 함수 실행 환경으로 라우팅해서, 함수의 실행 환경이 지정된 최종 사용자나 테넌트의 호출을 서빙하는 데만 사용되도록 보장해요. Lambda의 함수 실행 환경은 Firecracker 가상화로 워크로드 격리를 제공해요.

테넌트 격리 모드를 쓰는 함수가 테넌트 식별자와 함께 호출을 받으면, Lambda는 먼저 그 테넌트 식별자와 연결된 사용 가능한 실행 환경을 찾아요. 실행 환경이 없으면 Lambda가 그 테넌트에 새 실행 환경을 만들고 할당해요. 지정된 테넌트 식별자로 함수 호출이 확장되면 Lambda는 필요에 따라 새 실행 환경을 찾거나 만들어요.

테넌트 격리를 사용하는 방법은 Lambda 함수에 테넌트 격리 활성화하기를 참고하세요. 코드에서 테넌트 컨텍스트에 접근하는 방법은 Lambda 함수 코드에서 테넌트 식별자 접근하기를 참고하세요. 테넌트 격리 함수를 모니터링하려면 테넌트 격리로 Lambda 함수 모니터링하기를 참고하세요. 문제 해결은 Lambda 함수의 테넌트 격리 트러블슈팅을 참고하세요.

Topics

출처: AWS Lambda 개발자 안내서

본문

테넌트 격리 모드를 사용해야 할 때

단일 Lambda 함수로 여러 최종 사용자나 테넌트를 서빙하면서, 개별 테넌트의 호출 처리에 사용되는 실행 환경이 서로 격리되도록 보장해야 할 때 테넌트 격리 모드를 사용해요. 이 엄격한 실행 환경 격리는 다음을 요구하는 멀티테넌트 애플리케이션에 필요해요.

  • 최종 사용자가 제공한 코드 실행 — 개별 테넌트별로 별도의 실행 환경을 유지하면 잘못되거나 악의적인 사용자 제공 코드 실행의 영향을 제한할 수 있어요.
  • 테넌트별 데이터 처리 — 개별 테넌트별로 별도의 실행 환경을 유지하면 민감한 테넌트별 데이터가 다른 테넌트에 노출되는 것을 막을 수 있어요.

같은 테넌트의 여러 호출 요청은 같은 함수 실행 환경을 재사용할 수 있어서, 지연 시간에 민감한 애플리케이션의 콜드 스타트를 줄이고 응답 시간을 개선할 수 있어요.

지원 기능과 제한 사항

테넌트 격리 모드는 함수 URL, 프로비저닝된 동시성(provisioned concurrency), SnapStart를 사용하는 함수에서는 지원되지 않아요. 테넌트 격리 함수에는 동기식 호출, 비동기식 호출, 또는 Amazon API Gateway를 이벤트 트리거로 사용해 요청을 보낼 수 있어요.

지원 AWS 리전

테넌트 격리 모드는 아시아 태평양(뉴질랜드)을 제외한 모든 상용 리전(commercial Region)에서 지원돼요.

고려 사항

Lambda 함수에서 테넌트 격리를 사용할 때 다음을 명심하세요.

  • 불변 구성(Immutable configuration) — 테넌트 격리는 불변 함수 속성이에요. 함수를 만들 때만 활성화할 수 있어요.
  • 필수 tenant-id 파라미터 — 테넌트 격리 모드를 쓰는 함수는 tenant-id 파라미터와 함께 호출되어야 해요. 이 파라미터를 생략하면 함수 호출이 실패해요.
  • 실행 역할이 모든 테넌트에 적용 — 모든 테넌트의 호출은 Lambda 함수의 실행 역할(execution role)에 정의된 권한을 사용해요.
  • 동시성 — 테넌트 격리를 사용할 때 함수의 동시성(concurrency)이나 스케일링 동작에는 변화가 없어요. Lambda는 함수에 대해 구성된 동시 실행(concurrent executions) 1,000개마다 테넌트 격리된 실행 환경(활성 또는 유휴) 2,500개의 한도를 부과해요.

가격

Lambda가 새 테넌트 격리 실행 환경을 만들 때 요금이 부과돼요. 가격은 함수에 할당하는 메모리(memory) 용량과 사용하는 CPU 아키텍처에 따라 달라져요. 자세한 내용은 AWS Lambda pricing을 참고하세요.

격리 모드

다음 표는 테넌트 격리가 있는 Lambda 함수와 없는 Lambda 함수의 차이를 보여줘요.

기능 테넌트 격리 있음 테넌트 격리 없음
격리 유형 테넌트 수준 격리 함수 수준 격리
환경 재사용 실행 환경이 서로 다른 테넌트 간에 절대 재사용되지 않음 실행 환경이 같은 함수의 호출들 사이에 재사용될 수 있음
데이터 격리 다른 테넌트의 데이터에 접근할 수 없음 같은 함수 버전의 이전 호출 데이터에 접근할 수 있을 수 있음
콜드 스타트 테넌트별 환경 때문에 더 많은 콜드 스타트 환경 재사용 때문에 더 적은 콜드 스타트
가격 표준 Lambda 가격에 더해 추가 요금 표준 Lambda 가격

더 알아보기 (Learn more)