Node.js 코딩 패턴
이 구조에 대해 좀 더 자세히 이해하려면 node.js MVC 패턴인 Routes-Controller-Service에 대해 좀 자세히 알아야 할 것 같다. 먼저 각각의 용어에 대한 설명은 다음과 같다.
Route
Request end point를 어디에서 처리할지, 즉 경로와 그 경로에 대한 처리 함수들을 모아 둔 곳이다. 다음과 같은 형식으로 이루어져 있으며, [PATH]가 호출되었을 때 [Controller 함수]를 호출하는 역할을 한다.
router.get([PATH], [Controller 함수]);
Controller
사용자에게 어떤 값을 전해줄지 가공하는 부분. Service로부터 값을 받아와서 http header나 body에 값을 넣고 예외처리하고, 응답하는 역할을 한다.
Service
Service는 비즈니스 로직이 저장되어 있는 부분. DB의 값을 불러오고, 가공해서 controller로 값을 전해주는역할을 한다. MVC에서 model 부분.
정리
Spring의 그것과 유사하다. Router, Controller, Service는 각각의 layer가 된다. 이렇게 modularization을 통해서 개발 및 유지보수를 할 때 좀 더 간편하게 접근할 수 있으며 테스트 코드 또한 더 명확하게 작성/실행할 수 있다.
다만 MVC의 View는 여기 없는데, view는 사용자에게 보여지는 영역... 즉 Front 부분이다. 따라서 Backend 서버인 node.js에는 view의 정보를 담지 않는다.
계층구조
server.ts - app의 선언/실행을 담당함. 제일 상위(main)
app.ts - app.use 함수를 이용해 middleware, router를 선언 및 붙이는 역할을 담당함.
Router - endpoint를 나눠주는 역할을 담당함.
Controller - 각각의 endpoint에 해당하는 처리 로직을 담당함. request에 대한 error handling 및 response
Service - controller로부터 전달받은 parameter를 이용해 데이터 가공 및 비즈니스 로직을 담당함.
Model(내 프로젝트의 경우 prisma) - DB에 접근하는 로직 담당.
DB - 정보 저장 담당.
위가 사용자에게 가깝고, 아래가 DB에 가까움. 각각의 layer들은 바로 아래의 layer에만 의존한다(바로 아래의 layer만 사용한다)
이 외, exception handling, middleware, utils 함수들은 별개로 처리하며, 최상위에서 관리한다.
'Development > Node.js' 카테고리의 다른 글
[Node.js] 프로젝트 미어캣 서버 연결하며 있었던 이슈 (0) | 2022.09.29 |
---|