-
Notifications
You must be signed in to change notification settings - Fork 1
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
[Feat/#412] 이메일 OPEN, DELIVERY DELAY 이벤트 처리 #419
Conversation
-- 전송 아티클 이벤트 히스토리 테이블 | ||
CREATE TABLE SEND_ARTICLE_EVENT_HISTORY | ||
( | ||
id BIGINT NOT NULL AUTO_INCREMENT, | ||
member_id BIGINT NOT NULL, | ||
article_id BIGINT NOT NULL, | ||
message_id VARCHAR(255) NOT NULL, | ||
event_type_cd TINYINT NOT NULL, | ||
send_type_cd TINYINT NOT NULL, | ||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | ||
PRIMARY KEY (id) | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
전송 아티클 이벤트 히스토리 테이블 추가하였습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
해당 테이블은 아직 조회하는 경우는 없는건가요? 따로 설정된 인덱스가 없는거 같아 여쭤봅니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
네네! 이번 PR은 우선 해당 이벤트들을 누적하는 것까지 생각하고 구현한 PR이라 인덱스는 따로 추가하지 않았어요!
).let { | ||
when (EmailLogEventType.fromCode(record.eventType)) { | ||
EmailLogEventType.DELIVERYDELAY -> { | ||
TODO("배송지연 이벤트 발생시 처리 로직 추가") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
배송지연 이벤트가 발생하면 해당 이벤트를 받은 멤버는 ses가 아닌 java로 메일을 보낼려고 합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
우리 SES는 언제 추가됐었지..
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
자바로 보내니까 넘 오래걸려서..! AWS로 인프라 옮기고 바로했었어요..!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
가격 얼마나 나가나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
가격은 다 프리티어 안으로 사용가능한 수준임다!
아 그리고 지금 인프라 총 가격은 10달러고 계정이 2개라 20달러 나오고 있습니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
생각보다 많이나오네 이거 최대한 빠르게 공유해서 N빵 하던지 해야 할거 같네요
articleLogService.insertOpenEvent( | ||
InsertOpenEventDto( | ||
memberId = memberId, | ||
articleId = record.articleId, | ||
messageId = record.messageId, | ||
eventType = EmailLogEventType.OPEN.code, | ||
sendType = record.sendType | ||
) | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
send_article_event_history 말고 기존의 뷰 기록을 누적하는 article_view_his에도 동일한 기록을 추가해야하나 고민중입니다...
view 기록이 두개의 테이블에 나뉘어들어가는 것이 맘에 걸려서..
bae112a
to
51d148f
Compare
3e871dc
to
ddb3e0b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
일단 제 생각은 정책상 아티클 조회수 카운팅은 유저 별 아티클 당 최대 1회로 제약이 없기 때문에, 메일 내에서 아티클을 읽는 경우에도 뷰 카운트가 올라가는게 맞을거 같습니다
-- 전송 아티클 이벤트 히스토리 테이블 | ||
CREATE TABLE SEND_ARTICLE_EVENT_HISTORY | ||
( | ||
id BIGINT NOT NULL AUTO_INCREMENT, | ||
member_id BIGINT NOT NULL, | ||
article_id BIGINT NOT NULL, | ||
message_id VARCHAR(255) NOT NULL, | ||
event_type_cd TINYINT NOT NULL, | ||
send_type_cd TINYINT NOT NULL, | ||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, | ||
PRIMARY KEY (id) | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
해당 테이블은 아직 조회하는 경우는 없는건가요? 따로 설정된 인덱스가 없는거 같아 여쭤봅니다
enum class SendEventType(val code: Byte, val type: String) { | ||
OPEN(0, "open"), | ||
DELIVERY(1, "delivery"), | ||
CLICK(2, "click"), | ||
SEND(3, "send"), | ||
DELIVERYDELAY(4, "deliverydelay"), | ||
; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
지연된 경우가 지금 발생할 수 있는 경우인가요? 추가로 DELIVERY, SEND 차이가 궁금합니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AWS는 이메일을 전송(SEND) -> 전달(DELIVERY) -> 오픈 -> 클릭 으로 구분하는 것 같아요!
이때 늦게 전달되는 경우를 전달지연(DELIVERYDELAY) 이라 합니다.!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 그 이벤트를 저희가 콜백으로 전달받나요? 어떻게 알 수 있지? 아니면 AWSSES에 메일 전송 요청 보내면 동기 응답으로 오나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 요것은 제가 AWS에서 이벤트 브릿지 SNS랑 람다로 저희 API로 요청을 보내는 것을 만들었어요.!
인프라 관련된것도 언제 날 잡아서 공유하는 시간 가져요.!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 그럼 람다코드에서 상태 업데이트 됨?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AWS가 SES에서 이메일 보낼때 설정하면 이벤트를 발행해주고 SNS에 보내줘요
그럼 람다가 SNS를 구독하고 있어서 이벤트를 받고 우리 API로 쏩니다
SES -> SNS -> Lamda -> API 이런 식으로 흘러가요
아니 왜 커맨트 따로 달리지 대댓글로 안달리고 |
이것은 그래도 PM에게 확인해보고 진행할까요??! |
제가 잘 이해한게 맞나요? 메일 내에서 아티클을 바로 볼 경우 뷰를 올리는게 맞냐 << 이거 |
네네 맞아요! |
아 이거 내가 어떻게 개발했었더라.. 히스토리에 저장해야 뷰 카운트가 자동으로 올라가게 되어 있지 않나.. 코드 다시 보고 말씀드릴게요 |
|
🎫 연관 이슈
resolved: #412
💁♂️ PR 내용
🙏 작업
🙈 PR 참고 사항
📸 스크린샷
다른 것은 기존 로그 컨트롤러와 동일해서 OPEN 이벤트만 확인하였습니다.
🤖 테스트 체크리스트