-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
계층 간 인터페이스 추가 및 유스케이스 분리 완료 #399
Conversation
PR 설명이 구체적이어서 이해하기 좋았습니다! 프로젝트가 거대해지면서 코드 관리를 위해 아키텍처를 수정하는 것이 필요하다는 것을 배웠고, |
리뷰 감사합니다. 추가적인 개선이 필요하거나 더 좋은 방법이 있으면, 의견도 같이 남겨주시면 감사하겠습니다. |
코드를 보니 원래 통합되어 있던 메소드들이 하나하나 따로따로 분리되어 SRP에 엄청나게 힘을 주신 것이 눈에 보이네요. |
단일책임원칙 준수와 계층 간 결합을 최소화에 중점을 두고 대규모 작업을 진행했는데, 이번 작업의 핵심을 알아봐주셔서 감사할 따름이네요. 변경점이 많아 일일이 확인하기 번거롭겠지만, 천천히 검토하면서 피드백 주시면 적극 반영하겠습니다. |
Summary
헥사고날 아키텍처로 전환하기 위해 계층 간 결합도를 낮추고 유스케이스 별로 비즈니스 로직을 분리하는 작업을 수행하였습니다. 이는 코드의 유연성을 높이고 유지보수를 용이하게 하기 위함입니다. 다음과 같은 작업을 통해 애플리케이션의 확장성과 유지보수성을 높였습니다.
Tasks
계층 간 인터페이스 추가
유스케이스 분리
실행 흐름
패키지 구조
파일 네이밍 규칙
Controller, Service, Adapter
명사
+ Controller, Service, AdapterInbound | Outbound Port
동사
+ UseCase, PortCRUD 작업 분류에 따른 네이밍 규칙
파일 분리 규칙
모든 분리는 단일 책임 원칙과 모듈화, 확장성, 코드 탐색 용이성을 고려합니다.
아래는 프로젝트 내에서 보편적으로 적용되는 규칙이며, 도메인의 복잡성이 높아지는 경우 CQRS 등을 적용할 수 있습니다.
Controller, Service, Inbound Port
유스케이스
별로 파일을 분리합니다.Outbound Port
CRUD
별로 파일을 분리합니다.Adapter
도메인
별로 파일을 분리합니다.다른 도메인에 대한 접근
다른 도메인의 접근이 필요할 시
인바운드 포트
를 이용합니다.ETC