[주간 복습] 2주차 - 백엔드의 구조와 Node.js 모듈 구조

김지환·2024년 3월 10일

백엔드의 구조

백엔드의 구조는 다음과 같다

  • 웹 서버 : 정적 페이지에 대해 대응한다. 화면의 내용/데이터 등의 변동이 없는 페이지. DB와 소통하지 않는 페이지
  • 웹 어플리케이션 서버 : 동적 페이지에 대응한다. 데이터 처리/연산을 통해 화면의 내용, 데이터가 변하는 페이지. 필요한 데이터 연산을 위해 데이터 베이스와 연결되어 있으며, 데이터 조회 / 수정 / 삭제 등에 대한 처리를 요청

웹 서버와 웹 어플리케이션 서버가 다르다는 것은 처음 알아서 남겨봤다.

Node.js 모듈 구조


수업 중에 다룬 구조는 위와 같았다.

  • index.js : server를 구동하는 모듈.
  • server.js : 클라이언트로부터 request를 받는 모듈.
  • router.js : request의 URL에 따라 어떤 route로 가야할지 경로를 분배.
  • requestHandler.js : 각 URL 경로에 따른 적절한 함수 실행.

각 모듈 사이에 필요한 함수는 index.js에서 불러와서 매개변수를 통해 햐향식으로 전달되었다.

Node.js 라이프 사이클


createServer로 서버를 만들 때 전달되는 콜백함수가 일종의 Event Listener 역할을 한다.
Node.js가 이러한 구조를 보이는 이유는 싱글스레드인 JavaScript를 언어로 사용하기 때문이다.
(기타 OS 환경에 따라 멀티스레드 환경으로 구동될 수도 있다고는 한다.)

Event Loop를 통한 콜백함수 처리가 기본이다.
하지만 fs를 활용한 파일 업로드 등의 처리가 오래 걸리는 작업들도 Event Loop에서 처리할 경우 작업이 밀리면서 서버가 느려질 수 있다.
때문에 그러한 작업은 Worker Pool에서 처리된다.(Worker Pool은 OS환경에 따라 멀티 스레드로 동작할 수 있다.)
작업이 완료됐다는 Event가 발생하면 Event Listener에 저장된 콜백함수가 실행된다.

profile
세상의 문제 해결을 즐기는 프론트엔드 개발자

0개의 댓글