피드로 돌아가기
Dev.toDevOps
원문 읽기
AWS Amplify의 숨겨진 제약 해결을 통한 빌드 최적화 및 런타임 안정성 확보
AWS Amplify Looks Simple, Until It Is Not
AI 요약
Context
AWS Amplify의 추상화된 배포 파이프라인이 제공하는 편의성과 실제 런타임 환경 간의 괴리로 인한 병목 발생. 특히 Next.js SSR 및 pnpm 같은 현대적 빌드 도구 적용 시 아티팩트 크기 제한과 파일 시스템 구조 불일치로 인한 배포 실패 및 런타임 에러 직면.
Technical Solution
- Zip/Unzip 오버헤드와 npm ci의 초기화 특성에 따른 캐시 기능 제거를 통한 빌드 시간 단축
- Next.js standalone 모드 설정을 통한 불필요한 node_modules 배제 및 220MB 아티팩트 크기 제한 준수
- pnpm의 Symlink 구조와 Amplify 런타임 간의 불일치를 해결하기 위해 .npmrc에 node-linker=hoisted 설정 적용
- 런타임 모듈 참조 오류 방지를 위해 --shamefully-hoist 플래그를 통한 의존성 평탄화 수행
- 고도화된 프로젝트 규모의 경우 ECS 기반 Container 아키텍처로의 전환을 통한 제약 사항 근본적 해결
실천 포인트
- Amplify 사용 시 amplify.yml 내 cache 섹션 삭제 여부 검토 - Next.js 프로젝트의 next.config.js 내 output: 'standalone' 설정 확인 - pnpm 도입 시 .npmrc 내 node-linker=hoisted 설정 및 --shamefully-hoist 옵션 적용 여부 체크 - 빌드 결과물(Artifact) 크기가 220MB를 초과하는지 모니터링 및 의존성 감사 수행