NHN커머스 일기 (6주차)

조갱·2022년 2월 13일
2

NHN커머스 생활

목록 보기
6/7

6주차 : 2/7 (월) ~ 2/11 (금)

1. 프로젝트 중간발표

이번 주에, 약 4주간에 걸친 프로젝트의 중간 발표가 있었다. 신입 두 팀의 발표가 있었는데 (정말 솔직하게) 우리 팀이 더 잘했답 ㅎㅎ. 개발 뿐만 아니라 기획/사업까지도 우리 팀이 더 잘했다. (주말에 명절까지 갈아넣었으니,, 그럴 수밖에.) 발표 중에 한가지 피드백을 받은 것이 있는데, 실제 서비스가 배포되면 이중화를 지원해야 한다는 내용이다. 이전에 Apache Zookeeper가 이중화에 사용된다는 내용을 얼핏 들은 적이 있는데, 이부분에 대해 기술검증을 진행해야겠다.

2. 순환 참조 오류

2-1. The dependencies of some of the beans in the application conext from a cycle.

1. Product는 상품을 delete/hide 할 때, favorite 에서 참조중인 productId를 삭제하기 위해 FavoriteService 를 참조
2. Favorite는, 즐겨찾기를 등록/해제 할 때, 유효한 productId인지 검사하기 위해 ProductService를 참조
하여 둘 사이에 순환 참조 오류가 발생했다.

자세한 내용은 별도 포스팅에서 다루겠지만, 결과적으로는 ProductService에서 FavoriteService 에 대한 참조를 지우고, FavoriteRepository 를 직접적으로 접근했다.

favorite에서 참조중인 productId를 삭제하는 기능은 Product에서만 사용되기 때문에, 굳이 FavoriteService에 정의하고 사용할 필요가 없기 때문이다.

3. 코드 리팩토링

중간보고 이후로 시간이 조금 남았는데, 이 시간을 Validation 체킹 강화코드 리팩토링에 사용하기로 했다. 특히, 처음에 Kotlin을 잘 몰라서 Java스럽게 짠 코드를 Kotlin스럽게 수정해보기로 했다.

그렇게 리팩토링을 하던 중,,, 혐오스러운 코드 발견 ㅋㅋ
List<Long>을 DB에는 Json String 으로 저장하고, Entity에서는 List로 사용하기 위한 Converter class 를 정의했었다..........

저 때, Json Serializer을 검색했더니 jackson 라이브러리를 쓰면 된다고 봤었는데, 잘 안돼서 그냥 무지성으로 구현으로 때려박았었다 ㅋㅋㅋㅋㅋ 깜빡하고 있었는데 메신저에서 딱걸려서 수정했다. (정확히는 숨기려고 한건 아니고, 나도 깜빡한거다..)

아래는 수정 후 (나름)깔끔해진 코드.

profile
A fast learner.

0개의 댓글