대규모 트래픽을 다루는 메시징 시스템을 설계할 때, 가장 골치 아픈 문제 중 하나는 ‘수십만 건의 발송 요청에 대한 요금(포인트) 차감을 어느 시점에 할 것인가?’ 입니다.사용자의 포인트는 회사의 핵심 자산과 직결되므로 완벽한 정합성을 요구합니다. 이번 글에서는 대용량 발송 시스템에서 포인트를 차감하는 최적의 위치와, 동시성 이슈(이중 지불)를 방어하는 아키텍처 설계에 대해 정리해 보았습니다.1. 차감 로직, 어디에 두어야 할까? (Web vs Targeter)발송 요청을 받는 맨 앞단(API Gateway/Web)과 실제 발송 대상을 필터링하는 뒷단(Targeter/Worker) 중 어디서 요금을 차감하는 것이 맞을까요? 결론부터 말하자면 Targeter에서 차감하는 방식이 압도적으로 유리합니다.❌ W..
Redis특징인메모리 저장소더보기1. 일반적인 DB (Disk-based)저장 위치: 하드디스크(HDD)나 SSD특징데이터가 영구적으로 저장되지만, 물리적인 디스크를 읽고 써야 하므로 속도가 상대적으로 느림. 우리가 컴퓨터에서 파일을 저장하고 불러올 때 느끼는 그 속도와 비슷함2. 인메모리 DB (Memory-based)저장 위치: RAM (메모리)특징: 전기적 신호로 데이터를 주고받기 때문에 디스크 방식보다 수십, 수백 배 빠름.한계RAM은 휘발성이라 전원이 꺼지면 데이터가 날아간다는 단점.그래서 보통 중요한 '원본 데이터'를 저장하기보다는, 속도가 중요한 '임시 데이터(캐시)'를 저장하는 용도로 많이 씀.Key-Value 구조더보기일반 DB (Table 구조) : "회원 테이블의 ID가 123인 행에..
스택 : push 연산 : pop 연산 후입선출 (LIFO: Last-In First-Out) 스택의 구조 ㆍ스택상단 (stack top) : 스택에서 입출력이 이루어지는 부분 ㆍ스택하단 (stack bottom) : 스택상단의 반대쪽인 바닥부분 ㆍ요소 (element) : 스택에 저장되는 것 ㆍ공백스택 (empty stack) : 요소가 하나도 없는 스택 자료의 출력순서가 입력순서의 역순으로 이루어져야 할 경우 매우 긴요하게 사용됨. 추상 자료형 스택 : 0개 이상의 요소를 가지는 선형 리스트의 일종 스택의 응용 ㆍ괄호 검사 문제 ㆍ후위 표기 수식의 계산 ㆍ미로문제 *스택이 공백상태이면 top은 -1 원소의 개수는 top 인덱스 + 1