Archive Orbit

Browse the blog as a moving field.

Recent notes stay near the surface. Recurring threads stay close by. The page acts as an orbit around the archive.

Posts15
Threads8
Recent8

Recent flow

Compact stream
01

분산 락에서 blind unlock이 더 위험했던 이유

blind unlock이 임계 구역의 의미를 어떻게 무너뜨렸는지 해부하고, 왜 lock correctness 문제를 Redis 전체가 아니라 lock path 안에서 먼저 풀었는지, 그리고 그 뒤에도 왜 stale owner 문제는 남는지 설명합니다.

02

대용량 CSV 다운로드에서 손상된 ZIP이 더 위험했던 이유

왜 포맷보다 응답의 수명주기를 먼저 봐야 했는지, 그리고 timeout 증설 대신 어떤 기준으로 export 경로를 다시 나눴는지 설명합니다.

03

같은 인덱스인데 성능이 달라지는 이유

인덱스가 있다는 사실보다, 결국 몇 번의 추가 읽기와 몇 건의 재확인을 만드는지가 더 중요하다는 점을 설명합니다.

04

MySQL Lock과 격리 수준이 진짜 문제되는 순간

잠금과 격리 수준을 이름으로 외우기보다, 무엇을 어떤 경로로 잠그고 어떤 읽기를 허용하는지로 보는 방법을 설명합니다.

05

MVCC는 잠금 없는 읽기를 어떻게 만드는 걸까

undo log, read view, current read를 기준으로 MVCC가 왜 잠금 없는 읽기를 가능하게 하는지 설명합니다.

06

MySQL 엔진과 InnoDB는 어떻게 역할을 나눌까

MySQL 엔진과 InnoDB가 어디서 역할을 나누고, handler와 클러스터링 구조가 왜 실행 계획의 감각을 바꾸는지 설명합니다.

07

복구 가능한 푸시 알림을 다시 설계한 방법

중복 발송과 유실을 만들던 푸시 알림 전달 모델을, 복구 가능한 작업으로 다시 정의한 과정을 설명합니다.

08

JPA batch insert가 생각처럼 안 됐던 이유

JPA batch insert가 기대한 만큼 묶이지 않았던 원인을 따라가며, 실제로 어디에서 성능이 새는지 다룹니다.