NodeJs 잠깐 생각정리

항상 멀티쓰레드환경에서 개발을 하다가 node.js를 개발하다보니 궁금점들이 생긴다.

궁금점?

  1. 싱글스레드다
  2. was는 멀티스레드 환경! 노드는 어떻게 싱글스레드로 처리를 해야하는가?

다양한 문서와 혼자 공부를 하면서 느낀점을 간단히 정리하면 아래와 같다

싱글 스레드 - 이벤트 루프방식

진입점이 하나! 발생한 모든 이벤트들을 줄세워서 처리!

즉 node.js의 작동원리를 햄버거가게로 생각하면 된다.
아래의 조건들이 있다면

  1. 주문하는사람
  2. 주문받는사람 한명
  3. 패티굽는사람

주문하는 사람을 유저로 생각하자!
주문받는사람 한명이 싱글스레드라 생각한다. 주문(이벤트 발생)이 들어오면 패티굽는사람(백단 스레드)로 이벤트를 넘긴다.

즉, 수많은! 주문이 들어온다하더라도 이벤트를 줄세우고 주문을 받기만 하면된다.(기본적으로 백단 스레드는 4개, but 환경변수를 통해 늘릴수 있다는 점!)

좀 더 발전된 방향의 개발을 하려면?

서버 개발자라면! IO걱정을 하며 개발을 진행하게 된다. 데이터베이스에 접근할때도 Join을 남발을 하게 되면 IO가 더 커진다. 항상 비용을 생각하며 개발을 진행을 하는 습관을 가져야한다. 보통 하드웨어 성능을 빵빵하게 해서 하면 해결이 되긴하지만.. 그건 너무 비양심적인 행동이라 생각한다…
그렇다면! nodeJs로 개발을 진행하게 된다면! 좀더 서비스로직 개선에 관련하여 더 많은 생각을 해야한다 판단이된다. 노력해야할점이다…

지금까지 느낀점을.. 잠깐 적은….. 글… 더 좋은글을 쓸 수 있는 날까지…