express 디렉터리 구조

smart Seo (Seo smart)·2023년 12월 8일
0

템플릿 프로젝트

목록 보기
15/18

layered 아키텍처 구조적인 설계

Layered Pattern은 백엔드 API에 가장 널리 적용되는 패턴 중 하나다.
논리적 부분, 역할에 따라 독립된 모듈이 층층히 쌓듯이 연결 되어 레이어를 쌓아놓은 것 같은 구조가 된다고 하여 레이어 패턴이라고 한다.

  • Presentation Layer

시스템을 사용하는 사용자, 클라이언트 시스템과 연결되는 레이어다.
백엔드 API의 엔드포인트에 해당하며, HTTP 요청을 읽는 로직을 구현한다. 그 이상의 역할, 로직은 다음 레이어로 전달 한다.

  • Business Layer

시스템이 구현해야 하는 로직, 역할을 구현하는 레이어다.
회원가입시 비밀번호에 조건을 거는등 운영에 필요한 로직이 들어 있는 레이어다.

  • Persistence Layer

DB와 관련된 로직을 구현하는 레이어다.
DB의 데이터 생성, 수정, 읽기를 처리하는 역할을 한다.

단방향 의존성, 관심사 분리

Layered Pattern의 핵심 요소는 단방향 의존성과 관심사 분리이다.
단방향 의존성은 레이어는 자기보다 하위에 있는 레이어에만 의존하고 있음을 의미한다.
관심사 분리는 레이어는 역할이 명확히 구분되어 있어 역할의 중첩이 없음을 의미한다.

https://velog.io/@kisuk623/Layered-Architecture-Pattern-%EB%AA%A8%EB%93%88%ED%99%94

API

  • 프로젝트의 API 엔드포인트를 정의 각 API는 여기서 관리, 라우팅 및 요청 처리

config

  • 애플리케이션의 구성 설정 파일들이 위치
  • 데이터베이스 연결, 서드파티 API 키, 환경 변수 등의 설정

interfaces

  • typescript 인터페이스 및 타입 정의가 포함
  • 데이터 구조와 객체 인터페이스를 정의 일관된 타입 체킹 제공

loaders

  • 어플리케이션 초기화 로더 파일들
  • 애필리케이션의 초기화 과정에서 사용되는 로더들이 위치
  • 데이터베이스 연결, 의존성 주입, 로거 설정 등 초기 설정을 담당

models

  • 데이터베이스 모델이 정의되는 곳
  • Mongoose나 Sequelize와 같은 ORM을 사용하여 데이터베이스 스키마를 정의


services

  • 비즈니스 로직을 처리하는 서비스 계층이 위치

types

  • 사용자 정의 타입들이 정의
  • 글로벌 타입 정의

ex) user 필드를 선택적으로 Request 객체에 추가
이는 로그인한 사용자의 정보를 저장하거나, 로그인하지 않은 사용자에 대한 요청을 처리에 사용
사용자 인증 기능을 구현하는 데 필요한 기본적인 설정을 제공

utils

  • 프로젝트 전반에 걸쳐 재사용되는 유틸리티 함스들이 포함
  • 날짜 포맷팅, 데이터 검증 등의 공통 기능을 제공

위와 같은 형식으로 디렉터리를 구조화 하였으며 데이터 넘어가는 형식을 다음 포스팅에 정리할 예정!!

profile
꾸준히 발전하는 풀스택 개발자!!

0개의 댓글