기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amplify 애플리케이션의 빌드 인스턴스 구성
Amplify Hosting은 애플리케이션의 빌드 인스턴스에 필요한 CPU, 메모리, 디스크 공간을 제공할 수 있는 구성 가능한 빌드 인스턴스 크기를 지원합니다. 이 기능이 출시되기 전에 Amplify는 메모리 8GiB와 vCPU 4개의 고정 크기 빌드 인스턴스만 제공했습니다.
Amplify는 Standard, Large, XLarge의 세 가지 빌드 인스턴스 유형을 지원합니다. 인스턴스 유형을 지정하지 않으면 Amplify는 기본적으로 Standard 인스턴스를 사용합니다. Amplify 콘솔 AWS CLI, 또는 SDKs.
빌드 인스턴스 유형별 비용은 빌드 분 단위로 계산됩니다. 요금에 대한 자세한 내용은 AWS Amplify 요금
다음 표에서는 각 빌드 인스턴스 유형의 컴퓨팅 사양을 설명합니다.
빌드 인스턴스 유형 |
vCPU |
Memory |
디스크 공간 |
|---|---|---|---|
Standard |
4개의 vCPU |
8GiB |
128GB |
Large |
vCPUs |
16GiB |
128GB |
XLarge |
vCPUs |
72GiB |
256GB |
빌드 인스턴스 유형 이해
빌드 인스턴스 유형 설정은 애플리케이션 단위로 구성되며, 애플리케이션의 모든 브랜치에 적용됩니다. 빌드 인스턴스 유형과 관련된 주요 사항은 다음과 같습니다.
-
애플리케이션에 구성한 빌드 인스턴스 유형은 자동 생성된 브랜치와 pull 요청 미리 보기에도 자동으로 적용됩니다.
-
동시 작업 서비스 할당량은의 모든 빌드 인스턴스 유형에 적용됩니다 AWS 계정. 예를 들어 동시 작업 제한이 5인 경우 AWS 계정내 모든 인스턴스 유형을 합쳐 최대 5개의 빌드를 동시에 실행할 수 있습니다.
-
빌드 인스턴스 유형별 비용은 빌드 분 단위로 계산됩니다. 빌드 인스턴스 할당 과정에서 빌드 시작 전 추가 오버헤드 시간이 소요될 수 있습니다. 특히 XLarge와 같은 대형 인스턴스의 경우, 오버헤드 시간 때문에 빌드 시작 전 지연이 발생할 수 있습니다. 다만 요금은 오버헤드 시간이 아닌 실제 빌드 시간만 기준으로 청구됩니다.
빌드 인스턴스 유형은 새 애플리케이션 생성 시 구성할 수 있으며, 기존 애플리케이션에서도 업데이트할 수 있습니다. Amplify 콘솔에서 이 설정을 구성하는 방법은 Amplify 콘솔에서 빌드 인스턴스 유형 구성 섹션을 참조하세요. SDK를 사용하여 설정을 업데이트할 수도 있습니다. 자세한 내용은 Amplify API 참조의 CreateApp 및 UpdateApp API를 참고하세요.
사용자 계정에 이미 존재하는 애플리케이션이 사용자 지정 가능한 빌드 인스턴스 기능 릴리스 이전에 생성된 경우, 기본 Standard 인스턴스 유형을 사용합니다. 기존 애플리케이션의 빌드 인스턴스 유형을 업데이트하면, 업데이트 이전에 대기 중이거나 진행 중인 빌드는 기존 구성된 인스턴스 유형을 사용합니다. 예를 들어, Amplify에main인 브랜치가 배포된 기존 애플리케이션에서 빌드 인스턴스 유형을 Standard에서 Large로 변경하면, main 브랜치에서 새로 시작하는 빌드는 Large 빌드 인스턴스 유형을 사용합니다. 그러나 빌드 인스턴스 유형을 업데이트할 때 진행 중인 모든 빌드는 계속해서 표준 인스턴스에서 실행됩니다.
Amplify 콘솔에서 빌드 인스턴스 유형 구성
새 Amplify 애플리케이션을 생성할 때 다음 절차에 따라 빌드 인스턴스 유형을 구성합니다.
새 애플리케이션의 빌드 인스턴스 유형을 구성하려면
-
에 로그인 AWS Management Console 하고 Amplify 콘솔
을 엽니다. -
모든 앱 페이지에서 새 앱 생성을 선택합니다.
-
Amplify로 빌드 시작 페이지에서 Git 리포지토리 공급자를 선택하고 다음을 선택합니다.
-
리포지토리 브랜치 추가 페이지에서 다음을 수행합니다.
-
최근 업데이트된 리포지토리 목록에서 연결할 리포지토리 이름을 선택합니다.
-
브랜치 목록에서 연결할 리포지토리 브랜치의 이름을 선택합니다.
-
다음을 선택합니다.
-
-
앱 설정 페이지에서 고급 설정 섹션을 엽니다.
-
빌드 인스턴스 유형에서 원하는 인스턴스 유형을 목록에서 선택합니다.
-
Node.js 런타임 기반 애플리케이션을 배포하는 경우, 대형 인스턴스를 효과적으로 활용할 수 있도록 힙 메모리 크기를 구성합니다. 앱 설정 페이지에서 환경 변수 설정 또는 빌드 설정 업데이트를 통해 구성할 수 있습니다. 자세한 내용은 대형 인스턴스 유형을 활용하기 위한 애플리케이션 힙 메모리 구성 단원을 참조하십시오.
-
환경 변수 설정
고급 설정의 환경 변수 섹션에서 새로 추가를 선택합니다.
키에
NODE_OPTIONS를 입력합니다.-
값에
--max-old-space-size=를 입력합니다.memory_size_in_mbmemory_size_in_mb는 원하는 힙 메모리 크기(메가바이트)로 대체합니다.
-
빌드 설정 업데이트
빌드 설정 섹션에서 YML 파일 편집을 선택합니다.
preBuild단계에 다음 명령을 추가합니다.memory_size_in_mb는 원하는 힙 메모리 크기(메가바이트)로 대체합니다.export NODE_OPTIONS='--max-old-space-size=memory_size_in_mb'저장을 선택합니다.
-
-
다음을 선택합니다.
-
검토 페이지에서 저장 및 배포를 선택합니다.
기존 Amplify 콘솔의 빌드 인스턴스 유형을 구성하려면 다음 절차를 따릅니다.
기존 애플리케이션의 빌드 인스턴스 유형을 구성하려면
-
에 로그인 AWS Management Console 하고 Amplify 콘솔
을 엽니다. -
빌드 인스턴스 유형을 구성하려는 앱을 선택합니다.
-
탐색 창에서 호스팅을 선택한 다음 빌드 설정을 선택합니다.
-
빌드 설정 페이지의 고급 설정 섹션에서 편집을 선택합니다.
-
설정 편집 페이지의 빌드 인스턴스 유형에서 원하는 인스턴스 유형을 목록에서 선택합니다.
-
저장을 선택합니다. 이 변경 사항은 다음 애플리케이션 배포 시 적용됩니다.
-
(선택 사항) 업데이트된 변경 사항을 즉시 배포하려면 다음을 수행합니다.
-
탐색 창에서 개요를 선택합니다.
-
애플리케이션의 개요 페이지에서 재배포할 브랜치를 선택합니다.
-
배포 페이지에서 재배포할 배포(예: 가장 최근 배포)를 선택합니다. 그런 다음 이 버전 재배포를 선택합니다. 새 배포가 시작됩니다.
-
배포가 완료되면, 애플리케이션의 빌드 설정에서 해당 브랜치가 업데이트된 빌드 인스턴스 유형을 사용하고 있음을 확인할 수 있습니다.
-
대형 인스턴스 유형을 활용하기 위한 애플리케이션 힙 메모리 구성
메모리를 많이 사용하는 애플리케이션을 빌드하는 경우, 이 섹션을 통해 대형 인스턴스 유형을 효과적으로 활용할 수 있도록 애플리케이션을 구성하는 방법을 이해할 수 있습니다. 프로그래밍 언어와 프레임워크는 런타임 중 애플리케이션의 메모리 요구 사항을 관리하기 위해 동적 메모리(힙 메모리라고도 함)를 할당하는 방식에 종종 의존합니다. 힙 메모리는 런타임 환경에서 요청하고 호스트 운영 체제에서 할당합니다. 기본적으로 런타임 환경은 애플리케이션에서 사용할 수 있는 최대 힙 크기에 제한을 둡니다. 즉, 호스트 운영 체제 또는 컨테이너에 사용 가능한 메모리가 더 많더라도 힙 크기를 초과한 추가 메모리는 애플리케이션에서 사용할 수 없습니다.
예를 들어, JavaScript Node.js v8 런타임 환경은 호스트 메모리 크기를 비롯한 여러 요소에 따라 기본 힙 크기 제한을 적용합니다. 그 결과, Standard 및 Large 빌드 인스턴스는 기본 Node.js 힙 크기가 2,096MB이며, XLarge 인스턴스의 기본 힙 크기는 4,144MB입니다. 따라서 기본 Node.js 힙 크기를 사용하는 상태에서 6,000MB 메모리를 필요로 하는 애플리케이션을 어떤 Amplify 빌드 인스턴스에서도 빌드하려고 하면 메모리 부족 오류로 인해 빌드가 실패하게 됩니다.
Node.js의 기본 힙 크기 제한을 해결하려면 다음 중 하나를 수행할 수 있습니다.
-
Amplify 애플리케이션에서
NODE_OPTIONS환경 변수를--max-old-space-size=값으로 설정합니다.memory_size_in_mbmemory_size_in_mb에는 원하는 힙 메모리 크기(메가바이트)를 입력합니다.지침은 환경 변수 설정 섹션을 참조하세요.
-
Amplify 애플리케이션의 빌드 사양에서
preBuild단계에 다음 명령을 추가합니다.export NODE_OPTIONS='--max-old-space-size=memory_size_in_mb'빌드 사양은 Amplify 콘솔 또는 프로젝트 리포지토리의
amplify.yml파일에서 업데이트할 수 있습니다. 지침은 Amplify 애플리케이션의 빌드 설정 구성 섹션을 참조하세요.다음은 React 프론트엔드 애플리케이션을 빌드하기 위해 Node.js 힙 메모리를 7,000MB로 설정하는 Amplify 빌드 사양 예제입니다.
version: 1 frontend: phases: preBuild: commands: # Set the heap size to 7000 MB - export NODE_OPTIONS='--max-old-space-size=7000' # To check the heap size memory limit in MB - node -e "console.log('Total available heap size (MB):', v8.getHeapStatistics().heap_size_limit / 1024 / 1024)" - npm ci --cache .npm --prefer-offline build: commands: - npm run build artifacts: baseDirectory: build files: - '**/*' cache: paths: - .npm/**/*
대형 인스턴스 유형을 효과적으로 활용하려면 충분한 힙 메모리 크기를 구성하는 것이 중요합니다. 메모리를 많이 사용하는 애플리케이션에 작은 힙 크기를 구성하면 빌드가 실패할 가능성이 큽니다. 애플리케이션 런타임이 예기치 않게 중단될 수 있기 때문에, 빌드 로그에 메모리 부족 오류가 직접적으로 표시되지 않을 수도 있습니다. 호스트 메모리와 동일한 크기의 힙을 구성하면, 호스트 운영 체제가 다른 프로세스를 교체하거나 종료하여 빌드 프로세스가 중단될 수 있습니다. 참고로, Node.js는 약 2,000MB의 메모리가 있는 시스템에서는 다른 용도를 위해 일부 메모리를 남겨두기 위해 최대 힙 크기를 1,536MB로 설정할 것을 권장합니다.
최적의 힙 크기는 애플리케이션의 요구와 리소스 사용량에 따라 달라집니다. 메모리 부족 오류가 발생하는 경우, 중간 수준의 힙 크기부터 시작한 후 필요에 따라 점차 늘리도록 합니다. 가이드라인을 제시하면, Standard 인스턴스 유형은 6,000MB, Large 인스턴스 유형은 12,000MB, XLarge 인스턴스 유형은 60,000MB부터 시작하는 것이 좋습니다.