[⭐항상 새겨두어야할 공부 방법⭐]
- 다른 사람한테 설명 가능해야 함! (설명 못하면 제대로 이해 못한거)
- 항상 구조적으로 생각하고 이해하기 ( 왜 이렇게 되는지 )
- 하고 많은 다양한 똑같은 것들 중에서 왜 이걸 사용하는지?
새로운 회사로 이직하게되어 Node.js 를 공부하게되었다..
위 내용은 공부하는 방법, 가이드를 잡아주시는 대표님이 항상 말씀해주시는 내용이다..!
우선 Java만 하던 내가 노드를 공부하면서 느낀 것은 ( 아직 자바도 잘 모르지만,, )
1. 간편하다.. ( 더 깊게 공부하면 복잡하겠지만,,,)
2. 편리한 기능들이 많다.. ( 이미 너무 잘 만들어진 모듈들이 너무 많다..!)
우선 이렇게 두가지인데..
Java를 사용했어서 그런가 생각보다 익히고 사용하는데 크게 어려움은 없다..
하지만 좀 더 구조적인 사고방식을 가지고, 원리를 이해하고,,, 이런 생각을 가지고 공부를 하려고 하니깐
생각할게 많아서 쉽지는 않은 것 같다!
다른 것들도 공부를 위와 같은 생각을 가지고 공부를 하고있는데
Java를 다시 공부 할때도 위와 같은 접근 방법으로 공부를 하면 또 새롭겠지?
열심히 해보자...
이제 본론 ㅎ
🔸Node.js 란 무엇인가?
'Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임' 으로 설명할 수 있다.
여기서 Chrome V8이 뭔지 잘 이해가 안되고 궁금한 사람도 많겠지만 ( 나처럼..)
우선은 런타임에 초점을 두고 알아보는게 중요하다.
런타임이란 프로그래밍 언어가 구동되는 환경을 말하는데
즉, 간단히 하자면 Node.js는 Javascript가 구동되는 환경이라고 생각하면 편하다!
🔸용도 = [서버] ?
노드는 서버 애플리케이션을 실행하는 데 가장 많이 실행된다
그래서 노드는 서버다 라고 생각하는 사람이 많다!
무조건 틀린말은 아니지만 백프로 맞는 말도 아닌 것 같다! 나도 그렇게 생각했었고.. ㅎ
- JavaScript 로 작성된 서버를 구동시킬 수 있는 환경을 제공 즉, 웹서버 자체가 아니라 웹서버를 만들 수 있는 환경이다.
(Http 라이브러리를 내장하고 있는 데다 다양한 외부 라이브러리들이 있어서 따로 웹서버를 띄우지 않아도 된다.)
Node.js 는 자바스크립트 앱이 서버로서의 기능을 하기 위한 도구를 제공하므로'서버' 역할을 수행하니깐! '서버'라고 할 수 있다!
🔸특징
1. 이벤트 기반
2. Non-Blocking I/O
3. Single-Thread
이렇게 가장 큰 특징 세가지가 다!
기존 웹서버는 대부분 스레드 기반으로 I/O 를 처리한다.
Node.js 는 대규모 네트워크 서비스를 개발하기 위해 고안되어 이벤트 기반으로 처리한다.
스레드 : 프로세스 내 어떤 실행의 흐름
이벤트 기반 : 특정 이벤트가 발생할 때까지 대기 ➡️ 이벤트 발생 ➡️ 지정된 작업 수행
[이벤트를 대기하는 함수 : 이벤트 리스너]
[지정된 작업과 관련된 함수 : 콜백 함수]
특정 이벤트가 발생할 때 무엇을 할지 미리 등록 : 리스너, 콜백 함수를 등록한다 라고 표현
즉, Node.js 는 이벤트 기반 시스템으로 구성되어 있기 때문에 비동기를 구현할 수 있고, 이 덕분에 Non-Blocking 을 하나의 스레드로 수행할 수 있다는 특징을 가지고 있다.
Blocking 은 Node.js 프로세스에서 한 작업의 실행을 위해 다른 작업이 완료될 때까지 기다려야 하는 방식이고, Non-Blocking 은 그 반대이다. A작업 중 B작업을 실행시켜야할 때, Blocking 방식이라면 A작업이 끝날 때까지 기다려야 하고(block) Non-Blocking 방식이라면 A작업이 끝나지 않았더라도 기다리지 않고(non-block) B작업이 실행될 수 있다.
각 요청에 대해 내부적으로 비동기 처리를 위한 스레드를 여러개 생성한다. 단, 요청 처리 자체는 이벤트 루프라는 하나의 스레드 내에서 처리되고 개발자가 조작할 수 있는 스레드도 이 이벤트 루프라는 하나의 스레드 뿐이라 싱글 스레드 환경이라고 부르는 것이다.
🔸Node.js 는 언제..?
⭕추천!
- 이벤트로 처리되는 작업의 시간이 짧고 이런 요청이 아주 많이 들어오는 시스템의 경우!
(Node.js 에서 요청은 스레드 환경과 달리 병렬적으로 처리되기 때문에!)
- JavaScript 를 사용하므로 JSON 형식의 데이터를 쉽게 처리할 수 있다. 참고로 Spring 의 경우 JSON 형식의 데이터를 따로 파싱해야 하니 JSON 형식의 데이터를 많이 사용하는 프로그램의 경우!
❌비추!
- CPU 시간을 많이 잡아먹는, 즉 처리 시간이 긴 작업이 많은 경우!
예시)
- 간단한 텍스트/이미지/동영상 데이터를 실시간으로 주고받는 채팅 프로그램
- 실시간 주식 차트 프로그램...
디테일한 Node.js의 작동원리는...
다음 게시물에 작성을 해봐야겠다..
https://codingjuny.tistory.com/58
Node JS 동작원리
NodeJS 동작원리 NodeJS의 동작 원리를 알기 위해서는 javascript의 동작원리를 먼저 알아야 합니다. javascript 는 싱글 스레드로 동작하는 언어입니다. 싱글 스레드이기 때문에 한 번에 하나의 작업만
codingjuny.tistory.com
다양한 블로그 들을 읽어보고 있긴한데 한눈에 안들어오고 잘 안읽히는 걸 보니 아직 이해가 잘 안되나보다
아니면 집중력이 끝났나..
좀 더 잘 이해해서 다음 포스팅에서 .. 안녕..