inblog logo
|
jaeminlog
    포트폴리오

    Node.js 기반 백엔드 설계

    유재민's avatar
    유재민
    Apr 08, 2024
    Node.js 기반 백엔드 설계
    Contents
    기본 서버 구성서버 관리프로젝트 구조

    기본 서버 구성

    • 패키지

      • express

      • typescript

      • routing-controllers, typeorm, typedi

        • controller, service, repository 기반의 계층 구조

        • typescript로 ORM을 구현

        • typedi로 annotation기반 DI를 구현

        • java SpringBoot & ORM 개발 방식과 유사

      • cors, crypto-js, class-validator, from-data, multer, mysql, moment, axios, jsonwebtoken

        • WAS 구현을 위한 각종 모듈들

      • cross-env

        • 배포 환경에 맞게 설정파일 설정

      • winston

        • Node기반 로그 관리 모듈

    서버 관리

    • Node.js는 기본 싱글 스레드이며 클러스터 모듈을 사용하여 프로세스를 여러개로 늘릴 수 있다.

    • PM2 모듈은 Node.js의 클러스터 모듈 기반으로 워커 프로세스 생성, 메모리 관리, 오류로 인한 종료나 업데이트를 위한 재시작 처리 등 프로세스를 관리하는데 사용

    프로젝트 구조

    • common

      • 각종 공통 상수, 공통 포맷 등 모음

    • controllers

      • API 요청 진입지점

      • UseBefore, UseAfter annotation으로 로그 관리

      • routing-controllers-openapi

    • entities

      • DB 구조와 매핑되는 객체 모음

    • error

      • Exception 구분을 위해 커스텀 에러 모음

    • middlewares

      • cookie 값 생성, 추출 이나 api의 타임아웃, 로그 생성 관리 등 클라이언트 요청 전/후 처리 모듈 모음

    • repositories

      • entity 객체로 DB에 접근하는 인터페이스와 실제 쿼리 구현 부분

    • services

      • controller로 받은 요청이 처리되는 실제 비즈니스 로직 구현 부분

    • test

      • chai, mocha 기반 테스트

      • 커버리지 관리

    • utils

      • 공통적으로 사용되는 함수들 모음(ex/ 암호화/복호화, 쿠키에서 값 추출)

      • 배치 관련 작업 설정(어떤 작업을 어떤 주기로 수행 하는가)

      • console대신 사용할 로그 설정 세팅, 환경설정 파일에 따라 로그레벨 조정, 로그 포맷 설정 등

      • annotation 으로 파일 위치 및 계층을 파악하는 routing-controllers 패키지에 맞게controller ←→ service ←→ repository 계층 구조 구성을 위한 설정

    • root

      • app.ts

        • express 서버 구동에 필요한 각종 설정 세팅

        • database 연결, middleware 구성, cors 설정, swagger 설정, batch job 설정

      • database.ts

        • local, stage, prod 별 환경설정에 따른 db connection

      • env.ts

        • local, stage, prod 별 환경설정 읽어오는 파일

      • server.ts

        • Node.js 앱 구동 시작점, app.ts를 통해 express 서버 생성

    Share article
    Contents
    기본 서버 구성서버 관리프로젝트 구조

    jaeminlog

    RSS·Powered by Inblog