목록 보기
하루 N억 건의 알림 시스템 구축기 (1): 카카오뱅크는 어떻게 발송 플랫폼의 새로운 뼈대를 세웠나
아키텍처

하루 N억 건의 알림 시스템 구축기 (1): 카카오뱅크는 어떻게 발송 플랫폼의 새로운 뼈대를 세웠나

카카오뱅크
카카오뱅크
2026년 9월 7일

두줄요약

카카오뱅크가 대규모 알림 발송기의 성능 병목과 복잡한 구조를 해결하기 위해 Service/Core Layer 분리 아키텍처를 도입했습니다. 개발자는 단순한 인터페이스만 구현하고, Lock-Free와 Work-Stealing 같은 최적화는 Core Layer에 숨겼습니다.

문제 상황

  • 하루 N억 건의 알림을 처리해야 하는 발송기에서 처리량, P99 지연시간, GC 안정성 요구가 동시에 존재
  • 레거시는 요청마다 Thread 생성, 단일 큐 병목, 불명확한 구조로 성능과 확장성 모두 한계
  • 새로운 채널 추가와 공통 기능 적용 시 내부 구조를 모두 이해해야 해 멘탈 모델과 유지보수 비용이 과도

원인 분석

  • Thread Pool 미사용과 요청별 Thread 생성으로 Context Switching, 메모리 사용량, OOM 위험 증가
  • 단일 큐 구조로 느린 작업이 뒤의 빠른 작업을 막아 Tail Latency가 확대
  • 계층 경계 부재로 공통 로직의 위치와 채널 간 영향 범위가 불명확

해결 방법

  • Service Layer와 Core Layer를 분리해 개발자에게는 단순한 인터페이스만 제공
  • RequestHandler와 Sender를 선언적 API로 단순화해 비즈니스 로직만 구현하도록 구성
  • Core Layer에서 Work-Stealing, Lock-Free, Barrier, Zero-Copy, GC 최적화를 캡슐화
  • 큐 분리와 중앙 스캔 기반 Age-Based Work-Stealing으로 오래 대기한 메시지 우선 분산

다음 읽기

#Kotlin 주제를 이어서 읽기

만능도구는 없다, 적절한 선택은 있다: Spring Statemachine으로 완성한 알림 2.0

Spring Statemachine으로 알림 시스템의 상태 관리를 체계화한 사례를 다뤘습니다. 직접 구현과 프레임워크 도입의 장단점, TTL 관리 같은 주의점도 함께 정리했습니다.

카카오뱅크
카카오뱅크
백엔드

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...