2024. 6. 25. 16:24ㆍ[Node.js_6기 사전캠프]
1. Node.js 란 무엇인가?
- Node.js는 Chrome의 V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 플랫폼이다. 이벤트 기반, 논블로킹 I/O 모델을 사용하는 만큼 가볍고 효율적인 특징을 가진다.
2. Node.js의 장점
- 단일 스레드(Single-Thread)의 논 블로킹(Non-blocking I/O) 이벤트 기반 비동기 방식으로 처리되기 때문에 높은 처리 성능을 가지고 있다.
- 내장 HTTP 서버 라이브러리를 포함하고 있기 때문에 별도의 소프트웨어 없이 동작이 가능하다.
- JavaScript 언어로 프론트엔드 뿐만 아니라 백엔드 개발 환경을 구성할 수 있기 때문에 생산성이 높으며, 러닝 커브가 줄어든다.
- 다양한 패키지 매니저를 기반으로 다양한 모듈(패키지)을 제공하며, 필요 라이브러리에 대해 설치하고 사용할 수 있기 때문에 효율성이 좋은 편이다.
☆ 논 블로킹(Non-blocking I/O)란? - I/O가 동작을 하면서 request를 받으면 바로 다음 처리에 요청을 보내 놓고 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아서 응답을 보내는 것을 의미한다. |
3. Node.js의 단점
- Node.js의 모든 API는 비동기 기반의 처리 방식이기 때문에, 서버의 로직이 복잡한 경우 무한 콜백에 빠질 수 있다.
- 단일 스레드이기 때문에, 하나의 작업이 오래 걸리는 웹서비스의 경우 애플리케이션 성능이 저하될 수 있다.
- 해당 코드가 수행되기 전까지는 코드에서 에러가 났는지 확인이 불가능하다. 또한 에러가 발생할 경우 프로세스 자체가 내려갈 수 있기 때문에 주의가 필요하다.
- 세션을 공유할 경우 부가적인 인프라가 필요하다.
4. Node.js 로 게임 서버를 만든다면 어떤류의 게임에 적합한가?
- 하나의 언어로 프론트엔드와 백엔드 개발 환경을 모두 구성하는 경우
- 간단한 로직으로 구성된 서비스를 운영하는 경우
- 입출력(I/O)이 자주 발생하는 등 작고 빈번한 요청을 처리하는 서비스를 운영하는 경우
- 비동기 방식에 어울리는 서비스를 운영하는 경우 (ex. 스트리밍 서비스, 채팅 서비스)
- 빠르게 환경을 구성하여 개발해야 하는 경우
'[Node.js_6기 사전캠프]' 카테고리의 다른 글
[Node.js_6기 사전캠프] Today I Learn_0701 (0) | 2024.07.01 |
---|---|
[Node.js_6기 사전캠프] 개발 용어 정리 (0) | 2024.06.26 |
[Node.js_6기 사전캠프] JavaScript 톺아보기 (0) | 2024.06.24 |
[Node.js_6기 사전캠프] 개발 아티클 스터디 -웹개발 편 (0) | 2024.06.21 |
[Node.js_6기 사전캠프] 게임 서버의 역사 알아보기 (0) | 2024.06.20 |