Closed Delf-Lee closed 4 years ago
News와 Picks를 동시에 내려준다
위의 요구사항을 해결하기 위해 3가지 방법을 고안
코드상에서 Picks라는 개념을 없앤다.
@Delf-Lee 저는 3번째 방법도 나쁘지 않다고 생각해요 :) 하나로 묶을려고 하는 것은 여러가지 책임을 하나로 묶는 것으로 보이지 않을까요? 필요하다면 다른 회사들은 어떻게 구현했는지 찾아보는것도 좋은 방법이라고 생각이 들어요 ㅎㅎ
@NESOY 처음에는 저도 하나로 묶으려는 시도였습니다만, 스펙 자체가 picks가 없어지다시피 됐습니다.
그리고 case3가 힘든 가장 큰 이유(처음 고민때 간과한)중 하나는 두 엔티티를 따로 관리했을 때, 테이블도 별개가 되기에 두 테이블에서
라는 절차를 구현하기가 까다로워집니다. 지금보다 복잡한 쿼리를 다뤄야할텐데 repository 레이어를 건드려야할 것 같은 느낌이 드네요. 이렇게 된다면 주객전도가 될것 같습니다.
혹시 이를 해결할 수 있는 방법이 있다면 공유해주시면 감사하겠습니다:smiley:
@Delf-Lee
스펙 자체가 picks가 없어지다시피 됐습니다.
이 부분이 스펙이 그렇게 진행되면 통합해도 상관없을거 같네요 ㅎㅎ
꼭 Repository에서 안하고 Service Layer에서 해도 되지않을까요? 하나의 비즈니스 로직이라도 생각이 드네요. 나중에라도 News에 다양한 컨텐츠들이 노출될 요구사항이 나올텐데 이를 미리 생각해두고 설계해두는 방향도 나쁘지 않아 보입니다 ㅎㅎ
@NESOY
꼭 Repository에서 안하고 Service Layer에서 해도 되지않을까요?
어떤 부분을 말씀하시는건가요?
@Delf-Lee
지금보다 복잡한 쿼리를 다뤄야할텐데 repository 레이어를 건드려야할 것 같은 느낌이 드네요.
이 부분때문에 언급했습니다. :)
@NESOY 만약 둘을 통합(혹은 picks를 삭제라고도 표현 가능)한다면 Repository를 수정할 필요는 없을 것 같습니다.
만약 그렇지 않는다면.... 🤔
- 업로드예정일(publisAt) 기준으로
- news와 picks를 합쳐 n개만 가져온다
Service layer에서 이 조건을 잘 풀어나갈 수 있을지 의문이군요...
@Delf-Lee
Service layer에서 이 조건을 잘 풀어나갈 수 있을지 의문이군요...
이 부분에 대해 앞으로 꼭 풀어야 할 문제라고 생각이 들어요.나중에는 뉴스뿐만 아니라 그 모든 것들이 노출될 가능성이 있다고 생각해보면 좋을거 같아요. 광고 / 동영상 / 사진 / 채용정보 등등 -> 예를 들어 페이스북의 피드를 보면 이해하기 편할거예요.
그렇다면 우린 API를 제공하고 FE쪽에서 Mixing하는게 좋지 않을까라는 생각이 들기도 하지만.. 만약에 A/B 테스트를 위해 A는 특정 회사 노출비율을 높히고 싶고 B는 특정 회사 노출을 줄인다라는 비즈니스를 구현하려면 구현하고 유지보수하는데 백엔드가 가져가는게 더 수월하다고 생각이 들어요 :)
뿐만 아니라 Repository가 꼭 DB가 아닌 경우일수도 있구요. Rest Client인 경우, NoSQL인 경우 등등 이런 부분을 잘 Mixing해서 내려주는 상황이 오면 어떻게 풀어갈까? 고민해보는것도 좋다고 생각해요 ㅎㅎ
Service Layer에서 출발하지만 시스템이 엄청나게 진화하면 이 부분이 하나의 시스템이 될 수 있지 않을까요? 👍
왜 해당 이슈가 개선되어야 할까요? 🧐
이렇게 하면 멋지게 해결할 수 있을거예요🍺
Reference
fyi @NESOY