Node.js는 싱글스레드 아니었나요? 워커 스레드? 그건 뭔가요

결론부터 말하자면 Node.js에는 CPU 집약적인 작업을 향상 시키기 위해 worker thread라는 것이 존재합니다.


Java나 Kotlin 같이 일반적인 서버에선 멀티 스레딩을 통해 동시성 프로그래밍을 지원하기 위해 스레드를 사용하고 있습니다. Node.js는 기본적으로 하나의 이벤트 루프 아래서 하나의 스레드로 JS 소스를 실행시키고 있습니다. (요게 싱글 스레드라고 불리는 이유죠!) 덕분에 Node.js에선 동시성 문제에 대한 고려없이 프로그래밍이 가능했고 이는 복잡성을 떨어뜨리는데도 크게 일조했습니다. 그리고 I/O 작업에선 Node.js가 채택한 Non-blocking I/O with Single Thread는 빠르기도 합니다.


하지만 CPU 집약적인 일을 다릅니다. Node.js가 실행하는 코드에 엄청나게 많은 for문과 반복계산이 있다고 가정해봅시다. 그렇다면 Single Thread인 Node.js에선 해당 for문이 완료될 때까지 기다릴 수 밖에 없습니다. CPU 작업만 별도 스레드에서 실행해 병렬적으로 실행한다면 전체 구문실행이 빨라질 것입니다. 이러한 CPU 집약적인 작업을 도와주기 위해 worker thread 모듈이 등장했는데요! 아래 글을 보시면 어떤 식으로 동작하는지 어느 정도 아실 수 있을 것입니다. Node.js에서 CPU 집약적인 일을 처리하고 최적화를 고민하신다면 좋은 접근법이 될 수 있을 것 같습니다.


참고. https://inpa.tistory.com/entry/NODE-📚-workerthreads-모듈

[NODE] 📚 Worker_Threads 모듈 (멀티 쓰레드 구현)

Inpa Dev 👨‍💻

[NODE] 📚 Worker_Threads 모듈 (멀티 쓰레드 구현)

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 1월 29일 오전 11:19

 • 

저장 12조회 1,716

댓글 0

    함께 읽은 게시물

    제가 쓰고 있는 책의 표지가 나왔어요!

    ... 더 보기

    조회 836


    < 일 잘하는 PM은 문제의 ‘이름’부터 정의한다 >

    1

    ... 더 보기

     • 

    댓글 1 • 저장 3 • 조회 250


    성장에는 방향이 필요하다

    당신이 지금 있는 자리에서 앞으로 한 발자국 걸었다고 생각해 보자. 당신은 한 발자국만큼 ‘나아간’ 것인가? 그런데, 만약 당신이 가야 하는 곳이 당신의 등 뒤에 있다면 어떨까? 그렇다면 당신은 한 발자국만큼 ‘물러선’ 것이 아닌가?

    ... 더 보기

    앞으로의 코테는 설명을 주고 코드를 짜라고 하는 것이 아니라, 코드를 주고 설명을 하라는 것이 유효할 것이다.


    내 경우는 이미 그렇게 하고 있는데, 요구사항을 주고 개발을 요청. 결과물이 요구사항대로 개발이 잘 되었다면, 다음 단계로 제출한 코드를 리뷰하며 설명을 요청한다.


    ... 더 보기

     • 

    댓글 1 • 저장 18 • 조회 2,486


    🧭 우리만의 디자인 시스템, 어디서부터 시작할까?

    ... 더 보기

    우리만의 디자인 시스템, 어디서부터 시작할까? · DaleStudy/daleui · Discussion #392

    GitHub

    우리만의 디자인 시스템, 어디서부터 시작할까? · DaleStudy/daleui · Discussion #392

    < 내가 뭘 원하는지 도무지 모를 때 해야 할 단 한 가지 >

    1. 하고 싶다고 생각한 것은 사실 당신의 마음속에서부터 나온 게 아니라, 상식이나 가족, 또는 친구의 기대에 영향받은 것이 많다.

    ... 더 보기