Node | Layered Pattern

최정훈·2022년 6월 27일
0

1.모듈화가 필요한 이유

모듈화 : 역할에 따라 코드를 분리하는 행위

한 파일에 모든 코드를 다 넣어도 노드 서버는 문제 없이 동작한다. 간단한 규모의 어플리케이션이라면 굳이 모듈화가 필요없지만, 우리는 실제 서비스에서 사용할 수 있는 어플리케이션을 구현하는 것이 목표다. 즉, 혼자서 개발하는 것은 극히 드물다.

결국 좋은 코드(협업 가능한 코드)를 작성하는 것이 좋은 개발자의 역할이다. 좋은 코드를 나누는 기준은 크게 다섯가지로 분류할 수 있다.

확장성(extensibility)

확장성을 고려하지 않은 코드는 시스템의 규모가 커질수록 문제가 생길 확률이 높다.

재사용성(reusability)

반복되는 로직을 함수로 분리하는 코드상의 재사용성 뿐만 아니라, 우리가 설계한 구조가 재사용 되어야 한다.

유지-보수 가능성(maintability)

여러 로직이 뒤엉켜 있는 코드는 유지 보수가 안 된다.

가독성(readability)

어려운 로직 일수록 더 가독성이 높아야 한다. 어려운 로직을 쉽고 간단하게 구현하는 것이 좋은 코드다. 프로젝트의 구조 또한 한 눈에 그려져야 한다.

테스트 가능성(testability)

테스트를 하기 쉬운 코드는 모듈화가 잘 되어 있고, 한 가지 역할만 하는 함수 단위의 코드를 의미한다. 프로젝트의 구조도 추상화가 잘 되어 있고, 역할이 잘 나뉘어 있는 구조가 테스트하기 쉬운 구조다.

2.Project Layering (의존성 순서)

server.js: Express App 으로 서버를 여는 로직
routes: 라우팅(엔드 포인트 나누기) 로직
controllers: 엔드포인트에 해당하는 함수 로직 - Http 요청에 따른 에러 핸들링, service 로직에서 데이터를 받아와서 응답으로 내보내는 로직
services: controller 에서 넘겨받은 인자로 다양한 알고리즘(필터, 정렬 등..)을 처리해서 데이터에 접근하는 로직
prisma (=model): 데이터베이스에 접근하기 위한 모델이 정의되어 있는 폴더

*주의사항
.env: 프로젝트 내에서 사용할 환경 변수를 선언해 놓는 곳
node_modules: 노드 패키지 모듈
.gitignore: 위의 두 모듈을 깃이 관리하지 않도록 함
package.json: 노드 모듈을 관리하는 파일

  • Route → Controller
    Controller → Service
    Service → Model
profile
사과

0개의 댓글