시스템 설계, 기술 면접 대비

알림 시스템 설계 면접 퀴즈

마지막 한 걸음이 우리 통제 밖에 있을 때

사내 공용 알림 플랫폼을 요구사항부터 끝까지 설계합니다. 하루 5천만 건, 피크 초당 1만, 중요 알림 1분, 문자 건당 20원이라는 제약 아래에서 제공자 경계, 폭주와 우선순위, 중복, 수신 거부, 템플릿, 도달 확인, 채널 비용을 다룹니다.

로그인 없이 풀어보기
17개 문제, 무료

이 설계에 주어진 요구사항

문제는 모두 이 하나의 요구사항 안에서 풉니다.

알림 시스템 설계

사내 공용 알림 플랫폼

여러 서비스의 알림을 받아 푸시와 메일과 문자로 보냅니다. 마지막 단계가 우리 통제 밖입니다.

이번에 만드는 기능

  • 서비스가 보낸 알림을 받아 발송하기
  • 푸시와 메일과 문자로 보내기
  • 사용자가 받을 알림을 종류별 채널별로 고르기
  • 발송 결과를 서비스가 확인하기

범위 밖

  • 보낼 대상을 조건으로 찾아내기
  • 알림 내역 조회 화면
  • 채널을 학습으로 자동 선택하기
  • 사용자가 알림을 열었는지 정확히 세기

지켜야 하는 수치

발송량
하루 5천만 건 (평균 초당 578)
피크
초당 1만
중요 알림
1분 안에 도착 시도
마케팅 알림
지연을 허용한다
문자 단가
건당 20원

전제로 주어진 것

  • 같은 알림을 두 번 보내지 않는다
  • 수신 거부를 반드시 지킨다. 어기면 법을 위반한다
  • 푸시와 메일과 문자는 제3자 제공자를 거친다
  • 제공자는 우리 요청을 거절하거나 늦출 수 있다

학습할 핵심 개념

요구사항과 두 종류의 알림
제공자가 경계다
폭주와 우선순위
두 번 보내지 않기
수신 설정과 거부
템플릿과 내용
보냈다는 것과 도착했다는 것
채널 선택과 비용

핵심 개념 미리보기

알림 시스템 설계 면접에서 꼭 나오는 개념을 미리 확인하세요

요구사항과 두 종류의 알림

핵심

알림 시스템은 여러 서비스가 함께 쓰는 플랫폼입니다. 그래서 한 서비스의 발송이 다른 서비스의 알림을 밀어내는 것이 이 설계의 중심 문제입니다.

항목
대상사내 공용 알림 플랫폼
채널푸시, 메일, 문자
발송량하루 5천만 건 (평균 초당 578)
피크피크 초당 1만
중요 알림1분 안에 도착 시도
마케팅 알림지연 허용
문자건당 과금
중복같은 알림을 두 번 보내지 않는다
수신 거부반드시 지킨다

기능 요구사항과 범위 밖

구분내용
이번에 만든다채널별 발송, 우선순위, 수신 설정 확인, 중복 방지, 도달 추적
범위 밖알림 내용 작성 도구, 발송 대상 추출, 사용자 행동 분석, 앱 안 알림 목록

발송 대상 추출을 뺀 것이 중요합니다. "30일 미접속 사용자에게" 같은 조건으로 대상을 뽑는 일은 각 서비스가 합니다. 우리는 받는 사람 목록과 내용을 받아 보내는 일만 합니다.

경계를 이렇게 그으면 우리 시스템이 사용자 데이터베이스를 알 필요가 없습니다.

평균과 피크가 17배 다르다

평균과 피크가 크게 다르고 폭주하는 쪽이 급하지 않은 알림이다 평균 발송량 초당 578 마케팅 발송이 시작되면 초당 1만. 17배 그런데 이 폭주는 급하지 않은 알림이다 비밀번호 재설정 알림이 그 뒤에 줄을 서면 1분 안에 도착이라는 요구를 어긴다 그래서 급한 것과 급하지 않은 것을 같은 줄에 세우지 않는다

