dev notes

Projects

현업에서 생긴 일

HR SaaS 백엔드 · 2025.12 –

Text-to-SQL 에이전트

2025.12 – 2026.04

자연어 질문을 사내 DB 쿼리로 바꾸는 엔진. 14개 기업 사례를 조사한 뒤 Multi-Agent 파이프라인으로 구현했다. 가장 어려웠던 건 100개 테이블에서 필요한 5개를 고르는 일이라 Multi-stage Retrieval을 붙였고, 암호화된 컬럼은 225회 실험으로 방식을 비교했다. 24,500줄, 315개 테스트, 외부 서비스 6개.

LangGraphRAGRerankingLLMSpring

LLM 및 AX 인프라 구축

2026.04 –

LLM 기능을 프로덕션에 올리면서 필요해진 기반. 프롬프트를 중앙에서 관리하고 호출을 추적하려 Langfuse 운영 환경을 사내에 구축했고, 조회 지연을 Redis 캐시와 분산 락으로 걷어냈다. 기획자가 프롬프트를 직접 다룰 수 있게 관리 전략을 잡고 사용량 미터링을 붙였다. Provider 장애 자동 전환, 컨텍스트 윈도우를 넘는 입력의 Map-Reduce 분할도 여기 있다.

LangfuseRedis분산 락CompletableFutureSpring

Kafka 이벤트 흐름

2026.07

retry가 우연히 맞아떨어져 돌아가던 파이프라인에서 두 토픽 사이 순서 race를 로그로 재구성하고, 새 토픽을 만들지 않고 발행자 게이트로 막았다. 별건으로, 독립 서비스 여섯 개가 같은 group id 리터럴을 하드코딩해 하나의 컨슈머 그룹으로 묶여 있었고 리밸런싱 generation이 16,453까지 올라가 있었다.

Kafka이벤트 기반 아키텍처Spring

오픈소스

2026.04 –

쓰던 도구의 소스를 읽다 고칠 것을 발견하면 패치를 올린다. Apache Kafka는 StickyTaskAssignor의 인스턴스별 태스크 한도 계산에서 정수 나눗셈이 먼저 실행돼 소수점이 버려지던 문제를 올림으로 바꿨고, 450개 태스크 시뮬레이션에서 수렴이 5라운드에서 2라운드로 줄었다. Mockito 5.21 업그레이드로 깨진 테스트도 스텁을 partition 기반 매칭으로 재구성해 고쳤다. Langfuse Java SDK에는 Python·JS에만 있던 프롬프트 변수 컴파일을 추가했다. OpenSearch는 색인과 검색 경로를 소스로 따라가며 읽었다.

Apache KafkaLangfuse Java SDKOpenSearchLucene

기술 공유

2026.04

Anthropic AI Fluency 과정을 사내에서 공유하며 정리한 자료. 4D 프레임워크, 위임과 서술, 프롬프팅, 판별과 검증 네 편으로 나눴다.

Claude프롬프트 엔지니어링

개인 프로젝트

Dayner

2024.07 – 2025.03

카페 운영 관리 플랫폼. 쿠폰 발급과 구매 이력, 영업시간 관리를 다룬다. 이벤트성·일회성 쿠폰이 늘어나면서 분기문이 감당이 안 돼 전략 패턴으로 갈아엎었고, 구매 이력은 개인정보보호법 때문에 원장 데이터로 따로 설계했다. EC2에서 반년 동안 재현되던 Thread Starvation도 여기서 잡았다.

Spring BootJPAAWS EC2RDSPrometheus

이 사이트. 글 사이의 참조를 D3.js 지식그래프로 그린다. 조회수는 Vercel Web Analytics를 서버에서 조회해 보여준다.

Next.jsTypeScriptD3.jsMDX

spring-mock

Spring 내부 구조를 이해하려고 Vanilla Java로 HTTP 서버부터 직접 구현했다. 소켓, 멀티스레딩, HTTP 프로토콜 핸들링.

JavaSocketHTTP멀티스레딩