분산 시스템 환경에서의 슬랙봇 '앙몬드' 개발기
·2024.08.27 19:00
카카오페이가 분산 시스템 환경에서 슬랙봇을 운영하며 겪은 동시성 문제를 트랜잭션과 Lock으로 해결한 과정을 공유한다.
카카오페이는 서비스 안정성과 고가용성을 위해 Kubernetes(k8s) 기반의 리전 클러스터를 활용하여 가산과 판교 두 지역에 서비스를 분산 운영한다.
사내 슬랙봇 앙몬드를 이 환경에서 운영하던 중, **크론잡(Cronjob)**이 지정된 시간에 한 번만 실행되지 않고 간헐적으로 두 번씩 발송되는 동시성 문제가 발생했다. 이는 두 지역의 서버가 동시에 크론잡을 처리하면서 발생한 현상이었다.
이를 해결하기 위해 데이터베이스 트랜잭션과 **SELECT FOR UPDATE LOCK**을 적용했다. 트랜잭션으로 작업의 원자성을 보장하고, 비관적 잠금(Pessimistic Write Lock)을 통해 여러 서버가 동일한 데이터에 동시에 접근하는 Race Condition을 방지하여 데이터 일관성을 확보했다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.