브라우저 밖의 JavaScript
JavaScript는 브라우저에 내장되어 있어서 브라우저 콘솔에서 JS를 사용할 수 있다.
NodeJS가 생기면서 브라우저 밖 유저의 컴퓨터에서도 JavaScript를 사용할 수 있게 되었다.
브라우저에 한정되어 있었던 JavaScript의 가능성을 무한하게 해주었다.
JavaScript로 file system 다루기, JavaScript로 모바일 앱을 만들 수도 있고, JavaScript로 웹페이지에 접속해서 정보를 수집할 수 있는 등 브라우저와 관계없는 일들까지 할 수 있다.
Back-End를 구축할 수 있는 언어는 여러가지 언어가 존재한다.
기본적으로 JavaScript한가지 언어로 Front-end/ Back-end 다 작업할 수 있다.
Node.js는 레고처럼 이것저것 조각조각을 커스터마이즈할 수 있다.
대조적으로 Django나 Laravel은 하나의 큰 장난감과 같아서 사용법을 배워야 쓸 수 있다.
상대적으로(Node.js와 비교했을 때) 기본이 갖춰져 있기 때문에 어느정도의 학습 시간을 필요로 한다.
Node.js로 좋은 성능을 낼 수 있는 경우는 특히 많은 데이터를 움직이고 다뤄야할 때(CRUD + Real-time..) 이다.
대신 규모가 크고 하드웨어의 성능을 끌어내는 서버를 만드려면 (ex. 이미지 압축, 크롭, 필터적용, 저장 등)이런 경우에는 Node.js로 좋은 결과를 내기 어렵다. JavaScript로는 메모리, RAM, 등의 하드웨어에 접근할 수 없기 때문이다.
예를 들어 유튜브에 영상 업로드 => 4가지 포맷으로 변환 => 오디오 트랙을 찾아 저작권을 갖고 있는 다른 오디오 트랙과 같은지 탐색 => 인코딩 디코딩 등등의 하드코어 프로세싱..
이런 작업은 Node.js로 할 수 없다.
추가로 Python은 비동기 언어가 아니기 때문에 Node.js로 할 수 있는 실시간 작업을 구현할 수 없다.
이런 경우는 Node.js가 필요하다.
정적인 웹사이트에 적합한 편
따라서 서버에서 주로 다루고 처리해야하는 작업에 최적화 된 언어로 개발하는 것이 중요하다.
Connection 열기(open)
Connection 연결(listen)
파일 처리
HTML 전송
데이터 저장
form에서 데이터 받아오기
등등
모두 다른 방식이지만 위와 같은 구성을 기본으로 서버를 만들 수 있도록 도와주는 프레임워크
Django "framework for Python"
Rails "framework for Ruby"
Lavavel "framework for PHP"