빨리 가는 유일한 방법은 제대로 가는 것이다.
Robert C.Martin 《클린 코드》 저자
모던 자바스크립트 딥다이브를 읽으며, 몰랐던 부분, 놓치기 쉬운 부분을 다시 정리해보려 한다.
모카 Mocha
라는 이름으로 넷스케이프 내비게이터 2에 탑재되었다가,
그해 9월 라이브스크립트 LiveScript
로 이름을 바꾼다.
그리고 12월에 최종적으로 자바스크립트 JavaScript
로 바뀌게 된다.
어디선가 Java의 유명세에 올라타기 위해 라이브스크립트에서 자바스크립트로 이름을 바꾸었다는 이야기를 본적이 있다.
1999년, Asynchronous JavsScript and XML, 비동기 방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax
가 등장한다.
서버로 부터 전체 HTML 코드를 다시 받아야 하던 웹페이지의 한계를 깨고,
필요한 부분만 서버에 요청해 변경이 필요한 부분만 한정적으로 렌더링 하는 방식이 가능해 진 것이다.
이로써, 자바스크립트의 웹 어플리케이션 프로그래밍 언어로서의 기능을 확인하게 되었다.
더욱 빠르게 동작하는 자바스크립트 엔진의 필요성이 대두됨에 따라, 2008년 구글의 V8 엔진이 이러한 요구사항에 부합하는 빠른 성능을 보여주었다.
V8 엔진의 등장으로 웹 서버의 로직들이 대거 클라이언트(브라우저)로 이동하게 되었고, 웹 개발에서 프론트엔드 영역이 주목받는 계기가 되었다.
감사합니다 구글. 감사합니다 V8 Engine.
V8 엔진으로 빌드된 자바스크립트 런타임 환경이다.
브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행환경이다.
비동기 I/O를 지원하며 단일 쓰레드 이벤트 루프 기반으로 동작해 요청 처리 성능이 좋다.
하지만, CPU 사용률이 높은 어플리케이션에는 권장하지 않는다.
비동기 I/O, Asynchronous I/O
프로그램이 I/O 작업을 요청하고, 그 작업이 완료되기를 기다리지 않고 즉시 다음 작업으로 넘어가는 방식이다. I/O 작업이 끝날 때가지 다른 작업을 계속 진행할 수 있어 효율성이 좋다.
예를 들어, 웹 서버에서 클라이언트 요청을 받은 후 데이터베이스에 정보를 조회하라는 요청을 보낸 뒤 그 요청에 대한 응답이 오기까지 다른 요청을 처리하는 것이 가능하다. 따라서, 대량의 요청을 빠르게 처리하는데 유리하다.
단일 쓰레드 이벤트 루프
(이 부분에 대해서는 더 공부가 필요할 것 같다.)
Node.js 이벤트 루프(Event-Loop)