Nodejs란?
안녕하세요. 개발 까마귀입니다. 백엔드에서 많이 사용하는 Nodejs란 무엇일까요?
Nodejs는 자바스크립트를 브라우저 외에 다른 환경에서도 사용할 수 있게 해주는 런타임 입니다. 원래 javascript의 코드를 실행하기 위해서는 html파일을 만들고 그 html파일에 javascript를 연결을 시켜서 브라우저로 확인할 수 밖에 없었는데 이제는 그럴 필요가 없다는거죠 nodejs는 chrome 엔진인 v8엔진으로 실행이됩니다. 그래서 코드 호환성 문제는 걱정할 필요는 없습니다.
Nodejs는 백엔드 언어?
Nodejs는 백엔드 언어가 아닙니다. javascript 실행기 입니다. javascript를 실행시켜주는 "도구"일 뿐입니다. 가끔가다 "Nodejs는 백엔드 언어이니 나는 프론트 개발자니깐 Nodejs 안배워" 이러시는 분들이있는데 이거는 크나큰 착각입니다. 자신이 프론트 개발자여도 Nodejs의 알아야합니다. 백엔드 언어가 아닌 "javascript 실행기이니깐요."
Nodejs Non-Blocking I/O란?
nodejs의 큰 장점입니다. 예를 들어서 영화 예매로 예시로 들어봅시다. 네 사람이 영화 예매를 하는데 첫번째 사람은 1장 예매 총 1초가 걸리고 2번째 사람은 3장 예매 총 3초 걸립니다. 근데 3번쨰 사람은 돈이 많은지 300장을 예매를 하죠 그럼 300초가 걸리고 뒤에있는 사람은 자기꺼 1장을 예매하기 위해서 자기 예매시간 까지 총 301초를 기달려야합니다. 근데 Non-blocking 방식으로 가면 300장에 무거운 요청을 받을시 무거운 작업은 따로 처리를 합니다.
싱글 스레드
정확히 말하자면 싱글 스레드는 아닙니다. 하지만 저희가 조작할수있는 스레드는 하나 입니다. 그래서 단일 스레드 또는 싱글 스레드라고 부릅니다. 멀티 스레드는 코드의 난이도가 높습니다. 신경 쓸것도 많고요. 그래서 초심자들은 쉬운 싱글스레드인 nodejs로 배우는게 좋습니다. 원래는 Nodejs는 멀티 스레드를 지원하지 않았는데 작년에 업데이트를 하면서 멀티 스레드를 지원을 합니다. 단일 스레드이다 보니 동시 처리는 불가능하니 정말 오래걸리는 작업같은 경우는 멀티 스레드로해서 시간을 단축하는게 좋습니다.
Nodejs 장점
위 장점들 말고 다른 장점은 서버 만드는게 정말 쉽습니다. 3줄 정도면 서버를 완성 시킬 수 있고 각종 npm 모듈과 문서들이 있어 빠르고 쉬운 개발을 할 수 있습니다. 그리고 개발 환경이 v8환경이다 보니 최신형 코드를 작성할 수 있습니다. 원래 기존에 javascript는 각 종 브라우저의 엔진에 따라서 기능들이 먹는데가있고 안먹는데가있고 또한 최신형 코드를 못짜는 경우도있어서 골치 아팠지만 Nodejs는 그런거없습니다. 서버에서만 동작하면되는데 호환성 문제는 신경을 안써도되죠 또한 트래픽이 많은 서비스면 Nodejs가 적합하죠 채팅 서비스같은거 말이죠 그래서 Nodejs + nosql인 mongoDB가 많이 따라다니는 이유입니다.
Nodejs 단점
Nodejs는 간단한 로직의 서비스는정말로 좋지만 규모가 크고 로직이 복잡한 서비스라면 안좋습니다. 콜백 지옥이 일어날 수 있고 싱글 스레드이다 보니 관리도 잘 해줘야합니다. 그래서 무거운 작업을 할때 멀티 스레드를 해야하는 이유입니다. 또한 session + pm2를 사용하는 nodejs 서비스 같은 경우에는 redis라는 데이터베이스가 들어섭니다.
가볍게 Nodejs가 뭔지 알아봤습니다. 백엔드 초심자 분들한테는 정말 추천하는 언어입니다.
감사합니다.
'프로그래밍 > Backend' 카테고리의 다른 글
[Backend] Nodejs ejs 적용 (0) | 2021.03.29 |
---|---|
[Backend] express routing 원리 (0) | 2021.03.14 |
[Backend] Nodejs MVC 패턴 (0) | 2021.02.14 |
[Backend] Nodejs Express로 웹 서버 만들기 (0) | 2021.02.07 |
[Backend] Nodejs 웹 서버 만들기 (2) | 2021.01.31 |
댓글