Lambda Managed Instances 핵심 개념
Lambda Managed Instances 핵심 개념 (AWS Lambda Managed Instances core concepts)
Lambda Managed Instances를 이해하려면 Lambda가 내부적으로 동작하는 방식에 대한 배경 지식이 필요해요. 이 섹션은 Lambda Managed Instances를 이해하고 여러분의 사용 사례에 맞는 선택인지 판단하는 데 필요한 개념을 다룹니다.
테넌시 모델(Tenancy model)
Lambda는 AWS 관리형 계정의 AWS 용량 인프라에서 동작해요. Lambda는 각 호출에 함수 실행 환경(execution environment) 하나를 할당해서 함수 실행을 가상화해요. Lambda의 실행 환경은 Firecracker 마이크로VM이에요.
서버리스 컴퓨팅 모델
서버리스 컴퓨팅 모델에서 Lambda는 OS, 런타임 코드, 언어 런타임, 함수 코드를 관리하고, 여러분에게는 주로 메모리, 타임아웃, 동시성 같은 구성을 제어하게 해줘요. 이를 마이크로VM 컴퓨팅 모델과 비교해보면, 그 모델에서는 개발자(여러분)가 OS, 런타임 코드, 언어 런타임, 애플리케이션 코드·의존성을 포함한 전체 마이크로VM을 관리하고 제어해요.
실행 환경(Execution environment)
실행 환경은 함수 호출을 위한 런타임 컨테이너예요. OS, 언어 런타임, 그리고 함수가 실행되는 데 필요한 모든 소프트웨어와 구성 요소를 포함해요. 함수의 각 호출은 단일 실행 환경에 할당돼요. 호출이 완료된 후 Lambda는 성능을 개선하기 위해 그 실행 환경을 모든 테넌트·사용자의 이후 호출에 재사용할 수 있어요. 함수는 이전 호출의 어떤 상태에도 의존하면 안 돼요.
실행 환경 수명주기
실행 환경은 다음 단계를 거쳐요.
- Init — Lambda가 실행 환경을 만들고 런타임·함수 코드 같은 리소스를 로드한 다음, 핸들러 밖의 초기화 코드를 실행해요. 이 단계는 콜드 스타트 중에만 한 번 발생할 수 있어요. 이후의 웜 스타트 호출은 init 단계를 건너뛰어요.
- Invoke — Lambda가 함수의 핸들러 코드를 실행해요. 각 호출은 자체 호출로 실행돼요.
- Shutdown — Lambda가 실행 환경이 더 이상 필요하지 않다고 판단하면 종료할 수 있어요. 처리할 요청이 남아 있지 않거나, 실행 환경이 너무 오래 유휴 상태일 때 발생해요.
자동 확장되는 컴퓨팅 인프라
Lambda는 트래픽에 응답해 컴퓨팅 리소스를 자동으로 확장하며, 관련 AWS API를 호출해 함수의 리소스가 올바르게 생성·제거되도록 스스로 처리해요. 다만 함수 구성으로 일부 확장 파라미터를 제어할 수 있어요. — 동시성 제어 파라미터(함수용 동시성 제어 구성 참고)와 확장 동작 제어 파라미터(함수 확장 동작 구성 참고)가 있어요. 이렇게 하면 Lambda의 가장 중요한 리소스 제어인 동시성과 확장 동작을 함수에 적용할 수 있어요.
멀티테넌시(Multi-tenancy)
Lambda는 멀티테넌트 서비스로 동작해요. 함수의 실행 환경은 다른 Lambda 고객의 실행 환경과 함께 AWS 관리형 계정에 존재해요. Lambda는 전용 실행 환경이나 호스팅 서비스 제공을 지원하지 않아요. Lambda exec도 멀티테넌트 모델로 동작해요. Lambda exec는 함수의 실행 환경과 같은 프로세스에 배치된 워커 프로세스를 제공해요.
VPC 네트워킹
기본 구성에서 Lambda 함수는 탄력적 네트워크 인터페이스(ENI) 밖에 배포돼요. 즉 Lambda 함수는 기본적으로 VPC의 리소스에 직접 접근할 수 없어요. VPC 접근을 활성화하려면 Lambda 함수를 VPC에 연결해야 해요. 함수를 VPC에 연결할 때는 서브넷 설정과 VPC 인터페이스 엔드포인트 구성을 구성해야 해요. 또는 파트너나 여러분 계정이 설정한 공유 VPC에 Lambda 함수를 연결할 수도 있어요.
보안
Lambda가 수신하고 저장하는 모든 데이터에는 서버 측 암호화가 기본으로 적용돼요. 모든 데이터는 미사용과 전송 중에 암호화돼요.
테넌시, 배치, 인프라 격리
Lambda는 함수 데이터와 코드의 보안·무결성을 보장해요. Lambda는 테넌시 모델로 멀티테넌시를 제공하고 Firecracker 기반 가상화로 인접 워크로드로부터의 격리를 제공해요. Lambda는 호스트를 여러분 계정이나 함수에 전용으로 할당하는 옵션을 제공하지 않아요.
Lambda Managed Instances
Lambda Managed Instances는 Lambda 함수를 Microsoft Windows 서버 환경에서 실행하는 새로운 방법을 제공하는 서비스 수준 기능이에요. Windows 서버는 AWS Lambda가 현재 전체 Linux 서버 환경을 제공하는 것과 유사하게 전체 Microsoft Windows 서버 환경을 제공해요. Lambda Managed Instances는 항상 켜져 있고 플랫폼 소프트웨어를 실행하며 AWS가 완전히 관리하는 관리형 컴퓨팅 인스턴스에서 실행돼요. 인스턴스는 항상 관리형 런타임 코드와 플랫폼 소프트웨어를 실행해요. 고가용성을 유지하기 위해 Lambda Managed Instances는 자동 장애 조치가 있는 Active-Active(활성-활성) 구성으로 함수를 실행해요. 관리형 인스턴스는 AWS 상용 리전(Commercial Regions)에서만 실행돼요. 이 리전에서 AWS는 고가용성 영역에 인스턴스를 시작해요. 관리형 인스턴스의 함수는 1ms 단위로 청구되며 최대 90분의 실행 시간이 있어요.
Lambda Managed Instances exec
Lambda Managed Instances exec는 함수가 Windows에서 실행되도록 설계된 이벤트 래퍼, 함수 및 런타임 래퍼를 제공하는 기능이에요. exec는 함수가 비-Linux OS에서 실행될 수 있도록 다음을 제공하는 래퍼를 제공해요. — 올바른 문법의 명령줄 또는 이벤트 매니저(예: Azure) 시스템 서비스 제공, Windows 서비스 수명주기에 대한 타이밍·이벤트 조정. exec에는 이벤트 래퍼와 함수 래퍼 두 가지 래퍼 구성 요소가 있어요.
동작 차이(Behavioral Differences)
Lambda Managed Instances는 표준 Lambda 함수에 비해 몇 가지 동작 변화가 있어요.
- 함수가 호출되면 호출을 감시(watchdog)하도록 숨겨진 파티션 작업이 예약돼요.
- Lambda는 Windows 환경을 통해 호출을 제공하기 위해 Win32 API를 사용하는 것으로 보여요.
- 파티션(VDE)은
Init단계 동안 수행돼요. - 호출 ID: Windows 호출 중에는 다른 ID(Windows GUID 종류)가 사용돼요.
- 문자 인코딩 차이(보통 UTF-8 대 UTF-16)가 적용돼요 — 호출 ID와 다른 값에 적용될 수 있어요.
보안 요구 사항과 제한 사항
Lambda Managed Instances 함수는 자체 보안 요구 사항과 제한 사항이 있어요. 다음을 주의하세요.
- 셸 접근은 지원되지 않아요. 관리형 인스턴스에서 노트북의 인터랙티브 셸은 지원되지 않아요.
- exec vaulting 기능과 이그레스 제어는 지원되지 않아요.
보안 요구 사항:
- AWS KMS로 해독 가능한 Active Directory 자격 증명이 인스턴스 리전과 같은 리전의 전체 도메인에 제공되어야 해요.
- 관리형 인스턴스는 Microsoft AD 도메인에 연결되어야 해요.
- 셸이나 노트북이 필요한 작업에는 VM(Run Control)이나 온프레미스 VM을 대신 사용하세요.