면접 요약 정리

Node.js / Express 정리

JIN_Coder 2022. 10. 17. 18:29

Node.js란

구글 크롬 V8 엔진으로 빌드된 JavaScript로 서버를 구축하고, JavaScript를 브라우저 밖에서도 실행할 수 있도록 하는 해주는 런타임 환경입니다.

Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있는 것이 특징입니다.

 

Node.js를 사용하는 이유

V8 엔진을 사용하여 빠르고, JavaScript만으로 서버를 구축할 수 있어 쉽습니다.

이벤트 기반 비동기 방식으로 이벤트로 동작하는 서버에 적합합니다.

Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있습니다.

npm을 통해 다양한 패키지를 제공받습니다.

 

이벤트 기반 프로그래밍

이벤트 발생에 의해 프로그램 흐름이 결정되는 프로그래밍입니다.

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미합니다.

과거엔 시간의 순서로 흐름을 예측할 수 있었던 프로그래밍이 적합했지만, 프로그램이 복잡해짐에 따라 이벤트 흐름을 예측하기 어렵기 때문에 이벤트를 정의하는 이벤트 기반 프로그래밍이 자리 잡았습니다.

 

이벤트 루프

이벤트 발생 시 호출한 콜백 함수를 관리하고, 어떤 순서로 콜백 함수를 호출할지를 결정하는 역할을 담당합니다.

콜 스택에 현재 실행 중인 함수들이 있는지 확인하고, 콜 스택이 비어있다면, 이벤트 큐에 대기 중인 콜백 함수를 순차적으로 콜 스택으로 이동시켜 함수를 실행합니다.

 

논블로킹 I/O

오래 걸리는 I/O 작업이 완료될 때까지 대기하지 않고, 비동기 콜백 함수로 이벤트 루프에 전달 후 다른 요청들을 수행하는 방식입니다.

오래 걸리는 작업을 효율적으로 처리할 수 있는 장점이 있습니다.

 

싱글 스레드

한 번에 하나의 작업만 수행할 수 있습니다.

하나의 작업만 처리하지만, 들어오는 요청 순서가 아닌 논블로킹 방식으로 이전 작업이 완료될 때까지 대기하지 않고, 비동기 처리로 다음 작업을 수행합니다.

 

Node.js 장단점

장점

서버단 로직을 JavaScript로 작성하기 때문에 생산성이 좋습니다.

Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있습니다.

이벤트 기반 비동기 방식이라서 서버 무리가 적습니다.

npm을 통한 다양한 모듈을 설치하고 사용할 수 있기 때문에 효율성이 좋습니다.

 

단점

이벤트 기반 비동기 방식이라 서버단 로직이 복잡한 결루 콜백 함수 늪에 빠질 수 있습니다.

싱글 스레드이기 때문에 CPU 연산을 많이 요구하면 스레드 혼자서 감당하기 어렵습니다.

코드가 수행되어야 에러가 있는지 확인할 수 있고, 에러 발생 시 프로세스가 종료되기 때문에 테스트가 중요합니다.

 

 

 

Express란

JavaScript로 작성되고 Node.js를 사용하여 쉽게 서버를 구축하는 웹 프레임 워크입니다.

 

Express를 사용하는 이유

웹을 만들기 위한 각종 라이브러리와 미들웨어 등이 내장돼 있어 개발하기 편하고, 정해진 틀과 규칙을 강제하여 코드 및 구조의 통일성을 향상할 수 있습니다.

 

라이브러리와 프레임워크의 차이

프레임워크는 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미합니다.

라이브러리는 특정 기능을 모아둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미합니다.

가장 큰 차이점은 제어 흐름 권한이 어디에 있는가입니다.

라이브러리는 개발자에게 제어 흐름이 있는 반면, 프레임워크는 정해진 틀, 규칙에 맞게 수동적으로 동작합니다.

 

미들웨어의 역할

요청과 응답 사이에서 중간 목적에 맞게 처리 로직을 거쳐가는 함수입니다.

미들웨어는 특정 경로로 분할하거나, 인증, 로그 처리와 같은 반복적인 작업을 수행할 때, 오류 처리 역할을 수행합니다.

 

 

 

 

 

Node.js 노드 개념 이해하기 자바스크립트 JavaScript 런타임 이벤트

Node.js 노드 개념 이해하기 JavaScript 런타임 - 노드는 다양한 자바스크립트 애플리케이션을 실행할 수 있으며, 서버를 실행하는데 제일 많이 사용된다. 이벤트 기반 이벤트 루프 논블로킹 I/O 싱글

hanamon.kr

 

'면접 요약 정리' 카테고리의 다른 글

HTTP와 HTTPS 정리  (1) 2022.10.23
REST API 정리  (0) 2022.10.20
npm 정리  (0) 2022.10.20
var, let, const 정리  (0) 2022.10.18
동기 비동기 정리  (0) 2022.10.18