(정말 좋은글들이 많은 사이트 ! 앞으로 번역할 자료들이다.)
[29.sep.2020]
개발을 진행하는 데 어떠한 방식으로 설계를 할 것인가를 정해야 한다.
토이 프로젝트가 아니기 때문에 한 디렉토리에 비지니스 로직을 쑤셔 넣는 것은 더이상 NoNo!.
이전까지는 Model/ Route/ Controller
계층으로 나눠 프로젝트를 진행했었다.
다른 디렉토리까지 나열해본다면
backend
- library
- config
- controller
- middlewares
- models
- routes
- utils
이러한 형식이었다. 이 디렉토리 형식의 출처는 Udemy 'Advanced Node.js' (Brad Traversy) 강의이다. 한 사람을 골라 그 사람의 코드를 따라하자는 생각으로 지금까지 진행해왔던 상태라 깊은 고민 없이 플젝들을 진행하였다. 이제는 그 상태를 넘어가야 함을 느꼈고. 동료와 거의 일주일 동안 node.js 아키텍처에 대한 자료를 찾아봤다. 검색 결과 글들의 본질은 대부분 같았고 디렉토리 형식이나 디렉토리 이름의 뉘앙스가 조금씩 다른 것 뿐이라 우리의 맘에 드는 글을 하나 골라 그 방식대로 프로젝트를 진행하기로 정했다.
그 글은 바로 !
https://softwareontheroad.com/ideal-nodejs-project-structure/
이 아키텍처의 디렉토리 구조.
src
app.js
- api # Express route controllers for all the endpoints
- config # Environment vaiables and configuration related stuff
- jobs # Jobs definitions for agenda.js
- loaders # Split the startup process into modules
- models # Database models
- services # All the business logic is here
- subscribers # Event handlers for async task
- types # Type declaretion files (d.ts) for Typescript
큰 차이가 없어 보이지만 깊이 들어가면 큰 차이가 있다.
request
와 response
에 관한 접근은 controller(api directory)
에서만 가능하다.service
에만 정의한다.Pub/Sub
방식을 이용한다. Event
를 이용한다.(DI, IoC)
이 글을 거의 7번정도는 읽었는데도 프로젝트로 진행하지 않아 크게 기록할 내용이 떠오르지 않는다.
그러니 프로젝트 진행하면서 떠오르는 포인트들을 적어나가겠다.
의존성 주입이라는 키워드가 꽤 큰 키워드라 한줄로 정리하기 힘들다. 다음번에 의존성 관련 글을 하나 적는걸로 하겠다.