SERIES

Systems & Tooling Notes

8 Posts·Last updated on July 15, 2026

프로젝트 기록을 어떻게 남길 것인가

January 01, 2026

요약 이 글은 블로그를 처음 열 때 세운 운영 원칙을 정리한 기록이다. 현재 글 작성의 세부 기준은 repo의 를 기준으로 관리한다. 공개 글은 실제 맥락을 살리되, 증거와 검증 범위, 공개하면 안 되는 정보를 명확히 나눠야 한다. 상황 이 블로그는 완성된 튜토리얼을 모으기보다 실제 프로젝트를 만들고 운영하면서 배운 점을 기록하기 위해 시작한다. 좋은 기…


PostgreSQL Docker env를 설정값이 아니라 초기화 입력으로 보기

May 21, 2026

PostgreSQL 컨테이너 안에는 새 env가 보이는데 Spring Boot는 계속 이전 비밀번호로 실패했다. 처음에는 , Docker Compose, 네트워크 설정을 의심했지만 핵심 로그는 이었다. 값은 매번 DB 상태를 바꾸는 설정값이 아니라 빈 data directory를 처음 만들 때만 쓰이는 초기화 입력이라는 점을 놓친 문제였다. 요약 문제:…


RAG Retrieval을 평가하기 전에 Judge부터 검증하기

May 21, 2026

RAG retrieval 실험에서 처음 확인하고 싶었던 것은 proposed query가 baseline보다 좋은 검색 결과를 가져오는지였다. 그래서 LLM-as-a-Judge로 두 결과를 비교하는 평가 파이프라인을 만들었다. 그런데 swap test를 해보니 약 81%의 케이스에서 judge가 답변 순서에 흔들렸고, 결론은 "어떤 query가 이겼다"가…


Sentry Profiles에 찍힌 스캐너 요청을 Caddy에서 끊기

May 29, 2026

Sentry Profiles에 , , , SQL dump probe가 반복해서 찍혔을 때 처음 할 수 있는 일은 Sentry에서 숨기는 것이었다. 하지만 그건 dashboard만 조용하게 만들 뿐, 요청은 여전히 app container까지 들어온다. 그래서 이 변경의 기준은 "보안 장비를 만들자"가 아니라 "명백한 scanner traffic은 reve…


Cloudflare Tunnel 장애에서 배운 계층화 디버깅

June 03, 2026

백엔드 개발자는 보통 7계층에서 산다. API path, status code, request header, CORS를 본다. 나도 Cloudflare로 stage API를 붙였을 때 브라우저의 를 보고 곧바로 redirect와 CORS를 의심했다. 그런데 Cloudflare Tunnel이 끼면 한 계층에서 바로 이름 붙일 수 없다. TLS 문제처럼 보일…


홈서버를 런타임 전용 Docker 서버로 운영하기

June 03, 2026

홈서버 세팅의 핵심은 Ubuntu와 Docker 설치보다 운영 경계를 정하는 일이었다. SSH는 어떻게 들어갈 것인가, HTTP 요청은 어디로 모을 것인가, 각 앱은 어떤 Docker network에 붙일 것인가, 서버에는 소스코드를 둘 것인가 이미지만 둘 것인가를 먼저 정해야 했다. 이 글은 그 세팅 과정에서 헷갈렸던 질문을 바탕으로 처음 홈서버를 만드…


서버 앱에 Google Analytics MCP를 붙이며 OAuth와 서비스 계정 구분하기

June 07, 2026

서버 애플리케이션에 Google Analytics MCP를 붙이려다 생각보다 오래 헤맸다. MCP 서버 설치 자체는 어렵지 않았다. 문제는 그 다음이었다. 서버 런타임이 어떤 credential을 봐야 하는지, 왜 브라우저에서 OAuth 앱이 막히는지, service account를 GA4 사용자로 넣으면 왜 안 되는지 계속 섞였다. 최종적으로 "내가 볼…


벡터 검색을 앞두고 SQLite에서 PostgreSQL + pgvector로 옮긴 이유

July 15, 2026

일기 서비스에 “비슷한 기록 보여주기”를 넣으려 했다. 같은 단어가 있는 글이 아니라 문맥과 감정이 닮은 과거 일기를 찾는 기능이다. 텍스트를 임베딩으로 바꾸고, 벡터를 저장한 뒤 가까운 기록을 찾는 흐름이 필요했다. 처음에는 SQLite는 그대로 두고 벡터 데이터베이스만 따로 붙이는 방법을 검토했다. 그런데 원문은 한 저장소, 임베딩은 다른 저장소에 두…