싱글스레드가 서버를 돌릴수 있는 이유
JavaScript는 기본적으로 싱글스레드에서 작동하므로, Node.js 서버는 한 번에 하나의 요청을 처리하는 방식으로 동작합니다.
Node.js 자체는 비동기 I/O 처리에 강점을 가지지만, 여러 클라이언트 요청이 몰리면 메인 스레드가 처리할 수 있는 작업에 제한이 생기기 때문에 요청 지연이나 성능 저하가 발생할 수 있습니다.
여기서 Nginx를 프록시 서버로 사용하면 이런 문제를 줄일 수 있습니다. Nginx는 고성능 웹 서버로, 요청을 효율적으로 관리하고 분산하는 역할을 맡습니다. Nginx를 Node.js 서버 앞단에 배치하면 다음과 같은 이점이 있습니다:
- 로드 밸런싱: Nginx가 들어오는 트래픽을 분산하여 여러 Node.js 인스턴스로 전달해 줄 수 있습니다. 이를 통해 요청을 병렬로 처리할 수 있고, 하나의 서버가 과부하되지 않도록 해 줍니다.
- 정적 파일 처리: Nginx가 이미지, CSS, JavaScript 파일과 같은 정적 리소스를 제공하게 하면, Node.js는 동적 요청 처리에만 집중할 수 있어 리소스가 효율적으로 사용됩니다.
- 보안 및 최적화: Nginx는 SSL 종료, 요청 제한, 캐싱 등을 관리하여 서버의 보안을 강화하고 성능을 최적화할 수 있습니다. 이를 통해 Node.js가 더 많은 연결을 처리할 수 있도록 도와줍니다.
즉, Nginx는 Node.js의 싱글스레드 특성으로 인한 부하 분산 문제를 해결하고, 정적 파일을 효율적으로 처리해 전체적인 성능과 안정성을 높여줍니다.
'언어(JS,TS) > JavaScript' 카테고리의 다른 글
javascript [ 백엔드 프레임워크: Nest.js vs Express.js] (0) | 2024.11.19 |
---|---|
JS [test: forEach VS map VS for (속도 차이 및 원인 분석)] (0) | 2024.11.04 |
JavaScript [ compare : Switch vs. If Else ] (0) | 2023.07.19 |
JavaScript [궁금증 : .forEach, .map and .reduce vs for and for..of (속도나 효율비교)] (0) | 2022.09.21 |
JavaScript [ ES6 : 이터레이터(iterator)와 제너레이터(generator) ] (0) | 2022.08.30 |