알림톡 모듈 (AWS SQS)

SQS 기반 알림톡 워커 구현

호기심 많은 솔이 2026. 5. 20. 22:48

- 문제 상황 : 특정 비즈니스 이벤트가 발생했을 때, 담당자에게 정해진 시간 안에 알림 전달 필요.

 

- 해결 방향 : 이벤트와 관련된 사용자에게 외부 알림톡 API를 통해 안내 메시지를 발송하도록 설계 및 구현

 

 

<설계>

[흐름 정리]

1. 비즈니스 이벤트 발생

2. Producer가 알림 발송 작업을 Outbox에 저장

3. Producer가 메시지 큐에 작업 ID 전송

4. Worker가 큐 메시지 수신

5. Worker가 Outbox 작업을 선점

6. Worker가 알림 템플릿 조회

7. Worker가 발송에 필요한 데이터를 조회하는 SP 실행

- 테이블들을 상황에 맞게 조회, 조인하여, 필요한 데이터들을 가져옴

8. Worker가 템플릿 파라미터 구성

- 위에서 가져온 필드들을 Java에서 파싱하여 템플릿에 맞게 templateParam을 구성.

9. 구성한 templateParam으로 외부 알림톡 API 호출

10. 발송 성공 시 OUTBOX 성공 처리

11. 발송 실패 시 OUTBOX 실패 처리 

 

[링크] OUTBOX 패턴이란?

[링크] AWS SQS란?

 

 

[테이블 및 SP]

1. OUTBOX 테이블 : 발송 작업 단위 저장, 선점 및 성공/실패 결과 저장용

(**워커가 죽었을 때 PROCESSING 상태가 너무 오래 묶이지 않도록 하기 위해 LOCK_UNTIL 컬럼을 두고, LOCK 만료 시간을 설정)

2. 알림톡 발송 이력 테이블 : 실제 알림톡 발송 결과 저장용

3. 알림톡 템플릿 관리 테이블 : 케이스 별 템플릿 관리용

 

a. OUTBOX 선점 SP

b. OUTBOX 성공 처리 SP 

c. OUTBOX 실패 처리 SP 

d. 첫 번째 템플릿(특정 이벤트 발생 알림)발송 데이터 조회 SP

 

 

[템플릿 구성]

전제 :

- 추후 여러 템플릿이 추가될 수 있어 확장성 고려

- 템플릿 별로 필요한 데이터가 달라 templateId 기준으로 조회 로직 분리

- Worker가 templateId에 맞는 조회 로직 실행 후 templateParam 구성

- 템플릿 코드는 고정값 (템플릿 별로 정해져 있음)

- 플랫폼 별로 서로 다른 큐 사용 예정 -> 플랫폼 별 코드로 구분할 필요 X