DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 카카오뱅크
  • Related reads#Architecture
#Backend

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

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

Summary

하루 N억 건의 카카오뱅크 알림 엔진 설계법: 개발자의 '멘탈 케어'와 고성능 플랫폼을 모두 잡은 아키텍처

복잡한 Lock-Free와 Work-Stealing 최적화는 Core에 숨겨두고, 비즈니스 추가는 단 3개의 메서드로 끝내는 완벽한 계층 분리 가이드

본 아키텍처 분석 글은 카카오뱅크가 하루 수억 건의 알림 트래픽을 지연 없이 안정적으로 처리하기 위해 통합 메시징 시스템(UMS) 발송기를 전면 재구축한 실무 혁신 사례를 담고 있습니다. 성능 향상을 극대화하면서도 코드의 가독성과 채널 확장성을 보장하기 위해 'Service/Core 분리'라는 과감한 설계를 도입한 구체적인 과정과 고난도 기법을 공유합니다. 플랫폼의 본질인 '개발자의 멘탈 모델 단순화'가 대규모 백엔드 시스템 설계에 어떻게 적용되는지 실제 Kotlin 코드 및 시나리오와 함께 명확히 설명해 줍니다.

  • 01구조적 한계 극복: 매 요청마다 스레드를 무한히 늘리고 단일 큐 병목으로 지연을 초래하던 레거시 구조의 완전한 청산
  • 02Service/Core 계층 철저 분리: 복잡한 고성능 인프라 기술은 내부에 캡슐화하고 비즈니스 개발자는 간결한 인터페이스만 구현하도록 설계
  • 03Age-Based Work-Stealing 도입: 단순히 자원 효율 향상을 넘어 '오래 대기한 메시지를 빠르게 배송'하는 신뢰성 최적화 스케줄링 설계
  • 04Lock-Free & Zero-Copy 큐 구현: CAS 원자적 연산과 Barrier 기법을 결합하여 락 획득 오버헤드와 배열 복사 메모리 비용을 전면 차단
  • 05강력한 가비지 컬렉션(GC) 튜닝: 고정 크기 배열 적용, 즉각적인 null 대입 및 Kotlin Inline Class 활용으로 동시성 환경 속 GC 지연 최소화

+RECOMMENDATION

대형 트래픽 환경에서 실시간성 메시징 시스템이나 고성능 이벤트 드리븐 파이프라인을 구축하고자 하는 시니어 서버 엔지니어분들께 적극 권장합니다. 특히, 플랫폼 고도화와 팀 내 협업 생산성 향상(DX) 사이에서 갈등하고 계신 테크 리더분들에게 계층 분리를 통한 멘탈 모델 캡슐화 설계 노하우가 훌륭한 나침반이 될 것입니다.

The Problem

레거시 알림 발송기는 요청 발생 시마다 새로운 스레드를 무분별하게 생성하여 발생하는 컨텍스트 스위칭 오버헤드와 메모리 부족(OOM) 문제, 단일 큐 구조로 인한 후행 작업 지연(Tail Latency) 현상을 안고 있었습니다. 또한 채널 추가 시 스레드 풀 및 재시도 로직 등 시스템 내부 구현을 모두 파악해야 해 개발자의 인지 과부하를 초래하고 확장성이 떨어지는 문제가 있었습니다.

The Solution

비즈니스 로직을 처리하는 'Service Layer'와 동시성 및 최적화를 담당하는 'Core Layer'로 계층을 철저히 분리하고, 개발자에게는 3개의 핵심 메서드만 선언하면 되는 단순한 인터페이스를 제공했습니다. 성능 최적화를 위해 CAS(Compare-And-Set)와 Barrier를 기반으로 하는 Lock-Free 및 Zero-Copy 방식의 Age-Based Work-Stealing 큐 아키텍처와 JVM 가비지 컬렉션(GC) 부하 완화를 위한 최적화 기법을 도입했습니다.

The Result

새로운 아키텍처 설계를 통해 시스템 복잡성을 내부로 감추어 개발자가 비즈니스 로직 개발에만 몰두할 수 있게 멘탈 모델을 단순화했으며, 10,000 TPS 이상의 고처리량과 극도로 낮은 P99 지연시간 안정성을 달성했습니다.

Trade-off

