[Chaincode] 체인코드에서의 MVC...? (2)

이전에 체인코드에서의 MVC패턴에 대해서 공부하고 앞으로의 프로젝트에서 적용하려고 정리했습니다.

그리고 실제로 프로젝트 투입 후 이렇게 저렇게 구조를 정리해본 결과를 한번 더 정리하려 합니다.

완성도는 올라간것 같지만 아직 손봐야될 부분이 생길수도 있다고 생각합니다.


폴더 구조

기존 프로젝트 구조

1
2
3
4
5
\GOPROJECT\SRC\MVC
├─controller
├─dao
├─dto
└─service

이 구조의 문제는 큰 기능별로 패키지를 묶었는데 Golang의 패키지 사상과 맞지 않았음

프로젝트의 덩치가 커지면 여기 저기 파일을 생성해 개발하고 또 수정되면 각 폴더를 찾아가며 관련 부분을 수정해야하는 불편함이 발생

수정된 프로젝트 구조

feature 별로 패키지를 묶고 개발 및 수정시 여기저기 폴더를 이동하며 수정하는 불편함을 최소화

1
2
3
4
5
6
7
8
9
10
\GOPROJECT\SRC\MVC
| main.go
| personController.go
|
+---DB
| DBManager.go
|
\---person
person.go
service.go

person에서 다른 서비스를 호출해야 할때

고민을 많이 했던 부분인데 결과적으로는 person controller에서 다른 feature의 service를 호출하는것으로 생각

person의 service에서 다른 feature의 service를 호출하지 않은 이유는 service는 해당 feature의 기능만 담당해 feature간 의존성을 줄이기 위해서 service를 호출하는것은 controller

그리고 호출 순서도 controller에서 관리