글
- backend · 2026-06-03 초록불이 거짓말을 하고 있었다 — succeeded 옆의 ERROR가 드러낸 두 겹의 함정 워커 로그에 매번 같은 ERROR가 찍히는데, 바로 다음 줄에서 태스크는 succeeded로 끝났다. 그 모순이 단서였다 — dual-write가 primary 쓰기 실패를 가리고, create-guard가 스키마 진화를 기존 컬렉션에 전파하지 않은 두 겹의 함정. 성공한 태스크의 핵심 작업이 매번 실패하고 있었다.
- infra · 2026-06-03 장기 키 없이 GitHub Actions에서 GCP로 — 어려운 건 WIF 스펙이 아니라 그 주변이었다 SA 키를 받아 Secret에 붙이는 뻔한 경로 대신, 콘솔 경고대로 Workload Identity Federation을 택했다. 스펙 자체는 짧은데 그 주변 디테일 — 자격증명 5분 수명, immutable ID 바인딩, GPP의 ADC opt-in, JAVA_HOME 레이스 — 에서 6일을 태웠다. static review가 잡은 것과 live 실행만 드러낸 것의 경계.
- product · 2026-06-02 사진은 저장이 아니라 '못 찾는 것'이 문제였다 — 우리가 Ascendy를 만든 이유 돌잔치 울상 사진을 AI로 고치려다 아이 얼굴이 통째로 바뀌었다. 거기서 출발한 구상은 '말로 하는 보정'을 거쳐 전혀 다른 곳에 닿았다 — 사진 클라우드의 진짜 문제는 저장이 아니라 못 찾는 것이라는 것. Ascendy를 만든 이유와, 쌓인 사진을 쓰레기 더미가 아니라 나를 이해하는 raw data로 바꾸려는 시도.
- meta · 2026-06-01 선의의 거짓말 — AI가 쓴 글의 할루시네이션을 어디까지 허용할 것인가 AI가 쓴 블로그 글에 원문에 없던 '새벽 3시' 같은 디테일이 들어왔다. 흥미롭지만 저자인 나는 그게 진짜인지 모른다. 인간 기억도 일종의 할루시네이션이고 바이브코딩이 이를 악화시키는 시대에, 글의 색채와 사실을 가르는 선은 어디인가.
- meta · 2026-06-01 글쓰기의 병목은 답이 아니라 질문이었다 — 나를 인터뷰하는 에이전트를 만든 이유 글감도 글도 에이전트한테 다 맡겼더니 사람 냄새가 사라졌다. 진단은 '사람이 안 써서'가 아니라 소스가 1차 장면 없는 추상화 가공물이라서였다. 전기 작가가 인물을 인터뷰해 책을 쓰듯, 에이전트가 운영자를 인터뷰하게 만들었다. 그러자 진짜 병목이 드러났다 — 답이 아니라 질문이었다.
- meta · 2026-05-31 두 AI 모델을 붙였더니 느려졌다 — 그래서 작업을 티어로 갈랐다 1인 개발 환경에서 LLM 코딩 에이전트 하네스를 세 단계로 진화시킨 기록. 단일 모델에서 cross-model 페어링으로, 다시 작업의 난이도·보안·임팩트에 따라 티어로 라우팅하기까지 — 속도와 품질의 트레이드오프를 시스템으로 가른 과정과 '수술실' 비유.
- frontend · 2026-05-31 주석으로 끈 기능은 되살아나지 않는다 — 복원하다 만난 double-trigger 레이스 긴급 차단으로 주석 처리한 자동동기화 트리거가 끝내 복원되지 않아 기능이 조용히 죽었다. 복원하면서 드러난 두 번째 버그는 double-trigger 레이스 — check와 act 사이의 await가 재진입 락을 무력화하는 패턴. 주석은 복원을 누락시키고, JS도 await 경계에서 인터리빙한다.
- backend · 2026-05-31 ERROR는 보이는데 INFO만 사라졌다 — Celery 로그를 삼킨 두 겹의 함정 Celery 워커의 INFO 로그가 한 줄도 안 찍혔다. 원인은 두 겹 — Python 로깅이 워커 진입점에서 초기화되지 않은 것과, docker-compose의 YAML block scalar가 줄바꿈을 보존해 bash가 명령을 토막낸 것. 'ERROR는 보이고 INFO만 없다'는 비대칭에서 출발한 디버깅 기록.
- backend · 2026-05-31 한 모델만 404가 났다 — 프리뷰 alias 시한폭탄과 분기 비대칭 멀티 프로바이더 에이전트 채팅에서 한 모델 경로만 항상 404가 났다. 원인은 두 겹 — 그 경로만 명시 매핑 없이 base 모델로 fall-through했고, 그 base가 GA 전환 후 폐기된 프리뷰 alias였다. 모델 수명주기를 CI 가드로 막은 기록.
- infra · 2026-05-30 비용 최적화의 첫 질문은 하드웨어가 아니다 — 자체 AI 추론 서빙 삽질기 2부 managed GPU로 옮긴 뒤에도 pod를 상시 가동하니 고정비용이 샜다. 워크로드를 latency budget으로 갈라 검색 경로는 상시 pod, 비동기 경로는 serverless로 보낸 비용 설계 — 콜드스타트를 사용자 체감 경로 밖으로 치환하는 법.