하루 5천만 건 은 평균 초당 578건입니다. 그런데 마케팅 발송이 시작되면 피크 초당 1만 이 됩니다.

폭주하는 쪽이 급하지 않은 알림이라는 것이 핵심입니다. 비밀번호 재설정 알림이 마케팅 100만 건 뒤에 줄을 서면 1분 안에 도착이라는 요구를 어깁니다.

그래서 급한 것과 급하지 않은 것을 같은 줄에 세우지 않습니다. 이 판단이 뒤의 큐 구조를 정합니다.

숫자가 정하는 것

조건강제하는 것
평균 초당 578처리량은 부담이 아니다
피크 초당 1만받아 두고 나눠 보내야 한다
중요 알림 1분우선순위를 나눠야 한다
문자 건당 과금채널 선택이 곧 비용이다
중복 금지정확히 한 번은 불가능하다. 감지로 다룬다
수신 거부 준수발송 직전에 확인해야 한다

채널마다 성질이 다르다

한 시스템으로 세 채널을 다루지만 성질이 크게 다릅니다.

채널비용도달길이
푸시거의 없다앱을 지우면 못 받는다짧다
메일거의 없다스팸함으로 갈 수 있다길어도 된다
문자건당 과금가장 확실하다아주 짧다

같은 알림을 세 채널로 보내는 것이 기본이 아닙니다. 문자는 비싸고, 세 곳에서 같은 알림을 받으면 사용자가 짜증을 냅니다. 어느 채널로 보낼지가 판단입니다.

수신 거부를 요구사항에 못 박는다

수신 거부는 우리가 정하는 정책이 아닙니다. 마케팅 알림에는 법적 요구가 걸려 있고, 어기면 서비스 전체가 위험해집니다.

그래서 발송 직전에 확인합니다. 대상 목록을 만든 시점과 실제 발송 시점 사이에 사용자가 거부했을 수 있습니다. 목록이 클수록 그 시차가 커집니다.

면접에서 이렇게 나옵니다
  • Q.알림 시스템 설계에서 무엇을 먼저 보시겠습니까
  • Q.발송 대상 추출을 범위 밖으로 둔 이유가 무엇인가요
  • Q.같은 알림을 세 채널로 보내면 안 되나요

제공자가 경계다

핵심

알림 시스템의 특이한 점은 마지막 단계가 우리 것이 아니라는 것입니다. 푸시는 운영체제 제공자를, 문자는 통신사 쪽을, 메일은 메일 발송 서비스를 거칩니다.

통제가 끝나는 지점

알림 시스템의 마지막 단계는 우리가 통제하지 못하는 제3자 제공자다 우리가 통제하는 구간 서비스 알림 플랫폼 여기서부터는 통제 밖 제공자 사용자 제공자가 느려지거나 우리 요청을 제한할 수 있다 채널마다 제공자가 다르고 규칙도 다르다 그래서 채널마다 다른 것을 한 겹으로 감싼다 우리 코드는 알림을 보내고, 그 겹이 제공자 차이를 흡수한다 제공자를 바꿀 때 우리 코드가 바뀌지 않아야 한다

우리가 할 수 있는 것은 제공자에게 넘기는 것까지입니다. 그 뒤는 볼 수 없고 바꿀 수 없습니다.

우리 통제 안통제 밖
무엇을 언제 보낼지실제로 도착하는지
재시도 정책제공자의 속도 제한
채널 선택제공자 장애

이 경계를 인정하는 것이 설계의 출발점입니다. 도착을 보장하려 하지 말고, 넘기는 것까지를 확실하게 만들고 그 뒤는 관찰합니다.

채널마다 다른 것을 한 겹으로 감싼다

제공자마다 요청 형식과 인증 방식과 오류 코드가 다릅니다. 그것이 우리 코드 전체에 퍼지면 제공자를 바꿀 때 모든 곳을 고쳐야 합니다.

