#MessageQueue #Scale-out
카카오뱅크의 알림서비스를 소개합니다. 안정적이고 지속가능한 서비스를 위해 뭘 선택했고 그 선택에는 어떤 장단점이 있는지, 더 나아가 그 단점을 보완하는 과정을 알 수 있습니다.
발표자 : mason.kim 카카오뱅크에서 서버 개발자로 일하고 있는 mason입니다. 수신/여신/인증 등 다양한 부분에서 개발하고 있으며, 더 나은 코드를 작성하기 위해 노력하고 있습니다.
알림 서비스로시작하는 서버 개발김민수 mason.kim카카오뱅크Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao.if(kakao)2022
View Slide
카카오뱅크의 알림이체, 카드 사용, 광고 등의이벤트 발생 시 알림을 생성
카카오페이 카카오모빌리티 KB스타뱅킹
알림 생성Database알림 서버알림 생성
알림 조회알림 조회Database알림 서버
알림 생성알림 조회Database알림 서버
알림 생성에 부하가 걸린다면?알림 생성알림 조회Database알림 서버
알림 생성알림 조회알림 생성에 부하가 걸린다면?Database알림 서버
생성 / 조회 서버 분리생성 서버조회 서버Database
여전히 연계시스템에는 장애를 전파조회 서버생성 서버지연 응답Database
여전히 연계시스템에는 장애를 전파생성 서버지연 응답
신뢰성 없는 생성 서버•짧은 Timeout 설정•비동기 호출생성 서버지연 응답
생성 서버의 비동기빠른 응답생성 서버AsyncThread Pool1. 요청2.Async하게 알림 생성3.응답
Decoupling빠른 응답AsyncThread Pool알림 요청 알림 생성생성 서버
비동기의 단점빠른 응답AsyncThread Pool알림이 정상적으로만들어졌는지 당장 알 수 없네🥲생성 서버
빠른 응답AsyncThread Pool생성 서버이체하고 바로 알림 조회했는데알림이 없네🥲비동기의 단점
생성 서버가 다운되거나 재시작되면?빠른 응답AsyncThread Pool생성 서버
빠른 응답알림 유실AsyncThread Pool생성 서버생성 서버가 다운되거나 재시작되면?
Message Queue 도입PRODUCER CONSUMERQUEUE
Message Queue 도입생성 서버QueueConsumerEnqueue DequeueDatabase
Decoupling생성 서버ConsumerDequeue알림 요청 알림 생성EnqueueQueueDatabase
생성 서버ConsumerDequeueQueueEnqueueDatabaseConsumer에 장애가 발생하면?
생성 서버ConsumerDequeueAckEnqueueQueueDatabaseConsumer에 장애가 발생하면?
Consumer에 장애가 발생하면?생성 서버ConsumerDequeueAckEnqueueQueueDatabase
Disk생성 서버QueueConsumerEnqueue DequeueDatabaseMessage Queue에 장애가 발생하면?
Message Queue에 장애가 발생하면?Disk생성 서버ConsumerEnqueue Dequeue요청 저장DatabaseQueueDatabase
Disk생성 서버ConsumerEnqueue DequeueQueue요청 저장DatabaseDatabase
알림 조회알림 조회 DatabaseApp
고객에게 안정적이고 빠른 서비스 제공간단해진 조회무거워진 생성
추가 요구사항최대 12개월 전 알림까지 조회하고 싶어요.대용량의 알림 템플릿을 xlsx로 다운로드 / 업로드하고 싶어요.고객센터운영팀
내부 서비스내부 서비스Database서비스Long Range Query,OOM 가능성 있는 요청
최근 데이터 위주로 조회시간9월 10월 11월 12월. . .
Database 분리ServiceDatabaseArchiveDatabase내부 서비스서비스Long Range Query,OOM 가능성 있는 요청90일 전 ~ 오늘365일 전 ~ 90일 전
알림 파기4개월 데이터
4개월 데이터알림 파기Delete From TableWhere (3ѐਘ )
Partitioning9월 10월 11월 12월
Partitioning10월 11월 12월9월
3억4억5억21.08 22.02 22.08점점 늘어나는 알림작년 대비25% 상승
Application Scale-out
Application Scale-out...
A B CD E FG H IJ K LM N OP Q RS T UV W XY ZSharding
A B CD E FG H IJ K LM N OP Q RS T UV W XY ZShardingH
A B CD E FG H IJ K L MN O PQ R SShardingT U VW X Y ZH
Shardingalgorithm(user) => 1 ~ 16Schema 1Schema 5Schema 9Schema 13Schema 2Schema 6Schema 10Schema 14Schema 3Schema 7Schema 11Schema 15Schema 4Schema 8Schema 12Schema 16
ShardingSchema 1Schema 5Schema 9Schema 13Schema 2Schema 6Schema 10Schema 14Schema 3Schema 7Schema 11Schema 15Schema 4Schema 8Schema 12Schema 16
ShardingSchema 1Schema 9Schema 2Schema 10Schema 3Schema 11Schema 4Schema 12Schema 5Schema 13Schema 6Schema 14Schema 7Schema 15Schema 8Schema 16
정리
E.O.D