spring-lite로 이해하는 Spring 구현 1 - 프로젝트 구조와 설계 범위 Notes GitHub 저장소 이 시리즈는 spring-internals-lab로 다시 읽는 Spring과 짝이다. 그쪽이 실제 Spring의 소스와 실행을 분석하는 기록이라면, 이쪽은 같은 메커니즘을 처음부터 다시 구현하며 확인하는 기록이다. 분석 → 재구현 순서로 읽는 것이 자연스럽지만, 각 시리즈는 독립적으로도 읽힌다. 왜 spring-lit... 2026/07/03 Spring spring-lite로 이해하는 Spring 구현 1편
2026-07-01-TIL: monticker 핫 패스와 풀 크기, 그리고 Claude Sonnet 5 TIL 요즘은 거의 monticker만 붙잡고 있었다. 처음에 만든 스켈레톤 위에 실제 데이터 연동, 인증, 차트, 모의 투자, 분석 기능이 빠르게 올라갔고, 시세 파이프라인도 한 번 다시 짰다. 중간에 spring-ops-lab에서 가상 스레드 실험도 하나 끝냈다. 최근에 한 작업 monticker: 실제 데이터와 화면 Mock으로만 돌던 부분을 ... 2026/07/01 2026-TIL
시크릿 관리 - 로테이션과 주입 경로 Notes 시크릿 관리는 “저장소를 무엇으로 쓸까”의 문제로 좁혀지기 쉽다. 실제로 사고를 만드는 것은 저장소가 아니라 경로다. 값이 어디서 출발해 어디를 지나 애플리케이션에 닿는지, 그 과정에서 어디에 복사본이 남는지가 노출 지점을 정한다. 무엇이 시크릿인가 DB 비밀번호, API 키, 토큰 서명 키, 암호화 키, 외부 기관 인증서. 공통점은 유출되면 ... 2026/06/30 Infrastructure
Circuit Breaker로 외부 API 장애 격리 — Resilience4j + KIS·Yahoo 폴백 체인 외부 API 장애가 전체 시스템을 멈추는 이유 monticker는 KIS WebSocket, Yahoo Finance API, 네이버 뉴스 API, DART API 같은 외부 서비스에 의존한다. 이 중 하나가 느려지거나 장애가 나면 무슨 일이 생길까? 장애 없는 경우: 요청 → API 서버 → KIS API → 응답 (10ms) KIS API ... 2026/06/29 Observability monticker 설계와 구현 기록 22편
SLASH 24 리뷰 - 리플레이 검증으로 새로운 금융 시스템 안전하게 도입하기: 운영 트래픽을 그대로 재생해 차세대 원장을 검증하다 Conference 발표 SLASH 24, Server 트랙 연사 양승영 (토스증권 국내주식 원장팀 Server Developer), 박종수 (토스뱅크 Server Developer) 자료 세션 페이지 · 발표 영상 ... 2026/06/28 Toss 토스증권 엔지니어 발표 리뷰 7편
OpenTelemetry + Jaeger로 분산 추적 — 시세 파이프라인 지연 측정 분산 시스템에서 “느리다”를 어떻게 찾는가 monticker의 시세 파이프라인은 여러 컴포넌트를 거친다. Go Gateway → Kafka → Worker → Redis → API → WebSocket → Client “응답이 느리다”는 신고를 받았을 때, 어디가 병목인지 찾으려면 각 단계의 시간을 측정해야 한다. 로그를 수동으로 분석하는 방법... 2026/06/28 Observability monticker 설계와 구현 기록 21편
가상 스레드를 켜서 37배 느려진 엔드포인트 - 핀닝과 상한 없는 admission을 재다 실무 사례 Notes 가상 스레드의 내부에 핀닝(가상 스레드가 블로킹하는 동안 캐리어 스레드에서 내려오지 못하는 상태)을 설명하면서 “바꾸기 전에 핀닝을 먼저 측정한다”고 적어 뒀다. 문서를 근거로 쓴 글이었고, 그 측정을 한 적은 없었다. 이 글이 그것이다. 질문은 두 개다. 핀닝은 얼마를 앗아가는가. 그리고 스레드 수가 상한이 아니게 되면 무엇이 상한인가. 저장소는... 2026/06/27 Java
트레이스 샘플링 - 헤드와 테일 샘플링의 선택 기준 Notes 분산 추적을 켜면 곧 비용 문제를 만난다. 요청 하나가 서비스 다섯 개를 지나면 스팬(트레이스를 이루는 작업 구간 하나)이 수십 개 생기고, 초당 수천 요청이면 저장해야 할 양이 로그를 넘어선다. 그래서 샘플링을 켜는데, 무엇을 버릴지 정하는 방식에 따라 정작 필요한 트레이스가 남기도 하고 사라지기도 한다. 샘플링이 필요한 이유 트레이스의 비용... 2026/06/23 Common APM과 관측 가능성 3편
TCP 연결 수립과 큐 - SYN 백로그, accept 큐, TIME_WAIT Notes 애플리케이션 지연 지표는 정상인데 사용자는 느리다고 한다. 서버가 요청을 받기 전에 시간이 가고 있으면 이런 일이 생긴다. 애플리케이션이 재는 시간은 대개 요청을 받은 뒤부터이고, 그 앞에 커널의 큐 두 개가 있다. 핸드셰이크와 두 개의 큐 연결 수립은 3-way handshake다. 그 동안 커널은 연결을 두 큐에 나눠 담는다. 클라이언트 ... 2026/06/22 Network
2026-06-19-TIL: monticker 시작, 그리고 IMMUTABLE이 아닌 인덱스 식 TIL 이번 주에 monticker 저장소를 새로 시작했다. 가격 급등이나 거래량 급증 같은 이벤트를 실시간으로 감지해서 차트 타임라인과 모바일 알림으로 보여 주는 주식 관찰 앱이다. Claude Code의 /init으로 CLAUDE.md를 만드는 것부터 시작했고, 커밋 대부분을 Claude Sonnet 4.6과 같이 썼다. 이번 주에 한 작업 코드보... 2026/06/19 2026-TIL