ParityPay로 검증하는 결제 정합성 3 - 외부 승인 응답이 사라졌을 때: 타임아웃은 실패가 아니다 개인 프로젝트 Notes 외부기관을 호출하는 결제 시스템에는 세 번째 결과가 있다. 성공도 실패도 아닌 “모른다”다. 이 글은 ParityPay가 그 상태를 어떻게 다뤘는지, 왜 그것이 예외 처리가 아니라 상태 모델의 문제인지, 그리고 실험이 설계 문서에 없던 구멍을 어떻게 드러냈는지 정리한 기록이다. 문제: 응답이 없다는 것은 실패가 아니다 충전 요청의 흐름은 단순하다.... 2026/02/27 Notes, ParityPay ParityPay로 검증하는 결제 정합성 3편
합의 알고리즘 - Raft를 상태 기계로 읽기 Notes Kafka의 KRaft, etcd, Consul, TiDB가 전부 Raft를 쓴다. 이 도구들을 운영하면서 “리더 선출 중이라 잠깐 못 쓴다”, “과반이 살아 있어야 한다” 같은 문장을 만나는데, 그 문장들이 어디서 나오는지 알면 장애 대응이 달라진다. Raft는 이해하기 쉽도록 설계된 알고리즘이라 원논문 제목부터 “In Search of an Und... 2026/02/25 Notes, Architecture
Netty Notes Netty를 왜 배우는가 Netty는 Java에서 고성능 네트워크 서버와 클라이언트를 만들기 위한 프레임워크다. 단순한 소켓 라이브러리라기보다, NIO 기반 네트워크 프로그래밍의 복잡도를 줄여 주는 실행 모델과 파이프라인 추상화를 제공한다. 고성능 API 서버, 메시징 시스템, 게임 서버, RPC 프레임워크에서 자주 등장한다. 등장 배경 전통적... 2026/02/25 Notes, Web
2026-02-24-TIL: AI 활용에 대하여 TIL Today I Learned 오늘은 간만에 간단한 면접을 보았다. 이 면접을 통해 지금 내가 무엇을 공부하고 있고 어디를 향해 나아갈지 다시 한 번 생각해보는 계기가 되었다. 나는 지금 어떻게 공부하고 있고 어떻게 공부하는게 가장 효과적일까? 내가 지금 공부하는 방식은 대부분 ‘사고실험‘의 형태로 진행된다. 실무에서 경험했던 사례를 기억날때마다 구... 2026/02/24 TIL, 2026-TIL
SLASH 22 리뷰 - 지속 성장 가능한 코드를 만들어가는 방법: import 문이 보내는 신호로 패키지·레이어·모듈을 다시 보기 Conference 발표 SLASH 22 연사 김재민 (토스페이먼츠 Server Developer) 자료 발표 영상 · SLASH 22 IDE가 접어 놓는 import 문을 펼쳐서 보자는 발표다. 생성자만 보... 2026/02/24 Conference, Toss 토스 커뮤니티 백엔드 발표 리뷰 14편
B+Tree 인덱스의 내부 - 노드 분할, 클러스터드와 논클러스터드, 커버링이 아끼는 것 Notes 인덱스를 “검색을 빠르게 하는 자료구조”로 알고 쓰면, 인덱스를 추가했는데 쓰기가 느려지는 이유나 ORDER BY가 인덱스를 타는 조건을 설명할 수 없다. B+Tree의 형태를 보면 그 질문들이 같은 곳에서 답을 얻는다. 왜 이진 트리가 아니라 B+Tree인가 디스크와 SSD는 바이트가 아니라 블록 단위로 읽는다. DB는 보통 8KB(Postgre... 2026/02/20 Notes, Database
ParityPay로 검증하는 결제 정합성 2 - 잠금을 필요 이상으로 오래 쥐고 있었다: 추론을 측정으로 바꾼 기록 개인 프로젝트 Notes 1편에서 잔액 비음수(INV-003)를 조건부 원자 UPDATE로 강제한다고 썼다. 이 글은 그 UPDATE가 동시 결제 아래에서 어떻게 동작했는지, 느려진 원인을 “안다”고 생각했던 것이 어디까지 측정이고 어디부터 추론이었는지, 그리고 측정 방법 자체가 결론을 만들 뻔한 두 번의 실수를 정리한 기록이다. 수치는 전부 실측값이고, 측정 조건과 설명하지... 2026/02/19 Notes, ParityPay ParityPay로 검증하는 결제 정합성 2편
멱등한 API 설계 - HTTP 메서드의 의미와 재시도 계약 Notes “PUT은 멱등하고 POST는 아니다”는 자주 인용되는데, 그 문장이 실제로 무엇을 약속하는지는 덜 이야기된다. 멱등성은 구현이 알아서 주는 성질이 아니라 API가 클라이언트와 맺는 계약이고, 계약인 이상 양쪽이 할 일이 있다. 명세가 정의하는 것 RFC 9110은 두 성질을 나눈다. 안전(safe): 요청이 서버 상태를 바꾸지 않는다. G... 2026/02/16 Notes, Architecture
SLASH 22 리뷰 - 토스뱅크의 완전히 새로운 대출 시스템: Flyway + Hibernate validate, 대외기관 파이프라인, 연동 서킷과 대기열 Conference 발표 SLASH 22 연사 민재슬 (토스뱅크 Server Developer) 자료 발표 영상 · SLASH 22 토스뱅크 대출 시스템이 전통 금융권 아키텍처와 어떻게 다른지를 세 층위로 설... 2026/02/16 Conference, Toss 토스 커뮤니티 백엔드 발표 리뷰 12편
인덱스가 선택되지 않는 순간 - 컬럼에 캐스팅 하나가 3,000배, 그리고 추정이 31.7배 틀려도 계획이 안 바뀌는 경우 실무 사례 Notes 실행 계획을 읽는 법에서 “옵티마이저가 안 쓰는 것인가, 못 쓰는 것인가를 먼저 구분해야 한다”고 썼다. 그 글은 문서를 근거로 썼고, 마지막에 세 가지를 재 보자고 적어 뒀다. 이 글이 그 측정이다. 저장소는 data-ops-lab이고 재실행은 한 줄이다. ./.venv/bin/python experiments/index/run.py 조건 ... 2026/02/15 Notes, Database