이주호 — 백엔드 개발자
Java·Spring / TypeScript·NestJS 기반 백엔드 개발자입니다. 트랜잭션·정합성·성능 최적화에 관심이 많고, 학습한 것을 기록으로 남깁니다.
소개 · 링크
- 💻 GitHub — lsc713
🗂️ 주제별 글
커머스 백엔드를 카타로 쌓다 (연재) — 불변식·경합·경계
- 00. 서문 — 백엔드 설계를 압축한 세 질문
- 01.돈을 primitive로 두면 언젠가 샌다 — 값 객체·불변·반올림
- 02.불변식은 누가 지키나 — 애그리거트 루트
- 03.동시에 사면 초과판매된다 — 낙관·비관·원자적 UPDATE
- 04.두 번 취소해도 한 번만 — 멱등성·유니크 제약
- 05.save가 INSERT가 아니었다 — Persistable·merge 함정
- 06.기다리게 하지 말고 거절하라 — IN_PROGRESS 상태기계
- 07.트랜잭션 안에서 HTTP를 부르지 마라 — 외부호출 경계·Port/Adapter
- 08.응답을 못 받았다는 실패가 아니다 — UNKNOWN이라는 세 번째 상태
- 09.요청 하나에 쿼리 1+N — N+1·fetch join
- 10.5만 행을 1행으로 — EXPLAIN 읽기·인덱스
- 11.같은 걸 두 번 묻지 않기 — 캐시 두 층
- 12.가짜는 내가 시킨 답만 한다 — 설계를 실물에 붙이기·실 PG 연동·멱등 실측
- 13.분명히 잡았는데 터졌다 — 트랜잭션 전파·REQUIRES_NEW·rollback-only
- 14.5개 주세요 했는데 5만 개를 읽었다 — fetch join 페이징 함정·배치 페치
- 15.순수하게 만들었더니 저장이 사라졌다 — 헥사고날·도메인 순수성
- 16.설정 한 줄 바꿨더니 세 번 터졌다 — 분산 캐시(Redis)·직렬화·스탬피드
- 17.두 번 뺐는데 한 번만 빠졌다 — 격리수준·lost update·락·데드락·MVCC
백엔드 · 아키텍처
- DDD와 헥사고날 아키텍처 — 도메인 경계를 코드로 강제하기
- JPA 영속성 컨텍스트 — save 후 findById가 SELECT를 안 하는 이유
- 결제 취소 멱등성 설계 — 중복 취소 요청 차단
- TypeORM 마이그레이션 — 스키마 버전 관리의 원리
- 쿠버네티스 정리 — 파드·컨트롤러·서비스 한눈에
검색 · AI
- 0.임베딩에서 하이브리드 검색까지 — lexical → semantic → hybrid
- 2.Reranker 크로스 인코더 — cross-encoder 재정렬
- 1.검색 쿼리 변형과 청킹 — query rewrite · HyDE · title-prepend
장애대응 오케스트레이터 (LLM을 파이프에 안전하게 엮기)
- 1.e2e 데모가 잡아낸 두 버그 — backstop이 try 안에 있던 죄
- 2.장애 도구가 장애에 죽지 않게 — SourceResult로 부분 실패를 1급 시민으로
- 3.LLM에게 도구를 주되 가두기 — 제한적 tool-calling 에이전트
- 4.LLM이 코드를 고치되 머지는 사람만 — draft PR을 안전 경계로
- 5.LLM을 못 믿어 결정론 레일을 깔았다 — SuspectLocator + 백스톱
- 6.알림 폭풍에 스팸 PR을 안 만들기 — 수집·알림·행동 다층 dedup
- 7.orchestrator 언제 무엇을 수집할지 — 조건부 오케스트레이션·OCP
- 8.패키지 구조가 서사를 증명하게 — analyzer 분할, 결합 7→0
카오스 엔지니어링 · 관측가능성 (장애를 '구별 가능'하게)
- 0.서문 — 장애를 단 하나의 신호로 구별되게 만든 벤치
- 1.스택트레이스가 곧 원인인 유일한 순간 — Class A NPE와 관측 토대
- 2.p99가 튀는데 아무도 안 던졌다 — 지연·에러비율은 증상이지 원인이 아니다
- 3.200 OK인데 답이 틀렸다 — 침묵의 오염과 오라클
- 4.top frame은 표면이지 원인이 아니다 — 오진 함정
- 5.느린 쿼리의 진짜 범인은 인덱스 — EXPLAIN이 가르고 자동 패치는 멈춘다
- 6.커넥션을 안 돌려줬다 — HikariCP 풀 고갈
- 7.CPU가 남는데 스로틀당했다 — k8s CFS 쓰로틀
- 8.컨슈머가 못 따라잡았다 — Kafka 큐 백프레셔
- 9.멈춘 건 GC였다 — GC 폭주와 pause rate
- 10.다 멈췄는데 데드락은 아니다 — 락 경합 vs 데드락(BLOCKED 인구조사)
- 11.요청 하나에 쿼리 1+N — N+1을 요청당 쿼리 수로
- 12.캐시 만료에 떼로 몰렸다 — 캐시 스탬피드 herd
프론트엔드
- 리액트 간단히 — 데이터 흐름과 컴포넌트 설계
알고리즘
🏷️ 태그로 둘러보기
backend · architecture · ddd · jpa · kata · concurrency · idempotency · payment · kubernetes · search · algorithm · frontend · chaos-engineering · observability · sre