본문 바로가기

IT는 지금.

Node.js란?(Wiki와 함께 설명) 💻

반응형

Wiki에서는 Node.js를 어떻게 설명하고 있을까 ❓❓

| Node.js는 크로스플랫폼 오픈소스 자바스크립트 런타임 환경으로 윈도우, 리눅스, macOS 등을 지원한다. Node.js는 V8 자바스크립트 엔진으로 구동되며, 웹 브라우저 바깥에서 자바스크립트 코드를 실행할 수 있다.[3]

주로 확장성 있는 네트워크 애플리케이션과 서버 사이드 개발에 사용되는 소프트웨어 플랫폼이며, 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며, 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

- 크로스 플랫폼(Cross-Platform)

장점:

  • PC환경에서는 Window와 Mac / 모바일 환경에서는 Android와 IOS 운영체제에 모두 동작 가능하다는 의미이다.
  • 최근 들어서는 크로스 플랫폼 프로그램을 통해 하나의 코드로 다수의 운영체제에서 동작되게 하는 개발 방식이 인기를 끌고 있다.
  • 당연히 생산성이 올라간다.

단점:

  • 기존 운영체제 네이티브의 플랫폼보다는 최적화되어있지 않기에 성능적인 이슈가 있을 수 있다.
  • 그러나 이러한 문제도 최근 여러 업데이트를 통해 보완되고 있으며, 실리콘 밸리의 굴지의 기업들도 이러한 크로스 플랫폼 서비스를 운영하고 있다.


- 서버 사이드 개발(Server-Side Development)

  • 서버의 리소스를 사용하여 운영되는 서비스를 개발하는 것을 의미한다.
  • 반대로 클라이언트 사이드 개발이 있다.


- 논블로킹(Non-blocking) I/O

  • 오류가 발생하기 전까지는 인입되는 Inpus request를 계속 받아준다.
  • 비동기 I/O 와 다른 점은 비동기 I/O는 응답을 받아주지만, 논블로킹 I/O는 응답값을 받아주지 않는다.


- 단일 스레드(Single thread)

  • 단일 스레드는 한번에 하나의 동작만 처리할 수 있다는 의미이다.
  • 그러나 하나의 한번의 동작을 비동기적으로 처리하기 때문에, 사용자 입장에서는 속도나 성능에 대한 이슈를 인지할 수 없다.
  • 단일 스레드에서 하나의 함수를 호출하면, 이벤트 루프가 여러개의 이벤트를 처리한다.


- 이벤트 루프(Event loop)

  • 단일 스레드를 지원하는 javascript 프로그램을 다중 스레드(PC)에서 동작시키기 위한 객체이다.
  • 이벤트 루프는 javascript 프로그램에서 실행된 하나의 함수를 여러개의 다중 스레드가 대기하고 있다가 실행하고, 이후 액션을 진행하는 것을 담당한다.
  • 이벤트 루프와 비동기 방식을 통해, 사용자는 javascript 서비스가 단일 스레드여서 느리다고 생각할 수 없게 된다.(실제로도 느리지 않다😲)



누가 만들었을까? 💁🏻

🥇 2009년에 ‘라이언 달’이라는 사람이 만들었다.

🥈 Joyent 라는 회사에서 일하는 사람이고, 현재도 Joyent에서 개발 및 운영 중이다.

🥉 파일 상태를 서버에 쿼리를 통해 확인하는 것을 보고 조금 더 쉬운 방법을 찾다가 고안해 내었다고 한다.

  • TMI. Joyent는 2016년 삼성전자에 인수되었다.



+ Node.js를 사용하는 기업 Top 3 🌟

아래 언급된 회사 외에도 거의 모든 회사에서 Node.js를 사용하고 있다.

  • Facebook
  • Amazon
  • Google

마이크로서비스 아키텍쳐 시대가 오면서 다양한 서비스 API들이 제공될 수 밖에 없고,

대부분의 회사는 이런 환경에서 Node.js를 사용하고 있다.



맺는말

Node.js는 개발을 하는 사람들이라면, Front, Backend 상관 없이 한번쯤은 모두 들어봤을만한 이름이다.
처음 라이언 달이라는 한 개인의 심플한 고민이 시작이 되어,
이제는 모두에게 생산성과 편의성을 가져다 준 프로그램이 되었다.
이처럼 우리의 작은 고민 하나가 어쩌면 많은 사람들에게 영향력을 줄 수 있을 것이다.

 

반응형