WebSocket push와 REST polling을 클라이언트 1만 개에서 재다 — 지연과 서버 비용, Kafka 정지 45초, 느린 소비자 25개 개인 프로젝트 GitHub 저장소 · 보고서 reports/M-001.md monticker의 시세 경로는 Go market-gateway가 틱을 Kafka market.ticks에 발행하고, api가 그것을 구독해 100ms conflation(100ms 안에 들어온 틱을 종목별 마지막 값 하나로 합치는 것) 뒤 STOMP(WebSocket 위에서 구독·발행을 ... 2026/07/08 Monticker, Experiment monticker 설계와 구현 기록 23편
spring-lite로 이해하는 Spring 구현 5 - MiniSpringApplication과 자동 설정 조립 방식 Notes GitHub 저장소 마지막에 다시 보니 Boot는 “조립 담당”에 가까웠다 Spring Boot를 오래 쓰다 보면 SpringApplication.run() 한 줄이 너무 익숙해진다. public static void main(String[] args) { SpringApplication.run(App.class, args); } 그래... 2026/07/07 Notes, Spring spring-lite로 이해하는 Spring 구현 5편
모듈러 모놀리스 - 경계를 코드로 강제하는 방법 Notes “마이크로서비스로 가기 전에 모듈러 모놀리스부터”라는 조언은 널리 퍼졌는데, 실제로 무엇을 하라는 것인지는 덜 구체적이다. 패키지를 도메인별로 나누는 것은 누구나 하고, 그것만으로는 몇 달 뒤 다시 얽힌다. 경계가 유지되려면 지켜지는지 검사되어야 한다는 것이 이 패턴의 실질이다. 무엇이 모듈인가 모듈은 폴더가 아니라 공개 API와 내부 구현이 구분... 2026/07/06 Notes, Architecture
spring-lite로 이해하는 Spring 구현 4 - DispatcherServlet과 MVC 요청 처리 파이프라인 Notes GitHub 저장소 웹 프레임워크를 다시 보니 결국 디스패치 문제였다 Spring MVC를 쓸 때는 @RestController, @GetMapping, @RequestBody가 먼저 눈에 들어온다. 그런데 spring-lite-web을 구현하고 따라가다 보면 시선이 조금 바뀐다. 핵심은 문법보다 먼저 디스패치였다. 어떤 요청이 왔는가 ... 2026/07/06 Notes, Spring spring-lite로 이해하는 Spring 구현 4편
spring-lite로 이해하는 Spring 구현 3 - ProxyFactory, @Transactional, JdbcTemplate 연결 Notes GitHub 저장소 이 글의 코드 링크는 커밋 bd8ea3f 기준이다. 이후 저장소에 전파 옵션과 rollback 규칙이 추가돼 지금 main과는 다르다. @Transactional을 다시 보게 만든 건 결국 프록시였다 트랜잭션을 공부할 때는 자꾸 DB 쪽으로 먼저 시선이 간다. 커밋, 롤백, 전파, 격리 수준 같은 단어가 더 눈에 띄기 때문이다... 2026/07/05 Notes, Spring spring-lite로 이해하는 Spring 구현 3편
카카오 「MySQL Json 데이터 타입의 저장 구조와 성능 비교」 리뷰 — 통째로 넣고 통째로 꺼내면 TEXT, 키로 파고들면 JSON Tech Blog Review 원문: MySQL Json 데이터 타입의 저장 구조와 성능 비교 — kakao tech, 2025-09-18 한 줄 요약 MySQL의 JSON 타입은 문자열을 그대로 저장하지 않고 파싱 → 바이너리 직렬화 → 유효성 검사를 거쳐 타입·키 개수·오프셋 테이블이 붙은 구조로 저장하고, 읽을 때는 역직렬화해 문자열로 다시 만든다. TEXT는 받은 그대로... 2026/07/05 TechBlog, Kakao 빅테크 기술 블로그 리뷰 44편
spring-lite로 이해하는 Spring 구현 2 - AnnotationConfigApplicationContext로 보는 IoC와 생명주기 Notes GitHub 저장소 이 글의 코드 링크는 커밋 bd8ea3f 기준이다. 이후 저장소가 바뀌어 지금 main과는 다를 수 있다. 결국 먼저 봐야 하는 건 컨테이너였다 Spring을 공부할 때는 자꾸 AOP나 MVC부터 눈에 들어온다. 더 눈에 띄고, 실무에서 직접 만지는 코드와도 가깝기 때문이다. 그런데 spring-lite를 따라가다 보면 다시 ... 2026/07/04 Notes, Spring spring-lite로 이해하는 Spring 구현 2편
spring-lite로 이해하는 Spring 구현 1 - 프로젝트 구조와 설계 범위 Notes GitHub 저장소 이 시리즈는 spring-internals-lab로 다시 읽는 Spring과 짝이다. 그쪽이 실제 Spring의 소스와 실행을 분석하는 기록이라면, 이쪽은 같은 메커니즘을 처음부터 다시 구현하며 확인하는 기록이다. 분석 → 재구현 순서로 읽는 것이 자연스럽지만, 각 시리즈는 독립적으로도 읽힌다. 왜 spring-lite를... 2026/07/03 Notes, Spring spring-lite로 이해하는 Spring 구현 1편
ParityPay로 검증하는 결제 정합성 9 - 느린 기관 앞에서 결제 서버를 지키기: 타임아웃, 재시도, 차단기, 리미터, 벌크헤드가 각각 무엇을 막는가 개인 프로젝트 Notes 3편에서 외부 승인 응답이 사라진 거래를 UNKNOWN으로 보존해 조회로 수렴시켰다. 그 글의 장애는 거래 하나의 응답이 사라지는 것이었다. 이 글의 장애는 다르다. 기관이 40초 동안 모든 요청에 30초씩 응답을 붙잡으면, 그동안 들어오는 결제 수백 건과 결제와 무관한 잔액 조회는 어떻게 되는가. 설계 문서에는 답이 절반만 있었다. 읽기 타임아웃이... 2026/07/02 Notes, ParityPay ParityPay로 검증하는 결제 정합성 9편
2026-07-01-TIL: monticker 핫 패스와 풀 크기, 그리고 Claude Sonnet 5 TIL 요즘은 거의 monticker만 붙잡고 있었다. 처음에 만든 스켈레톤 위에 실제 데이터 연동, 인증, 차트, 모의 투자, 분석 기능이 빠르게 올라갔고, 시세 파이프라인도 한 번 다시 짰다. 중간에 spring-ops-lab에서 가상 스레드 실험도 하나 끝냈다. 최근에 한 작업 monticker: 실제 데이터와 화면 Mock으로만 돌던 부분을 실제... 2026/07/01 TIL, 2026-TIL