사내 교육 시스템을 통해 1월 부터 ‘초격차 패키지 : 한 번에 끝내는 Node.js 웹 프로그래밍’ 라는 fastcampus 프로그래밍 강의를 듣게 되어 관련 내용을 정리하여 기록 해두려고 합니다.
Node.js 를 선택한 이유는 현재 외부 업체를 통해 프로젝트 중 인 시스템이 Node.js 로 되어 있고, 해당 시스템을 곧 인수인계 받아 운영을 해야했기 때문입니다.
그리고 해당 강의에 Front-End 관련 주제도 깊이 있게 다루는거 같아서 선택하게 되었습니다.
첫날 들은 수업은 ‘Javascript 생태계와 Node의 역사’, ‘Node.js 특징과 강점, 약점’ 에 대해 정리 해보겠습니다.
Javascript 생태계와 Node의 역사
- Javascript : Interpreter 언어 <-> 절차적 언어
- google 의 V8 Js engine 발표와 함께 Open Source 발표됨
- 기존 브라우저에서만 실행되던 javascript 가 Server 에서도 구동 될 수 있도록 만든 script 엔진
- express : 2010년 발표되어, node 웹서버 framework 표준으로 자리매김
- react : 2013년 발표되어, front-end trend 변화를 주도
- Babel, WebPack : 2014년 발표, 구동이 불가한 하위 브라우저 호환 가능
Javascript 만으로 Full Stack 개발이 가능 해졌으며, Server-Side Rendering 등의 고급 기술도 사용 가능
Node.js 특징과 강점, 약점
지금까지의 I/O 와 다르다
이벤트 루프를 이용한 비동기 처리 (callback 호출 방식) 동기 처리는 너무 많은 클럭 수를 낭비
저수준의 오래걸리는 일은 Node 에게 맡기고, 고수준의 로직은 main thread 에서 처리 (offloading 방식)
- Node 가 빠른 속도와 매우 놓은 확장성을 갖는 근본적인 이유
- Single Thread 처리로 인해 동시성 이슈 해소
Javascript 언어 한계상 저수준(=기계어) 처리를 빠르게 처리하는 한계가 존재
- C 와 Web assembly 모듈을 바인딩해 사용하는 방법을 제공 하여 해당 한계 극복
- C 는 node-gyp, Web assembly 는 Node 12 부터 제공 하여 완벽한 최적화가 가능해짐
방대한 오픈소스 생태계 (NPM - Node Package Manager)
마무리
새로운 언어를 강의를 통해 배워 보는게 너무 오랜만이라 생소할 정도이지만, 재미는 있는 것 같습니다.
그럼 이만. 🥕👋🏼🖐🏼