최적화 기법(CAS, Barrier 기반의 무대기 알고리즘)이 내부 Core Layer로 격리되어 비즈니스 서비스 개발자의 생산성은 극대화되었으나, 반대로 Core Layer 자체의 기술적 추상화 수준과 동시성 제어 복잡성이 매우 높아져 이를 관리하고 검증해야 하는 소수 플랫폼 핵심 엔지니어들의 유지보수 전문성 요구치가 대폭 증가하는 결과가 수반되었을 것으로 판단됩니다.

03

Key Concepts

Concept · 01

Work-Stealing (Age-Based)

병렬 처리 아키텍처에서 특정 일꾼(Worker)에게 부하가 몰릴 때, 유휴 일꾼이 바쁜 일꾼의 대기 작업을 가로채서(Steal) 대신 처리해 주는 부하 분산 기법입니다.

  • 알림 시스템 특성에 맞추어 일반적인 유휴 상태 기준 분산이 아닌, 오래 대기한 메시지(Age)를 실시간 추적하여 자동 배분하는 '데이터 중심 알고리즘'으로 변형 적용했습니다.
  • 중앙 관리자가 100ms마다 모든 큐를 모니터링하여 생성 시각이 500ms를 초과한 대기 큐를 포착할 때 작업을 효율적으로 나누도록 보장합니다.
Concept · 02

Lock-Free & CAS (Compare-And-Set)

멀티스레드 환경에서 데이터 동기화 시 락(Lock)을 걸어 스레드를 대기시키지 않고, CPU 수준의 원자적 비교 연산(CAS)을 통해 동시성 경합 문제를 즉각 해결해 주는 무대기 기법입니다.

  • Work-Stealing 시 초당 수없이 발생하는 큐 분할 시점의 경합을 극복하기 위해 synchronized 블록 대신 Atomic 연산 및 Barrier 메커니즘을 사용해 성능 병목을 예방했습니다.
  • 인덱스를 이용한 경계선 설정 방식을 결합하여 락 오버헤드가 누적되지 않는 견고한 멀티스레드 큐를 제작했습니다.
Concept · 03

Zero-Copy & GC 최적화

메모리 영역에서 원본 배열 데이터를 복사하지 않고 인덱스 위치 값만 변경하여 데이터를 이관하고, 사용을 다한 힙 메모리 객체를 최단 시간 내 회수할 수 있도록 돕는 메모리 제어 최적화 기술입니다.

  • Work-Stealing 과정에서 큐를 쪼갤 때 물리적 객체를 새로 할당하지 않고 Barrier 인덱스 값 조정을 통해 고속 Zero-Copy 분할을 유도했습니다.
  • 처리가 끝난 태스크 요소를 즉각 null로 비워주어 JVM Heap 영역의 Old Generation 승격 현상을 사전에 무력화하고 Full GC를 확실히 방어했습니다.
Continue reading · same source

카카오뱅크More from 카카오뱅크

View all posts from 카카오뱅크
  • 금융사를 위한 AWS GameDay 2026: 카카오뱅크 2연패 이야기 🏆

    AWSDevOpsAI
    1개월 전
  • AI, 고객 행동의 순서를 읽다: 카카오뱅크 시퀀스 기반 FDS 모델 개발기

    Vision TransformerTime-series ClassificationMetric Learning
    3개월 전
  • 사람이 기다리지 않는 담보심사시스템 설계

    Deferred BatchAsynchronous ProcessingCore Banking
    4개월 전
  • 금융 보안 퀴즈, AI에게 풀게 해봤습니다: 2025 금융 AI Challenge 우수상 후기

    LLM OptimizationMoERAG
    6개월 전
  • Agentic AI의 시대, AWS re:Invent 2025 현장을 가다

    Agentic AIAWS re:Invent 2025Amazon Bedrock
    6개월 전

Related reads#Architecture

Explore #Architecture
라인·AI Agent

AI를 전제로 다시 설계하다, Tech-Verse 2026 참관기

#Architecture1주 전
올리브영·Kafka

고객의 취소할 권리를 보장하다

#Architecture1주 전
여기어때·Frontend Architecture

항공 프론트엔드 구축기 (10/10): 폴더 이름 앞의 기호 하나

#Architecture1주 전
우아한형제들·ArchUnit

문서로만 지키던 아키텍처 규칙, 테스트 코드로 강제하기

#Architecture1주 전
올리브영·Kotlin

배송최적화 시스템 구축기 Part 02. 복잡한 비즈니스 로직에 유연한 디자인 패턴 입히기

#Architecture2주 전

Source

카카오뱅크
카카오뱅크
Engineering Blog

Published · September 7, 2026

Topics

ArchitectureKotlinLock-FreeWork-StealingGC Tuning