
JavaScript와 함께 자주 언급되는 친구 중 하나로 Node.Js가 있는데 얘는 서버를 만들때 쓰는 친구 정도로 알고 있었지만 정체는 계속 잘 몰라서 궁금했다.
누군가는 node.js를 사람들이 '웹서버'인줄 잘못 알고 있다고 한다. (아니 난 그것도 몰랐는데)
뭔가 요즘 배웠던 라이브러리, 프레임워크랑 좀 종류가 달라보이는데... 얘는 정체가 뭔데 서버를 만들게 해주고, 왜 얘를 쓰는걸까? 알아보자!
개발자 지인에게 물어보니
'어....(얘한테 뭐라고 설명해주지).. 자바스크립트 런타임 환경이야'
라는 답변이 왔다.
런타임 환경... 음....
그게 뭐냐고 세 번쯤 물어보다가 '고맙다'고 했다.
역시 궁금한건 직접 찾아보자! 우리의 친구 Google & GPT와 함께!
크롬 브라우저에 있는 V8 엔진이 javascript를 컴파일해서 실행해주는데 성능이 엄청 좋다고 한다. 크롬을 빠르게 느끼는 것도 이 v8엔진이 javascript 해석을 빠르게 해주기 때문이다.
그래서 이 V8엔진 브라우저에서 가지고 나와 브라우저 밖에서도 실행할 수 있게 해 준 것이 Node.js라고 한다.
보통의 웹서버는 요청이 1~N개가 들어오면
- 1번 인풋 → 1번 아웃풋
- 2번 인풋 → 2번 아웃풋
- ...
이런식으로 순차적으로 처리가 된다고 한다.
따라서 중간에 어렵거나 과도한 요청이 들어오면 멈춘다.
하지만 Node.js는
일단 요청 다 받음 → 빠른 것부터 아웃풋
그래서 중간에 멈추지 않는다.
특히 SNS에 활용하는데 강점을 보인다. SNS는 서비스 특징상 요청이 어마어마하게 많은데, 요청이 많거나 오래걸리는 요청이있어도 멈추지 않아서 좋다.
다만 일반 웹서버도 서버 스케일링 혹은 멀티스레딩을 활용하면 많은 요청에 대한 처리가 가능하긴 하다고 한다.
특히 린스타트업 등 프로토타입 만들때 좋고, 몇 줄이면 서버를 뚝딱 만들 수 있다고 한다.
...해보지는 않았다...
웹 서비스가 아니라 이미지 처리나 통계 분석 등 다른 부분들이 중요하다면 C나 파이썬을 많이 쓰는 것 같다.
참고: 코딩애플님 유튜브
https://youtu.be/pTm5E3jcOeY?si=Qd9xBEcXmBjErFD2
https://youtu.be/k2GWnDb5zoQ?si=HpsSqLYMUFakRqCr
※ 저 같은 초보자가 이 글을 보셨다면 '이런거구나!'하지 마시고 꼭!! 검증해보시길 바랍니다. 더 이해도가 높아지면 이 글을 업데이트 하겠습니다.