jinho-yoo-jack / wanted-preonboarding-challenge-backend-25

원티드 프리온보딩 백엔드 챌린지 사전과제 - 클론코딩
43 stars 96 forks source link

[필수 과제1] 클래스 다이어그램 #15

Open kimjuls opened 3 weeks ago

kimjuls commented 3 weeks ago

시간이 얼마 안 남아 뭐라도 올려보고 싶어 미완이지만 올립니다.

wanted-preonboarding-backend-challenge-class-diagram

jinho-yoo-jack commented 3 weeks ago

@kimjuls 고생하셨습니다!!! 추상적으로 잘 구성해주신 것 같아요. 변경 유연하게 대응할 수 있도록? 그런데 6번째로 질문 주셨던 것 처럼(승인, 취소 API에 대한 요청, 응답 데이터의 공통화를 위해 추가로 고민 중입니다. 사실 전체 아키텍처보다 이 부분이 가장 어렵고 중요한 부분일거라 생각합니다.) requestDTO/responseDTO를 어떻게 풀어가냐가 중요한데, 그 부분 말고는 다 괜찮은 것 같습니다.

제네릭 또는 상속, 람다, 레플릭션을 이용하면 고민하고 있는 공통화 문제를 조금 손쉽게 해결할 수 있지 않을까? 라는 생각이 듭니다. 또는 공통화를 버린다?라는 조건으로 생각해보면 또 어떨까요?

kimjuls commented 3 weeks ago

고민 중인 부분은 각 PG사별로 상이한 Request/Response 타입을 결제승인/취소에서 적용하기위해 제네릭을 사용하는것을 고려하고 있었는데, 공통화를 포기한다는 것은 이 의미로 이해됩니다.

한편 결제 승인 내역을 DB에 기록할 시에는 결국 정규화가 필요하므로, 각 승인 응답을 공통화하여 공통타입의 RepositoryDTO를 반환하는 PG사 인터페이스 구현체별 parsing 메서드(인터페이스 내에서도 정의 필요)가 필요할 것으로 보입니다. 서비스 레이어에서 이 메서드를 거쳐 반환된 RepositoryDTO를 Repository Create 메서드에 인자로 사용하는 쪽으로 생각되네요.

예상치 못한 빠른 피드백으로 한층 더 이해가 된 느낌입니다. 감사합니다.

이따 19시에 뵙겠습니다!