본문 바로가기

언어(JS,TS)/JavaScript

JS [study: 싱글스레드가 서버를 돌릴수 있는 이유 (nginx를 사용하는 이유)

싱글스레드가 서버를 돌릴수 있는 이유

JavaScript는 기본적으로 싱글스레드에서 작동하므로, Node.js 서버는 한 번에 하나의 요청을 처리하는 방식으로 동작합니다.

Node.js 자체는 비동기 I/O 처리에 강점을 가지지만, 여러 클라이언트 요청이 몰리면 메인 스레드가 처리할 수 있는 작업에 제한이 생기기 때문에 요청 지연이나 성능 저하가 발생할 수 있습니다.

 

여기서 Nginx를 프록시 서버로 사용하면 이런 문제를 줄일 수 있습니다. Nginx는 고성능 웹 서버로, 요청을 효율적으로 관리하고 분산하는 역할을 맡습니다. Nginx를 Node.js 서버 앞단에 배치하면 다음과 같은 이점이 있습니다:

  1. 로드 밸런싱: Nginx가 들어오는 트래픽을 분산하여 여러 Node.js 인스턴스로 전달해 줄 수 있습니다. 이를 통해 요청을 병렬로 처리할 수 있고, 하나의 서버가 과부하되지 않도록 해 줍니다.
  2. 정적 파일 처리: Nginx가 이미지, CSS, JavaScript 파일과 같은 정적 리소스를 제공하게 하면, Node.js는 동적 요청 처리에만 집중할 수 있어 리소스가 효율적으로 사용됩니다.
  3. 보안 및 최적화: Nginx는 SSL 종료, 요청 제한, 캐싱 등을 관리하여 서버의 보안을 강화하고 성능을 최적화할 수 있습니다. 이를 통해 Node.js가 더 많은 연결을 처리할 수 있도록 도와줍니다.

즉, Nginx는 Node.js의 싱글스레드 특성으로 인한 부하 분산 문제를 해결하고, 정적 파일을 효율적으로 처리해 전체적인 성능과 안정성을 높여줍니다.