2017-03-16 3 views
1

AWS Lambda와 NodeJS를 사용하는 Serverless 애플리케이션에 대해 연구하고 있습니다.백엔드 응용 프로그램에 Webpack을 사용하면 성능이 저하됩니까?

Webpack을 사용하여 모든 NodeJS 백엔드 코드를 단일 JavaScript 파일로 묶고 트리 떨림과 같은 기능을 사용하려고합니다. 내가 노드가 작동을 이해하는 방식에 대한

, 수입 (또는 필요는) 런타임에 해결됩니다.

단일 파일에서 모든 것을 번들하는 것은 코드 실행 중 해결 된 JS 파일 만로드하는 대신 항상 전체 JS 파일을로드하여 앱의 성능에 영향을 미칩니다. 작은 애플리케이션의 경우 영향은 작지만 내 앱이 커질수록 번들도 확장됩니다.

각 람다 함수마다 하나씩 여러 묶음을 만들 수 있지만 내 질문은 다음과 같습니다. 내 관심사가 유효합니까?

단순한 NodeJS 컨텍스트에서 모든 파일을 하나의 파일에 번들링하면 소량으로도 성능에 영향을 줍니까?

참고 : AWS 람다 입니다. ES5를 지원합니다. 따라서 웹 팩을 사용하면 트랜스 패일 링에 영향을주지 않습니다.

답변

1

반대로 람다의 "예열 중"성능을 향상시킬 수 있다고 생각합니다.

실제로 람다가 처음 호출되거나 드물게 호출 될 때 컨테이너는 초기화 될 것이고 require()이 노드 모듈을로드 할 때입니다. require()은 비동기식이며 can search for files in many places이므로로드 할 파일이 많으면이 호출 속도가 느려질 수 있습니다.

"예열"이 완료되면 다음 호출을 위해 모듈이 이미로드되고 단일 파일을 사용하면 더 이상 이점이 없습니다.

일부 동적 모듈 (예 : require()의 변수로 변수 사용)을 포함 할 수 있기 때문에 브라우저에서 실행되지 않아야하는 노드 모듈 (예 : ORM)과 함께 Webpack을 사용하는 데 문제가있을 수 있습니다. .


작은 많은 파일에 require()를 호출에 비해 큰 걱정 안 아주 큰 파일을 require()를 호출 요약합니다. 그러나 Webpack을 사용하면 복잡성이 증가 할 수 있으며 람다가 매우 자주 워밍업 할 필요가 없다면 아무런 차이가 없습니다.