Spacemates프로젝트를 진행하게 되면서 개발 공부를 시작하였다. Flutter부터 공부를 시작하면서 차근차근 필요한 내용들을 배우고 있던 중 개발에 대한 전반적인 지식을 먼저 쌓아보고 싶었다. 프론트와 백엔드의 관계와 통신이 필요한 어플리케이션의 흐름 등 하나의 코드가 아닌 전체적인 흐름이 궁금하였다.
이렇게 전체적인 통신흐름을 알고나니 Node.js와 DataBase의 기본적인 개념에 대해 더 깊이 공부해 보고 싶었다. 이번 페이지에서는 Node.js에 대한 지식과 Node.js의 내부 동작들에 대해 알아보려고 한다.
Node.js 공식 사이트에서 내린 Node.js의 정의
일단 시작부터 모르는 단어가 우수수 쏟아졌다. 대체 V8, 엔진, 런타임은 뭘까?
JavaScript 런타임?
런타임이란 프로그래밍 언어가 구동되는 환경을 말한다. 원래 JavaScript는 크롬 등 여러 브라우저에서 구동된다. 여기서 크롬, 브라우저들이 JavaScript의 런타임인 것이다.
Node.js도 JavaScript의 런타임 이라고 한다. Node.js도 크롬, 브라우저들과 같이 JavaScript가 구동이 가능한 환경이라고 생각하면 된다.
뒤의 어려운 말들은 이제부터 차근차근 알아보도록 하자. 혹시 중간 중간 모르는 단어가 나온다면 신경쓰지말고 그냥 넘어가도록 하자. 뒷부분에 조금씩 내용이 나올 것이다.
Node.js는 확장성 있는 네트워크 어플리케이션 개발을 위해 설계되었다고 한다. 즉, 서버를 위해 설계된 플랫폼이라는 것이다. Node.js의 가장 큰 장점은 위에서 나왔듯이 이벤트 기반, Non-Blocking I/O라고 할 수 있다.