Open
Description
AS
- 우선 기능이 잘 작동하고 있습니다.
- 현재 Task에 대해 N명의 수신자가 존재하는데, 이는
@ElementCollection
. 즉, 값 컬렉션을 사용중입니다. - 개발 당시 모든 task는 all or nothing으로 하나라도 실패하면 fail로 간주하기 때문에 각 Receivers에 대해 상태를 추적하지 않았습니다.
제안
- 코드를 다시 살펴보던 도중, 사용자 경험을 떠올렸는데요.
현재 로직에서는 어떤 사용자는 메일을 수신받고 나머지 1명이 실패하면 N명 전체를 다시 보내야합니다. 운영진 입장에서는 편하지만 수신자입장에서는
중복 메일이 두번 날라오게됩니다.
- 따라서 각 수신자에 대한 발송여부를 상태로 갖게하는 엔티티로 승격시키는 것을 제안합니다.
EmailTask -< EmailReceiver
- id
- task_id
- is_sent
- email
고려할점
- DB 스키마의 변경이 있는 작업이라 매우 고민이 됩니다.
- 변경한다면 기존의 Task 테이블은 변경없이 EmailReceivers 테이블만 수정될 것 같습니다.
- 프로젝트 초기에 너무 단정지었다고 생각합니다 ㅠ 더 데이터가 쌓이기전에 바꾼다면 빠르게 바꾸는게 어떨까 생각이듭니당