taetaetae / blog-comment

0 stars 0 forks source link

2019/01/02/faster-parallel-processes/ #9

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

천만 명의 사용자에게 1분 내로 알림 보내기 (병렬프로세스의 최적화) - 꿈꾸는 태태태의 공간

만약 1번부터 10번까지 번호표가 있는 사람들 총 열명에게 혼자서 동일한 내용의 메일을 보낸다고 가정해보자. 그리고 메일 발송시 한번에 한명에게만 보내야 하는 제한사항이 있을때 과연 당신은 어떤식으로 보내겠는가? 이어서 읽지말고 한번 생각해보자.

https://taetaetae.github.io/2019/01/02/faster-parallel-processes/

hongyoolee commented 4 years ago

안녕하세요 게시글 보고 궁금한 점이 있어 댓글 남깁니다.

FCM 전송을 병렬로 진행 한 것으로 보이는데 병렬로 쓰레드를 몇개를 띄운건지, 병렬로 전송시 전송 실패율이 얼마나 되는지 궁금합니다.

답변 주시면 감사하겠습니다. 좋은하루보내세요.

taetaetae commented 4 years ago

@hongyoolee 위 포스팅에 이야기 하고자 하는건 "분할 한다"가 주요 내용이라, 전송한다 == 성공한다 로 가정을 했구요. (실제로 콜백을 받고있어서 전송 실패는 없었습니다.) 병렬 쓰레드는 발송 대상의 크기에 따라 달라지구요. 단위 또한 테스트를 해가며 최적의 단위를 결정했습니다.

hongyoolee commented 4 years ago

@taetaetae 답변 감사합니다.

stevepaks commented 3 years ago

영상:사용자 기준으로 미리 매핑 정보를 구성해놓으면 중복 발송 컴포넌트는 제거 할 수 있을 것 같습니다.

taetaetae commented 3 years ago

@stevepaks 그 부분도 고민을 했었는데요~ 미리 정보를 구성한 타이밍부터 발송 시작 타이밍 사이에 추가로 발송해야할 사용자가 생길 경우엔 못보내는 홀이 생겨서 부득이하게 중복 발송을 체크하게 되었습니다~

stevepaks commented 3 years ago

앗. 그러셨군요. 트랜젝션 중간에 추가된 사용자까지 잡아야 하는 구조인 경우 애매할 수 있었겠습니다. 사용자를 추가해야 하는 경우 채널 구독 이벤트 트랜젝션상에서 매핑 정보를 구성하면 거의 실시간으로 매핑정보 갱신을 하는 형태로 되기 때문에 분할 조회 하는 동안 갭을 메꿀 수 있다는 생각이 들기도 했습니다.

taetaetae commented 3 years ago

@stevepaks 오 그거 좋은 방법이네요~! 좋은 의견 주셔서 감사합니다 :D 업무에 참고하겠습니다^^