본문 바로가기

타임어택/[nodejs] 제로초 9기-노드교과서

[섹션 0] 강의 들어가기 전 기본 개념

1. 질문하는 방법

- 우선 먼저 시도를 해본다

- 그리고 그 시도한 것을 질문할 때 말해야 한다.

- 에러 메시지는 전체를 다 올리기 (그리고 텍스트로 올려야 한다)

- 실력을 늘리기 위해선 코드를 짜달라고 하면 안된다.

 

 

 

2. 노드의 정의

노드는 서버가 아니다. 자바스크립트 런타임(크롬 V8)이라고 한다. 즉, 자바스크립트를 실행시킬 수 있으며 그 안에서 서버의 역할을 하는 코드를 써내려가면 그게 서버가 되는 것이다.

 

 

 

3. 노드의 특성

- 노드는 이벤트 기반이다.

쉽게 말해서 특정 조건(클릭, 시간 다됨, 와이파이 연결 안됨 등등)의 상황에서 미리 지정해둔 작업이 실행되는 방식이다. 이 작업을 보통 함수에 넣어두고 정식 명칙으로는 콜백함수라고 한다. 

 

 

- 논블로킹 I/O

자바스크립트는 거의 [논블로킹, 비동기] [블로킹, 동기] 이렇게 짝이 지어진다. 오해하지 말아야 할 것은 논블로킹이라고 해서 동시에 돌아가는 느낌은 아니라는 것이다. 오래 걸리는 동작을 다른 곳에 빼두는 것이라 생각하면 쉽겠다.

 

 

- 프로세스 vs 스레드

노드는 직접 다룰 수 있는 스레드가 하나이기 때문에 싱글 스레드라고 표현한다. 원래는 멀티 스레드가 맞다.

 

그런데 멀티 스레드는 코딩이 너무 어렵다. (실제로 대학교 2학년 때 자바 수업 때 이쯤 손을 놨던 것 같다)

 

 

 

4. 서버로서의 노드 장단점

장점: 개인적으로 자바스크립트를 사용하는 것 자체가 큰 장점이라고 생각한다. 그 외에도 웹 서버가 내장 되어있고, JSON과 호환하기 쉬운 것 등이 프론트를 배웠던 나로서는 매력으로 다가온다.

 

단점: 서버 규모가 커졌을 때는 서버를 관리하기 어렵다고 한다. 그런데 추후에 Nestjs 까지 넘어간다면 정말 앵간치 큰 경우가 아니라면 다 커버가 가능하다고 예상해본다.

 

 


 

 

랩업!

 

이번 타임어택이 그저 강의 듣기에 그치는 게 아니려면 꼭 나의 느낀점이나 추가로 공부를 해야한다. 그리고 그 부분들은 글 중간 중간과 랩업 부분에 써놓도록 하자.

 

 

사실 노드 교과서 강의를 40% 정도는 봤었다. 그런데 정리도 안하고 무작정 넘기기만 하다보니까 어느 순간부터 하나도 이해를 못하는 상황이 왔다. 이러려고 강의를 들은 게 아닌데..

 

 

지반이 탄탄해야 그 위에 쌓는 것들도 견고해질 수 있다. 이번 타임어택을 통해서 많이 공부하고 실력적인 향상들이 있었으면 좋겠다.