Skip to content

백엔드 폴더 구조

최홍일 edited this page Dec 10, 2020 · 5 revisions

BE 프로젝트

견고한 nodejs 구조를 참고하여 구조를 설계했습니다.

koa-framework, typescript를 사용하여 프로젝트를 설계하였습니다.

📂BE 
└─📂src
  ├─index.ts		 # 시작 지점
  ├─📂controllers	 # request -> service, response <- service
  ├─📂interfaces	 # 타입스크립트에 필요한 인터페이스 
  ├─📂loaders		 # 시작 프로세스 모듈
  ├─📂models             # 데이터베이스 모델
  │ ├─📂 ...             # 모델별 폴더명
  │   ├─index.ts	 # Function
  │   └─schema.ts        # mongoose Schema, Model
  ├─📂routes	         # URL에 따라 요청 처리 분기
  │ └─📂api              # /api URL모아두기
  │   ├─index.ts
  │   ├─ ... 
  │   └─📂acount-book    # API중 account-book에 관한 요청들
  ├─📂services		 # request -> Model, response <-Model
  │ ├─📂auth             # 인증과 관련된 Service
  │ └─ ... 
  └─📂utils		 # 기타 필요 함수

기본 BE 흐름

Start Project

  1. index.ts

    • 진입점입니다. loader 작업이 끝나면, listen을 통해 서버를 시작합니다.
  2. loaders

    • loader는 시작 프로세스들을 모아놓은 모듈입니다.
  3. mongoose loader

    • DB를 연결하는 모듈입니다
  4. koa

    • koa 프레임워크의 로더입니다.
    • 아래 항목에 해당하는 모듈을 등록합니다.
    1. middleware
    2. error handler
    3. router

Router - Controller - Service - Model

  • Router

    • URL 에 따라 요청 처리를 분기합니다.
    • 요청에 맞는 Controller에 처리를 위임합니다.
  • Controller

    • Request 정보를 Service로 보냅니다.
    • Service에서 데이터를 받습니다
    • 받은 데이터를 추상화한 response로 만들어 응답합니다.
  • Service

    • Controller를 통해 받은 Request를 가공합니다.
    • 가공한 데이터를 Model에 넘겨줍니다.
    • Model에서 받은 데이터를 가공하여 Controller로 보내줍니다.
  • Model

    • DB에 접근하여 필요한 작업을 수행합니다.
    • Service를 통해 받은 데이터를 가지고 DB에 접근하여 필요한 작업을 합니다.
    • 이 과정에서 발생하는 에러를 처리합니다.
Clone this wiki locally