#1 Node.js 학습하기에 앞서

Patrick·2021년 6월 19일
0

Node.js

목록 보기
1/3
post-thumbnail

일을 하다보니 백단에서 어떤 일을 하는지 몰라서 프론트단에서 이걸 어떻게 처리해야하나 고민했던 적이 있었다.
그래서 백엔드 개발자에게 해결방법에 대한 조언을 요청하니 이건 백엔드에서 혹은 기획단계에서 맞출 수 있는 부분인데 고민 자체는 괜찮지만, 그걸로 너무 시간을 허비할 필요 없다는 말이 돌아왔다.

이제 백단도 조금 알 필요가 있다 라는 생각이 들어서 Node.js 공부에 뛰어들었다.

고맙게도 Node.js에 대해서 알려줄 고마운 지인이 한 명 있지만 기본적인 것은 좀 알아두는 것이 이해하기에 빠를 것 같아서 개인 공부를 병행하려고 한다.

해서, 오늘 학습한 것은 바로 Node.js를 학습하기 전에 알면 도움이 될 만한 배경지식이다.


Node.js의 탄생

1995년 전에는 HTML, CSS만으로 웹사이트를 만들던 시기가 있었다.
그러던 중 1995년에 Javascript가 도입되면서 많은 브라우저들에서 조금씩 Javascript Engine을 탑재하기 시작했다고 한다.
그리고 Ryan Dahl(라이언 달)이 2009년에 Node.js를 세상에 공개했다.

Node.js 페이지에 들어가보면 Node.js는 Chrome의 v8 Javascript 엔진에 빌드 된 자바스크립트 런타임 환경이라고 나온다.

특히 Chrome에서 JIT(Just-In-Time compilation)를 지원하는 v8엔진을 이용하고 있고, Chakara엔진을 사용하던 explorer 또한 Edge explorer에 v8엔진을 탑재함으로써 Node.js를 활용하기 좋은 환경이 만들어졌다고 할 수 있다.

Node.js의 학습을 하면 좋은점

Node.js를 시작하기 전에 공부하면 어떤 점이 좋을까를 생각해볼 필요가 있는 것 같다.
우선 첫 번째는 자바스크립트를 통해서 프론트엔드와 백엔드를 모두 개발 할 수 있다는 점이 있다.
두 번째는 Reddit, NETFLIX, UBER, LinkedIN, NASA, ebay, aws, paypal 등 수 많은 대기업 들에서 Node.js를 사용하고 있으며, 세 번째는 많은 사용자로 인한 강력한 커뮤니티가 만들어져있기 때문에 비교적 빨리 문제를 찾아 볼 수 있다.
마지막으로 비교적 쉽고, 심플하며 유연하고 파워플하다! 라고 할 수 있다.

Node.js의 매력?!

그 첫번째는 Javascript runtime 환경이라는 것이다.
Javascript 런타임 환경으로 Node.js에서 Javascript를 사용할 수 있고, 오픈 소스 프로젝트이며 성능이 좋다!
두 번째는 싱글 스레드(Single Thread) 방식이다!
운영체제에서 동시에 여러 프로그램을 실행하게 되면 각각 프로그램마다 프로세스가 할당된다.
다양한 프로세스가 병렬적으로 실행되는 것처럼 보이지만 사실 컴퓨터가 엄청나게 빠른 속도로 이 프로세스, 저 프로세스 각각 엄청나게 빠르게 실행하여 마치 병렬적인 느낌을 주게 한다.
각각 프로세스는 크게 Code, Stack, Heap, Data 총 네 가지로 나눠볼 수 있다.
세 번째는 Non-blocking I/O 이다.
우선 I/O는 Input과 Output을 말한다.
파일, 데이터 등을 읽고 쓰는 것, 네트워크에 요청하고 응답하는 등 컴퓨터 내에서 읽고 쓰는 물리적인 행동들을 I/O라고 말한다.
Blocking은 Synchronous 즉, 동기적인 것을 말한다.
명려을 하면 하나가 끝나기를 기다렸다가 다음을 실행하는 것이다.
여기서는 Non-Blocking 즉, 비동기를 말하는데 명령을 기다리기만 하는 것이 아니라 콜백을 던져주고 나서 다음으로 넘어가 실행시키고 나중에 그 명령이 끝나면 콜백을 받게 된다.
네 번째는 Event-Driven 방식이다.
비동기 방식으로 콜백을 던져주고 나서 파일을 읽어주는 이벤트가 다 발생하고 나면 콜백을 호출해 달라고 이벤트를 통해서 콜백을 호출할수 있도록 해준다

profile
예술을 사랑하는 개발자

0개의 댓글