[TIL] #44 Node.js

ddalkigum·2021년 2월 10일
1

TIL

목록 보기
42/50
post-thumbnail

Node.js를 공부 하려했는데 Typescript 공부를 시작하게 되버렸다...

첫 느낌은 Javascript에서 타입을 정해주는 것 말고는 특별한게 있는지 모르겠다

근데 이 타입을 정해주고, 사용을 하는것 자체가 너무 편리하다 😁

Node.js + TypeScript 조합을 공부하는데 역시나 자바스크립트 지식이 ....
같이 공부해야 할 것 같다

늘 그랫듯 만들면서 공부할 것이고, 다 만들고 나면
프로젝트로 진행했던 것중에 골라서 Typescript, Node.js, Graphql로
새롭게 만들어볼 생각이다

Node.js는 원래 관심이 있던 분야고, Graphql또한 restapi 보다 괜찮다 생각하기 때문에
배울 생각이 있었는데, Typescript는 해보니까 재밌어서 공부하고 있는중이다

Node.js

Memory를 할당하는 Memory Heap
코드실행에 따라 호출 스택이 쌓이는 Call Stack으로 구분된다

파이썬의 함수랑 비슷하다 생각했고,
Process에서 Stack에 지역변수가 할당되는 것처럼
Thread에도 각각의 메모리에 할당되는게 다른가? 생각했다

이건 좀 이상한 예시이긴 한데

제일 마지막에 호출한 함수부터 차례로 나오는걸 확인 할 수 있고
Stack이라는 걸 증명해주는 스샷이기도 하다

Single-Thread

싱글 쓰레드를 처음 본 순간
뭐지? 싱글쓰레드라면 어떻게 비동기 처리가 가능한거지?
생각이 들었고, 좀 찾아보니 그 이유가 있었다

Node.js는 이벤트 기반의 플랫폼이다

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식이고,
Node.js에서 일어나는 모든 처리는 callback을 처리하는 것과 같다.

Node.js자체가 싱글스레드 인것이 아닌 Event Loop가 싱글 쓰레드이고
실제로 Javascript를 처리하는 메인 쓰레드이기 때문에 싱글 쓰레드라고 불린다

Node자체는 내부에 Thread Pool을 두어 I/O 작업에 쓰레드를 사용한다

이렇기 때문에 Node 자체가 싱글 쓰레드라는건 반반인것 같다...

사진: https://sjh836.tistory.com/79

쉽게 보면 하나의 쓰레드는 계속 일을 받아오고,
Thread Pool에 일을 던져주면 Thread Pool에서 일을 처리하는 방식인 것같다

Node 코드를 치다보면 좀더 정확하게 이해할 수 있지 않을까 싶다

Node에서 worker-thread모듈을 사용하면 쓰레드를 생성할 수 있다고 한다
하지만 쓰레드를 생성하는 것 자체에 많은 메모리가 소모되기 때문에
대용량으로 작업하는 것이 아닌 이상은 사용하지 않는게 좋다

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒

1개의 댓글