Skip to content

아키텍처


Lambda 함수의 명령 세트 아키텍처에 따라 Lambda가 함수를 실행하는 데 사용하는 컴퓨터 프로세서의 유형이 결정된다. Lambda는 다음과 같은 명령 세트 아키텍처를 선택할 수 있는 옵션을 제공한다.

  • arm64 - AWS Graviton2 프로세서에 사용되는 64비트 ARM 아키텍처이다. arm64 아키텍처는 대부분의AWS 리전에서 사용할 수 있다.

  • x86_64 - x86 기반 프로세서에 사용되는 64비트 x86 아키텍처이다.


1. arm64 아키텍처를 사용하는 데 따른 이점

arm64 아키텍처(AWS Graviton2 프로세서)를 사용하는 Lambda 함수는 x86_64 아키텍처에서 실행되는 동일한 함수보다 훨씬 우수한 가격 대비 성능을 실현할 수 있다. 고성능 컴퓨팅, 비디오 인코딩 및 시뮬레이션 워크로드와 같은 컴퓨팅 집약적 애플리케이션에는 arm64를 사용하는 것이 좋다.

Graviton2 CPU는 Neoverse N1 코어를 사용하며 Armv8.2(CRC 및 암호화 확장 포함)와 기타 여러 아키텍처 확장을 지원한다.

Graviton2는 vCPU당 더 큰 L2 캐시를 제공하여 메모리 읽기 시간을 줄인다. 따라서 웹 및 모바일 백엔드, 마이크로서비스 및 데이터 처리 시스템의 대기 시간 성능이 향상된다. 또한 Graviton2는 향상된 암호화 성능을 제공하며 CPU 기반 기계 학습 추론의 대기 시간을 개선하는 명령 세트를 지원한다.


2. arm64 아키텍처로의 함수 마이그레이션

arm64 아키텍처로 마이그레이션할 Lambda 함수를 선택할 때, 원활한 마이그레이션을 위해 함수가 다음 요구 사항을 충족하는지 확인한다.

  • 함수가 현재 Lambda Amazon Linux 2 런타임을 사용한다.

  • 배포 패키지에 사용자가 제어하는 오픈 소스 구성 요소 및 소스 코드만 포함되어 있어 사용자가 마이그레이션에 필요한 모든 업데이트를 수행할 수 있다.

  • 함수 코드에 서드 파티 종속 구성 요소가 포함된 경우 각 라이브러리 또는 패키지가 arm64 버전을 제공한다.


3. arm64 아키텍처와의 함수 코드의 호환성

Lambda 함수 코드는 함수의 명령 세트 아키텍처와 호환되어야 한다. 함수를 arm64 아키텍처로 마이그레이션하기 전에 현재 함수 코드와 관련해 다음 사항에 유의한다.

  • 내장된 코드 편집기를 사용하여 함수 코드를 추가한 경우 코드는 수정 없이 두 아키텍처 중 하나에서 실행될 수 있다.

  • 함수 코드를 업로드한 경우에는 대상 아키텍처와 호환되는 새 코드를 업로드해야 한다.

  • 함수가 계층을 사용하는 경우 각 계층이 새로운 아키텍처와 호환되는지 확인한다. 계층이 호환되지 않는 경우 함수를 편집하여 현재 계층 버전을 호환되는 계층 버전으로 바꾼다.

  • 함수가 Lambda 확장을 사용하는 경우 각 확장이 새로운 아키텍처와 호환되는지 확인한다.

  • 함수가 컨테이너 이미지 배포 패키지 유형을 사용하는 경우 함수의 아키텍처와 호환되는 새 컨테이너 이미지를 만들어야 한다.


4. 권장 마이그레이션 단계

Lambda 함수를 arm64 아키텍처로 마이그레이션하려면 다음 단계를 수행하는 것이 좋다.

  1. 애플리케이션 또는 워크로드의 종속 구성 요소 목록을 작성한다. 일반적인 종속 구성 요소는 다음과 같다.

    • 함수가 사용하는 모든 라이브러리와 패키지

    • 컴파일러, 테스트 제품군, 지속적 통합 및 지속적 전달(CI/CD) 파이프라인, 프로비저닝 도구, 스크립트 등, 함수를 빌드, 배포 및 테스트하는 데 사용하는 도구

    • 프로덕션 환경에서 함수를 모니터링하는 데 사용하는 Lambda 확장 및 서드 파티 도구

  2. 각 종속 구성 요소별로 버전을 확인한 다음 arm64 버전을 사용할 수 있는지 확인한다.

  3. 새 환경을 빌드하여 애플리케이션을 마이그레이션한다.

  4. 애플리케이션을 부트스트랩한다.

  5. 애플리케이션을 테스트하고 디버깅한다.

  6. arm64 함수의 성능을 테스트한다. x86_64 버전과 성능을 비교한다.

  7. arm64 Lambda 함수를 지원하도록 인프라 파이프라인을 업데이트한다.

  8. 배포를 프로덕션 환경에 스테이징한다.

예를 들어 별칭 라우팅 구성을 사용하여 함수의 x86 버전과 arm64 버전 간에 트래픽을 분할하고 성능과 대기 시간을 비교한다.


5. 명령 세트 아키텍처 구성

Lambda 콘솔, AWS SDK, AWS Command Line Interface(AWS CLI) 또는 AWS CloudFormation을 사용하여 새 Lambda 함수의 명령 세트 아키텍처를 구성할 수 있다. .zip 아카이브 파일이나 컨테이너 이미지 배포 패키지를 사용하여 함수 코드를 Lambda에 배포할 수 있다.

Lambda는 arm64 아키텍처용으로 다음과 같은 런타임을 제공한다. 이러한 런타임은 모두 Amazon Linux 2 운영 체제를 사용한다.

  • Node.js 12, Node.js 14, Node.js 16

  • Python 3.8, Python 3.9

  • Java 8(AL2), Java 11

  • .NET Core 3.1

  • Ruby 2.7

  • Amazon Linux 2의 사용자 지정 런타임


References