Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 그리디
- 컴퓨터공학
- html/css/js
- 국비지원
- nodejs
- git
- 코딩테스트
- 백준
- 컴퓨터과학
- 호이스팅
- computerscience
- 프론트엔드개발자
- 국비지원취업
- js
- 알고리즘
- KAKAO
- github
- LinkSnap
- CS
- Javascript
- 패스트캠퍼스
- BFS
- 너비우선탐색
- 코테
- DFS
- CSS
- cpu
- 야놀자
- 부트캠프
- 자바스크립트
Archives
- Today
- Total
My Boundary As Much As I Experienced
ZeroCho-Node) Node.js란? 본문
노드란?
Node.js는 크롬 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. (실행기)
- 서버의 역할도 수행할 수 있는 자바스크립트 런타임
- 노드로 자바스크립트로 작성된 서버를 실행할 수 있음.
- 서버 실행을 위해 필요한 http/https/http2 모듈을 제공
- 런타임: 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신
노드의 특성
- 이벤트 기반
- 대부분의 프로그램은 이벤트 기반이다. (클릭, 네트워크 요청, 타이머 등)
- 주소를 치는 것도 이벤트이다. (get)
- 이벤트 리스너: 이벤트를 등록하는 함수
- 콜백 함수: 이벤트가 발생했을 대 실행될 함수
- 대부분의 프로그램은 이벤트 기반이다. (클릭, 네트워크 요청, 타이머 등)
- 논블로킹 I/O
- 논블로킹: 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행
- 대충 논블로킹을 비동기, 블로킹을 동기로 봐도 괜찮다.
- 일부 코드: I/O 작업 (파일 시스템 접근, 네트워크 요청), 압축, 암호화 등
- 나머지 코드는 블로킹 방식으로 실행됨
- 싱글 스레드
- 프로세스와 스레드
- 프로세스: 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원 공유x
- 스레드: 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유
- 노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현
- 노드는 주로 멀티 스레드 대신 멀티 프로세스 활용
- 노드는 14버전부터 멀티 스레드 사용 가능(아직 많이 사용 안 함)
- 싱글스레드가 멀티스레드보다 코딩하고 이해하기 쉬워서 사용. 그러나 비효율 발생.
- 프로세스와 스레드
서버로서의 노드
- 서버: 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
- 클라이언트: 서버에 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버)
- 예시
- 브라우저(클라이언트, 요청)가 웹사이트(서버, 응답)에 접속
- 노드 서버의 장단점:
- 장점:
- 멀티스레드 방식에 비해 컴퓨터 자원을 적게 사용함
- I/O 작업이 많은 서버로 적합
- 멀티 스레드 방식보다 쉬움
- 웹 서버가 내장되어 있음
- 자바스크립트를 사용함
- json 형식과 호환하기 쉬움
- 단점:
- 싱글 스레드라서 cpu 코어를 하나만 사용함
- cpu 작업이 많은 서버로는 부적합
- 하나뿐인 스레드가 멈추지 않도록 관리해야 함
- 서버 규모가 커졌을 때 서버를 관리하기 어려움 (대부분의 서버가 그렇긴 함)
- 어중간한 성능
- 장점:
CPU 작업을 위해 AWS Lambda나 Google Cloud Functions같은 별도 서비스 사용
페이팔, 넷플릭스, 나사, 월마트, 링크드인, 우버 등에서 메인 또는 서브 서버로 사용
'BackEnd > Node.js' 카테고리의 다른 글
ejs 템플릿 엔진 사용하기 (0) | 2024.07.08 |
---|---|
express 상에서 MongoDB Atlas 사용하기 (0) | 2024.07.07 |
Express 초기화, 기본 사용법, 미들웨어 사용하기, 파라미터 쓰는 법 (0) | 2024.07.03 |
AWS EC2에다 Apache서버 만들고 도메인 연결하기 (0) | 2024.04.25 |
제로초 Node.js / ch3-4 / http 모듈을 활용한 crud 구현 (0) | 2024.03.10 |