우리 코드는 "이 사람에게 이 알림을 보낸다" 만 말한다
겹 하나가 제공자 차이를 흡수한다

제공자를 바꿀 때 우리 코드가 바뀌지 않아야 합니다. 문자 제공자는 실제로 바뀝니다. 가격과 도달률 때문에 옮기는 일이 흔합니다.

제공자가 우리를 제한한다

제공자에게도 속도 제한이 있습니다. 피크 초당 1만 을 그대로 밀면 거절당합니다.

대응내용
제공자별 발송 속도에 상한을 둔다거절을 미리 피한다
거절을 받으면 속도를 줄인다상대의 신호에 반응한다
큐에 쌓아 두고 나눠 보낸다폭주를 흡수한다

처리율 제한 설계에서 우리가 만든 장치를 이번에는 우리가 지키는 쪽입니다. 상대가 알려 주는 재시도 시각을 따르고, 지키지 않으면 차단됩니다.

한 채널의 장애가 다른 채널을 막지 않게

문자 제공자가 느려지면 그 발송이 쌓입니다. 같은 일꾼과 같은 큐를 쓰면 푸시 알림도 함께 멈춥니다.

그래서 채널마다 큐와 일꾼을 나눕니다. 크롤러에서 호스트별로 큐를 나눈 것과 같은 구조이고, 이유도 같습니다. 한 곳의 느림이 다른 곳으로 번지지 않게 하는 것입니다.

제공자의 응답을 어떻게 읽나

제공자가 200을 주면 "받았다" 입니다. "도착했다" 가 아닙니다. 이 구분을 흐리면 도달률 지표가 실제와 크게 달라집니다.

응답
수락제공자가 우리 요청을 받았다
거절형식 오류나 속도 제한. 우리가 고칠 수 있다
나중에 오는 보고실제 도착 여부. 채널마다 신뢰도가 다르다

세 가지를 구분해 기록해야 무엇이 잘못됐는지 알 수 있습니다. 도달 추적은 뒤에서 따로 다룹니다.

면접에서 이렇게 나옵니다
  • Q.알림 시스템에서 제공자 경계가 왜 중요한가요
  • Q.채널별 제공자 차이를 어떻게 다루시겠습니까
  • Q.제공자가 우리 요청을 제한하면 어떻게 하나요

폭주와 우선순위

핵심

피크 초당 1만 이 몰릴 때 1분 안에 도착해야 하는 알림이 함께 있습니다. 두 요구를 같은 줄에서 만족시킬 수 없습니다.

한 줄이면 뒤에 선 것이 늦는다

한 줄에 섞으면 급한 알림이 대량 발송 뒤에 서고 줄을 나누면 먼저 나간다 한 줄에 섞으면 급한 알림 마케팅 100만 건이 앞에 있다. 그 뒤에 서면 몇 분이 걸린다 줄을 나누면 급한 줄. 양이 적다 대량 발송 줄 일꾼을 줄마다 배정하고 급한 줄에 먼저 준다 급한 줄은 양이 적어서 늘 비어 있다. 그것이 1분을 지킨다

마케팅 100만 건이 큐에 들어가고 그 뒤에 비밀번호 재설정 알림이 붙으면, 앞의 100만 건을 처리한 뒤에야 나갑니다. 초당 1만이라도 100초가 걸립니다.

그래서 줄을 나눕니다. 급한 줄과 대량 발송 줄을 따로 두고 일꾼을 배정합니다.

급한 줄은 양이 적어서 늘 비어 있다
그 비어 있음이 1분을 지켜 준다

몇 개로 나누나

무엇이 들어가나
급한 것인증 번호, 비밀번호 재설정, 결제와 보안 알림
보통댓글과 언급, 배송 상태
대량마케팅, 공지, 재참여 유도

셋이 흔한 선택입니다. 더 나누면 관리가 늘고, 둘로 줄이면 보통 알림이 대량 발송에 밀립니다.

