피크 초당 1만 이 몰릴 때 1분 안에 도착해야 하는 알림이 함께 있습니다. 두 요구를 같은 줄에서 만족시킬 수 없습니다.
한 줄이면 뒤에 선 것이 늦는다
마케팅 100만 건이 큐에 들어가고 그 뒤에 비밀번호 재설정 알림이 붙으면, 앞의 100만 건을 처리한 뒤에야 나갑니다. 초당 1만이라도 100초가 걸립니다.
그래서 줄을 나눕니다. 급한 줄과 대량 발송 줄을 따로 두고 일꾼을 배정합니다.
급한 줄은 양이 적어서 늘 비어 있다
그 비어 있음이 1분을 지켜 준다
몇 개로 나누나
| 줄 | 무엇이 들어가나 |
|---|---|
| 급한 것 | 인증 번호, 비밀번호 재설정, 결제와 보안 알림 |
| 보통 | 댓글과 언급, 배송 상태 |
| 대량 | 마케팅, 공지, 재참여 유도 |
셋이 흔한 선택입니다. 더 나누면 관리가 늘고, 둘로 줄이면 보통 알림이 대량 발송에 밀립니다.
보내는 서비스가 종류를 정합니다. 그런데 모두가 자기 알림을 급한 것으로 표시하려 하므로, 급한 줄에 넣을 수 있는 종류를 목록으로 관리해야 합니다. 아니면 급한 줄도 곧 막힙니다.
대량 발송을 일부러 늦춘다
대량 발송은 지연이 허용됩니다. 그래서 일부러 천천히 보냅니다.
| 이유 | 내용 |
|---|---|
| 제공자 제한 | 한꺼번에 밀면 거절당한다 |
| 우리 여력 | 급한 알림에 자원을 남긴다 |
| 상대 서비스 | 알림을 받고 몰려오는 접속을 펴 준다 |
세 번째가 특히 중요합니다. 100만 명에게 동시에 알리면 그 앱과 서버가 동시 접속을 받습니다. 알림 시스템이 상대 서비스를 무너뜨리는 셈입니다.
취소할 수 있어야 한다
대량 발송은 시작한 뒤 잘못된 것을 알게 되는 일이 흔합니다. 내용이 틀렸거나 대상이 잘못됐을 때입니다.
큐에 다 넣고 시작하면 취소할 방법이 없다
발송 작업을 하나의 단위로 두고 중단 가능하게 만든다
천천히 보내는 것이 취소 가능성을 만듭니다. 한꺼번에 밀어 넣으면 이미 나간 것을 되돌릴 수 없습니다. 두 이유가 같은 결론을 가리킵니다.
급한 줄이 막히면 무엇을 하나
급한 줄도 막힐 수 있습니다. 제공자 장애나 갑작스러운 인증 요청 폭증 때입니다.
이때는 대량 발송을 멈추고 자원을 급한 줄로 옮깁니다. 대량 발송은 지연이 허용되므로 멈춰도 됩니다. 우선순위가 있다는 것은 급할 때 무엇을 버릴지 정해 두었다는 뜻입니다.
버릴 것을 정해 두지 않은 우선순위는 이름만 있는 것입니다.