Write-Through vs Write-Behind: 캐시 쓰기 전략 완벽 비교

캐시 쓰기 전략이 필요한 이유 캐시는 자주 조회되는 데이터를 빠르게 읽기 위해 사용하지만, 데이터를 ‘쓸 때’는 캐시와 실제 저장소(DB)의 데이터를 어떻게 동기화할지 고민이 필요하다. 이때 등장하는 대표적인 전략이 Write-Through와 Write-Behind(Write-Back)다. 두 방식 모두 캐시에 데이터를 저장한다는 점은 같지만, DB에 언제 반영하느냐에서 큰 차이가 있다. Write-Through: 캐시와 DB를 동시에 갱신 Write-Through는 데이터를 쓸 때 캐시와 DB에 … 더 읽기

Thundering Herd 문제, 왜 발생하고 어떻게 막을까

Thundering Herd 문제란? Thundering Herd(썬더링 허드)는 ‘많은 프로세스나 스레드가 동시에 하나의 자원이나 이벤트를 기다리다가, 그 이벤트가 발생하는 순간 한꺼번에 깨어나 자원 경쟁을 벌이는 현상’을 말합니다. 문제는 그 중 실제로 자원을 얻어 작업을 진행할 수 있는 건 하나뿐인데, 나머지는 헛되이 깨어났다가 다시 잠드는 데 CPU와 스케줄링 비용을 낭비한다는 점입니다. 비유하자면, 문이 하나뿐인 가게 앞에 손님 100명이 … 더 읽기

캐시 스탬피드(Cache Stampede)란? 대량 요청이 한꺼번에 몰리는 이유

캐시 스탬피드란 무엇인가 캐시 스탬피드는 캐시에 저장된 데이터가 만료되는 순간, 동일한 데이터를 요청하는 대량의 트래픽이 한꺼번에 원본 서버(DB)로 몰려가는 현상을 말한다. 영어 단어 ‘Stampede’가 ‘동물들이 한꺼번에 우르르 몰려가는 것’을 뜻하는 것처럼, 평소에는 캐시가 막아주던 요청들이 캐시 만료 시점에 한 번에 뒤로 쏟아지는 것이다. 이를 ‘캐시 미스 폭풍(Cache Miss Storm)’ 또는 ‘썬더링 허드(Thundering Herd)’라고도 부른다. 보통 … 더 읽기

Write Amplification, SSD 수명을 갉아먹는 주범

Write Amplification이란? Write Amplification(쓰기 증폭, WA)은 호스트(운영체제)가 SSD에 실제로 쓰려고 요청한 데이터양보다 SSD 내부에서 더 많은 양의 데이터가 물리적으로 쓰이는 현상을 말합니다. 예를 들어 사용자가 4KB짜리 파일 하나를 수정했는데, SSD 내부적으로는 그보다 훨씬 큰 용량의 데이터를 다시 쓰는 경우가 흔합니다. 이 비율을 수치화한 것이 WA 지수이며, ‘WA = 실제 낸드에 쓰인 데이터량 / 호스트가 요청한 … 더 읽기

Snowflake ID란? 분산 환경에서 고유 ID 생성하기

Snowflake ID의 정의 Snowflake ID는 트위터(현 X)가 개발한 분산 환경용 고유 ID 생성 방식입니다. 여러 서버에서 동시에 데이터를 만들어도 서로 겹치지 않는 유일한 값을 빠르게 생성하기 위해 만들어졌습니다. 일반적으로 DB의 auto increment 기능을 쓰면 서버가 하나일 때는 문제가 없지만, 여러 서버가 동시에 데이터를 저장하는 분산 환경에서는 중복이나 순서 충돌이 발생할 수 있습니다. Snowflake는 이런 문제를 … 더 읽기

분산 시스템의 숨은 함정, Clock Skew가 미치는 영향

Clock Skew란 무엇인가 Clock Skew(시계 오차)는 여러 서버가 각자 가지고 있는 시스템 시계가 서로 다른 시각을 가리키는 현상을 말합니다. 하나의 서버에서 동작하는 애플리케이션이라면 시간 개념이 단순하지만, 분산 시스템에서는 수십, 수백 대의 서버가 각자의 하드웨어 클록을 기준으로 동작하기 때문에 시간이 조금씩 어긋나는 일이 자연스럽게 발생합니다. 비유하자면, 여러 명이 각자 다른 손목시계를 차고 마라톤 기록을 재는 상황과 … 더 읽기

Fencing Token: 분산 락이 놓치는 빈틈을 막는 안전장치

Fencing Token이란 무엇인가 분산 시스템에서 여러 서버가 동시에 하나의 자원에 접근하지 못하도록 막기 위해 분산 락(Distributed Lock)을 사용합니다. 하지만 락을 획득한 서버가 GC 정지나 네트워크 지연 때문에 오랫동안 응답하지 못하면, 락 서버는 시간 초과로 판단해 락을 풀어버리고 다른 서버에게 락을 넘겨줄 수 있습니다. 문제는 원래 락을 가졌던 서버가 나중에 깨어나 자신이 여전히 락을 쥐고 있다고 … 더 읽기

분산 시스템의 Split Brain 현상이란? 원인과 대응 방법 정리

Split Brain이란 무엇인가 분산 시스템에서 여러 대의 서버가 하나의 클러스터를 이루어 동작할 때, 네트워크 장애 등의 이유로 클러스터가 두 개 이상의 그룹으로 쪼개지는 상황을 ‘Split Brain’이라고 부릅니다. 문제는 이때 각 그룹이 서로의 존재를 인지하지 못한 채 자신이 유일한 정상 그룹이라고 착각하고 독립적으로 리더를 선출해 동작을 계속한다는 점입니다. 결과적으로 하나의 시스템에 두 개의 ‘머리(Brain)’가 동시에 존재하게 … 더 읽기

TCP Slow Start란 무엇인가

TCP Slow Start의 정의 TCP Slow Start는 네트워크 연결이 처음 시작될 때 데이터 전송 속도를 급격히 높이지 않고, 점진적으로 늘려가는 혼잡 제어(Congestion Control) 알고리즘입니다. TCP는 데이터를 얼마나 빠르게 보낼지 결정할 때 ‘혼잡 윈도우(cwnd, Congestion Window)’라는 값을 사용하는데, Slow Start는 이 cwnd 값을 처음에는 작게 설정했다가 점점 키워나가는 방식으로 동작합니다. 이름은 ‘느린 시작’이지만 실제로는 지수적으로 빠르게 … 더 읽기

TCP 3-Way Handshake 제대로 이해하기

TCP 3-Way Handshake란? TCP(Transmission Control Protocol)는 데이터를 안정적으로 주고받기 위해 통신 전에 반드시 ‘연결’을 먼저 맺습니다. 이때 사용되는 절차가 바로 3-Way Handshake입니다. 이름 그대로 클라이언트와 서버가 총 세 번의 메시지를 주고받으며 서로 통신할 준비가 되었는지 확인하는 과정입니다. 마치 전화를 걸 때 ‘여보세요?’라고 말하고, 상대방이 ‘네, 들립니다’라고 답하며, 다시 ‘저도 잘 들려요’라고 확인하는 과정과 비슷합니다. 이렇게 … 더 읽기