ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제로부터 시작하는 Node.js - 1. 개요
    내가 보기 위해 쓰는 것/Node.js 2019. 10. 30. 11:08

    노드로 프로젝트를 하려다가 너무 부족한 자신을 발견해서 node.js를 제로부터 알아갈 수 있도록 정리하는 연작(?)을 써보려고 한다. 딱 내 눈높이에 맞게...

     

    사실 제로는 안되구요. Javascript, HTML5, CSS3는 아셔야 합니다.

     


     

    1. Node.js 배경사

     

    JavaScript는 1994년 브랜든 아이히 라는 분이 만들었습니다. 웹이 발전함에 따라 자바스크립트는 웹에서 빠질 수 없는 존재가 되었습니다.

    자바스크립트의 활용도가 높아지면서 브라우져 밖에서 자바스크립트를 사용해보자 라는 아이디어가 나왔습니다. 그렇게 해서 탄생한 것이 Node.js 입니다. (라이언 달 이라는 분이 만드셨읍니다.)

     

    Node.js가 나오기 전에는 LiveWire나 Jaxer를 사용했다고 하지만, 당시에는 JavaScript를 이용해서 서버에서 사용하지는 않았습니다. 왜냐하면 너무 느렸기 떄문입니다.

     

    Node.js가 LiveWire나 Jaxer같은 친구들과 뭐가 달라서 이렇게 성장했을까요? 속도가 해결되었기 때문입니다.

    왜 Node.js가 빠르냐면 구글이 만든 자바스크립트 엔진 V8을 사용했기 때문입니다. 그러니까 구글이 망하지 않는 한 V8엔진은 계속 발전하고 즉 Node.js는 점점 더 빨라질 것이라는 얘기가 되네요.

     

    2. 이벤트 기반 비동기 방식

    제목이 너무 거창한데 그냥 Node.js의 특징을 소개하는 거니까 긴장하지 않으셔도 됩니다. 저도 잘 몰라요.

    Node.js는 많은 서버사이드 어플리케이션이 사용하는 스레드 방식을 사용하지 않고 이벤트 기반 비동기 방식을 사용합니다.

     

    스레드 방식이랑 이벤트 기반 비동기 방식이 뭐가 다르냐면...

     

    2-1. 스레드 방식

     

     

    스레드란 하나의 처리단위 입니다. 이미지를 참고하시면 이해가 더 편하실 것 같습니다. 처리 단위를 다중으로 만들어 처리하는 방식입니다. 처리해야 할 A,B,C,D등의 Task를 분신술을 써서 동시에 처리하는 방식입니다.

     

    2-2. 이벤트 기반 비동기 방식

     

     

    Node.js가 채택한 이 방식은 분신술은 못쓰지만, 해야할 일이 생기면 누구보다 빠르게 처리하러 가는 그런 방식입니다.

    처리해야할 A,B,C,D가 항상 동시에 요구되고 동시에 끝나진 않습니다. A라는 일이 발생했으면 후다닥 달려가서 처리하고, B라는 일이 발생하면 후다닥 달려가서 처리하고, 일을 처리하기 위해 대기하는 그런 야생마같은 방식이죠.

     

    이제 Node.js의 장단점을 알아봅시다.

     

    3. Node.js 장단점

    3-1. 장점

    장점은 Javascript를 사용한다는 것입니다. 웹 개발자라면 누구나 자바스크립트를 다뤄보았을 것입니다. 접근성이 너무좋죠. 또 구글의 V8엔진을 사용하기 때문에 구글이 지원을 중단하지 않는이상 계속 발전할 것이고요.

    또, C++을 사용하여 기능확장이 됩니다. 물론 다른 스크립트언어도 지원하는게 많은걸로 알지만, 그래도 지원하니까 장점이죠.

     

    3-2. 단점

    단점도, 자바스크립트를 이용해서 생기는 문제가 있습니다. 자바스크립트가 아무리 빨라졌어도 C, C++같은 로우레벨에 더 가까운 언어들보단 느리겠죠. 근데 요즘 서버쪽 언어들 속도는 비슷한 걸로 알고있어서 크게 부각되지는 않습니다.

     

    Q. 그럼 서버를 C나 C++로 만들면 진짜 빠를텐데, 왜 노드니 레일즈니 쟝고를 쓰는거죠?
    A. 개발은 작동속도도 물론 중요하지만 생산성, 유지보수성, 비용등을 고려하기 때문에 총합적으로 보면 이런 요즘 플랫폼들이 더 뛰어난가 봅니다. 그리고 복잡한 내부연산을 필요로 하는 부분에선 따로 C++을 적용할 수도 있으니까요.

     

    또, 이벤트 기반 비동기 방식에서 오는 문제가, 일을 하는 친구가 하나이기 때문에 어디선가 문제가 발생하면 서버 전체가 문제가 된다는 점이 있습니다.

     

    4. Node.js를 사용하는 기업

    Node.js를 사용하는 기업들을 보고 이 기술이 투자할 만한 가치가 있는 플랫폼인가 알아봅시다.

    어떤식인지, 왜 사용했는지 까지는 조사하기 너무 힘드니 나열만 하겠습니다.

     

    LinkedIn, PayPal, eBay, NetFlix, Walmart, UBER, NASA(그 나사 맞음)

     

     

    다음 글은 설치, 개발환경 구축이 될 것입니다.

    댓글

Designed by Tistory.