Back/Node.js

[Node.js] express 폴더 구조 변경

Nestjs로 파일을 짜다보니 기존 express 파일 구조에 대해서 다시 한번 생각하게 되었다.

express의 자유로움이 오히려 단점으로 느껴졌다.

지금은 관련 개발을 내 혼자 도맡아 하다보니, 크게 문제 되는 부분은 없지만,

좋은 코드는 누가봐도 한 눈에 알 수 있고, 유지보수하기 좋아야 한다고 생각한다.
nestjs의 구조를 100% 차용하는 것은 현실적으로 무리가 있을 것이라 판단했다.
이걸 바꾼다고, 현재 회사 비즈니스에 크게 영향을 주는 것도 아니고, 공수에 비해 사업적으로 얻는 이득은 크게 없을 것이라 생각했기 때문이다.
훗날 더 원활한 유지보수를 위해 nest의 방식을 일부분 차용하기로 했다.


기존

기존의 router는 이런 식으로 쪼갰다.

index에는 엔드포인트가 있고,

controller에는 함수
query는 이용하는 쿼리문,
service는 서비스 로직이 들어있다.

이렇게 했을 때 한 폴더 안에서 쉽게 확인이 가능한 장점이 있었지만,
코드가 길어지고 분리해야될게 많아졌을 때
가독성이 안 좋아지고, 나 말고 다음 개발자나 후임 개발자가 이 코드를 이어받았을 때
쉽게 적응할 수 있을까? 라는 고민이 들었다.

변경

controller, db, router, service 폴더를 나눴다.
기존 controller에서 엔드포인트 별로 디테일하게 나눴고,
기존 query는 db폴더 안에 컨트롤러에 쓰이는 대로 다시 상세하게 나눴다.
기존 index는 router 폴더 안에 엔드포인트를 나눴다.
기존 service또한 controller에서 쓰이는 대로 나눴다.

단순하게 구조를 바꾸는 것임에도 불구하고 대공사를 했다.
아직 70%밖에 못했다.
이 작업을 하면서 왜 처음부터 설계를 잘해야하는지 느꼈고,
나중에 API가 훨씬 많아졌을 떄는 더 힘들거라 생각했다.

dto나, 인터셉터, 가드 등은 현재 상황상 제대로 구현하기 힘들어보여서,

일단 미뤘다.

기존 것을 모두 변경하고, 남은 프로젝트를 완성하고 난 후,
리팩토링 할 때 미들웨어 부분도 모두 대공사를 해야겠다.

'Back > Node.js' 카테고리의 다른 글

[NestJs] Prisma2 셋팅  (0) 2021.11.23
NestJS TypeORM 간단 예제  (0) 2021.10.24
AWS RDS AURORA + NODEJS  (0) 2021.10.15
Nodejs Excel Mysql  (0) 2021.10.04
Node.js Slack Error Logging slack-node (노드JS 슬랙 에러 로깅)  (0) 2021.10.04