무너지는 Spring 서버 1 - CPU는 놀고 있는데 API가 느리다: 업스트림 하나가 무관한 엔드포인트를 죽이는 과정을 thread dump 세 장으로 읽기 실무 사례 Notes 계획에만 있고 안 쓴 실험이 다섯 개 있었다. 그중 첫 번째다. ParityPay 9편에서 타임아웃 없는 외부 호출이 Tomcat 스레드 200개를 24초에 고갈시킨다는 것을 산술로 보였는데, 그 글의 한계에 “컨테이너 리소스 제한이 없다”와 “thread dump로 확인하지 않았다”가 남아 있었다. 이번에는 리소스 제한을 걸고 dump를 떴다. 저... 2026/09/23 Notes, SpringOpsLab 무너지는 Spring 서버를 재현하고 고치기 1편
CDC의 원리와 한계 - 로그 기반 변경 포착, 초기 스냅샷, 스키마 변경 Notes DB의 변경을 다른 시스템에 전달하는 방법으로 CDC가 널리 쓰인다. “애플리케이션 코드를 건드리지 않고 변경을 가져온다”는 점이 매력인데, 그 대가가 어디에 있는지는 덜 이야기된다. 원리를 보면 무엇이 공짜이고 무엇이 아닌지가 갈린다. 세 가지 방식 폴링. updated_at > ?로 주기적으로 조회한다. 구현이 단순하고 DB 기능에 의존하... 2026/09/19 Notes, Database
Martin Kleppmann 「How to do distributed locking」 리뷰 — 효율을 위한 락과 정확성을 위한 락, fencing token이 막는 것과 못 막는 것, 그리고 lease의 시계는 누구 것인가 Tech Blog Review 원문: How to do distributed locking — Martin Kleppmann, 2016-02-08 10년 된 글이다. 이 시리즈의 첫 글로 고른 이유는, 분산락에 대해 내가 실무에서 만든 것과 프로젝트에서 잰 것이 전부 이 글의 문장 안에 들어가기 때문이다. 지분율 시스템의 SETNX + TTL + 소유 토큰 락은 원문이 “효율을 ... 2026/09/18 TechBlog, Kleppmann 권위자와 개인 기술 블로그 리뷰 1편
Airbnb 「Avoiding double payments in a distributed payments system」 리뷰 — 네트워크와 DB 트랜잭션을 섞지 않는 세 단계, 재시도 가능 여부의 분류, 그리고 복제본을 읽으면 이중 결제가 나는 이유 Tech Blog Review 원문: Avoiding double payments in a distributed payments system — The Airbnb Tech Blog, Jon Chew·Ninad Khisti, 2019-04-17 7년 된 글이다. 고른 이유는 이 글이 결제 멱등성 글의 원형이기 때문이다. 이후 국내외 결제 글이 “멱등 키를 받고, 재시도 가능 여부... 2026/09/17 TechBlog, Airbnb 빅테크 기술 블로그 리뷰 75편
TLS 핸드셰이크의 비용 - 세션 재개와 0-RTT의 대가 Notes HTTPS를 켜면 느려진다는 말은 절반만 맞다. 암호화 연산 자체는 현대 CPU에서 거의 공짜에 가깝고, 비용의 대부분은 연결을 맺을 때의 왕복에 있다. 그래서 대책도 암호화를 줄이는 것이 아니라 왕복을 줄이는 쪽이다. 비용이 어디에 있는가 TLS의 비용은 셋으로 나뉜다. 내용 크기 ... 2026/09/13 Notes, Network
카카오뱅크 「하루 N억 건의 알림 시스템 구축기 (1)」 리뷰 — P99의 80%가 대기였다는 진단, Age 기반 Work-Stealing, 그리고 큐를 나누는 순간 순서를 잃는 문제 Tech Blog Review 원문: 하루 N억 건의 알림 시스템 구축기 (1): 카카오뱅크는 어떻게 발송 플랫폼의 새로운 뼈대를 세웠나 — 카카오뱅크 기술블로그, 알림경험엔지니어링팀 Remy·Kenneth·Jett, 2026-09-07 이 글은 발행된 지 열흘 된 글이다. 고른 이유는 원문의 진단 한 줄 때문이다. 레거시 발송기의 P99 지연 중 80%가 처리 시간이 아니라 대... 2026/09/09 TechBlog, KakaoBank 빅테크 기술 블로그 리뷰 69편
NIO와 이벤트 루프 - 셀렉터, 다이렉트 버퍼, Netty가 대신 해주는 일 Notes 자바에서 소켓을 다루는 방법은 둘이다. InputStream.read()로 블로킹하거나, Selector로 준비된 채널만 골라 처리하거나. 후자가 NIO이고 Netty가 그 위에 있다. 무엇이 달라지고 무엇을 직접 해야 하는지 보면, 프레임워크가 감춘 것이 드러난다. 블로킹 IO와 NIO 블로킹 모델은 단순하다. read()를 부르면 데이터가 올 ... 2026/09/08 Notes, Java
타임아웃, 재시도, 백오프 - 증폭과 지터, 그리고 데드라인 전파 Notes 세 가지는 항상 같이 나오지만 역할이 다르다. 타임아웃은 포기 시점을, 재시도는 다시 시도할지를, 백오프는 언제 다시 할지를 정한다. 셋을 따로 정하지 않으면 서로를 망친다. 타임아웃 없는 재시도는 영원히 기다리고, 백오프 없는 재시도는 이미 아픈 상대를 더 때린다. 타임아웃: 값이 없으면 무한이다 가장 흔한 사고는 타임아웃을 안 거는 것이다. 라... 2026/09/03 Notes, Architecture
LINE 「초당 100만 건, LINE 앱에 Apache Kafka 종단 간 암호화 적용기」 리뷰 — 인터셉터와 시리얼라이저만으로 브로커에 평문을 남기지 않는 법 Tech Blog Review 원문: 초당 100만 건, LINE 앱에 Apache Kafka 종단 간 암호화 적용기 — LY Corporation Tech Blog, 한창구·정현우·Haruki Okada, 2026-07-10 한 줄 요약 Kafka의 TLS·SASL·ACL은 “이동 중”과 “누가 접근하는가”를 지키지만 브로커 디스크의 페이로드는 평문이다. LINE은 개인정보급... 2026/09/03 TechBlog, LINE 빅테크 기술 블로그 리뷰 66편
TMC 25 리뷰 - '주식모으기' 서비스로 살펴보는 대용량 트래픽 처리 노하우: 200만 주문을 3,000건으로 접는 풀링 주문과 그 대가 Conference 발표 토스 메이커스 컨퍼런스 25 (TMC 25), Engineering 트랙 연사 김광훈 (토스증권 Server Developer) 자료 발표 영상 · TMC 25 해외주식 “주식모으기”... 2026/09/02 Conference, Toss 토스증권 엔지니어 발표 리뷰 18편