보내는 서비스가 종류를 정합니다. 그런데 모두가 자기 알림을 급한 것으로 표시하려 하므로, 급한 줄에 넣을 수 있는 종류를 목록으로 관리해야 합니다. 아니면 급한 줄도 곧 막힙니다.

대량 발송을 일부러 늦춘다

대량 발송은 지연이 허용됩니다. 그래서 일부러 천천히 보냅니다.

이유내용
제공자 제한한꺼번에 밀면 거절당한다
우리 여력급한 알림에 자원을 남긴다
상대 서비스알림을 받고 몰려오는 접속을 펴 준다

세 번째가 특히 중요합니다. 100만 명에게 동시에 알리면 그 앱과 서버가 동시 접속을 받습니다. 알림 시스템이 상대 서비스를 무너뜨리는 셈입니다.

취소할 수 있어야 한다

대량 발송은 시작한 뒤 잘못된 것을 알게 되는 일이 흔합니다. 내용이 틀렸거나 대상이 잘못됐을 때입니다.

큐에 다 넣고 시작하면 취소할 방법이 없다
발송 작업을 하나의 단위로 두고 중단 가능하게 만든다

천천히 보내는 것이 취소 가능성을 만듭니다. 한꺼번에 밀어 넣으면 이미 나간 것을 되돌릴 수 없습니다. 두 이유가 같은 결론을 가리킵니다.

급한 줄이 막히면 무엇을 하나

급한 줄도 막힐 수 있습니다. 제공자 장애나 갑작스러운 인증 요청 폭증 때입니다.

이때는 대량 발송을 멈추고 자원을 급한 줄로 옮깁니다. 대량 발송은 지연이 허용되므로 멈춰도 됩니다. 우선순위가 있다는 것은 급할 때 무엇을 버릴지 정해 두었다는 뜻입니다.

버릴 것을 정해 두지 않은 우선순위는 이름만 있는 것입니다.

면접에서 이렇게 나옵니다
  • Q.피크 초당 1만 폭주 중에 1분 요구를 어떻게 지키나요
  • Q.모든 서비스가 자기 알림을 급한 것으로 표시하면 어떻게 하나요
  • Q.대량 발송을 일부러 늦추는 이유가 무엇인가요

더 많은 개념과 문제는 가입 후 이용할 수 있어요

먼저 5문제 맛보기

알림 시스템 설계 면접 빈출 질문

실제 면접에서 자주 나오는 질문들입니다

Q.

알림 시스템 설계에서 무엇을 먼저 보시겠습니까

요구사항과 두 종류의 알림 개념 정리 보기
Q.

발송 대상 추출을 범위 밖으로 둔 이유가 무엇인가요

요구사항과 두 종류의 알림 개념 정리 보기
Q.

같은 알림을 세 채널로 보내면 안 되나요

요구사항과 두 종류의 알림 개념 정리 보기
Q.

수신 거부를 언제 확인하시겠습니까

요구사항과 두 종류의 알림 개념 정리 보기
Q.

알림 시스템에서 제공자 경계가 왜 중요한가요

제공자가 경계다 개념 정리 보기
Q.

채널별 제공자 차이를 어떻게 다루시겠습니까

제공자가 경계다 개념 정리 보기
Q.

제공자가 우리 요청을 제한하면 어떻게 하나요

제공자가 경계다 개념 정리 보기
Q.

한 채널의 장애가 다른 채널에 번지지 않게 하려면

제공자가 경계다 개념 정리 보기

이런 점이 좋아요

통제 밖의 실패를 설계에 담는 감각

급한 것과 급하지 않은 것을 섞지 않는 판단

한 줄의 단가가 구조를 바꾸는 것을 계산으로 확인하는 훈련

지금 바로 시작하세요

무료로 알림 시스템 설계 퀴즈를 풀고, AI 오답 분석으로 실력을 키우세요.