왜 LangGraph 도입 후 스파게티가 되었나: 실패에서 배운 구조화
Threads DisquietLangGraph를 도입했는데 코드가 오히려 스파게티가 됐다. 노드 1개짜리 래퍼, 이중 체크포인팅, 3개 Executor에 흩어진 8천여 줄의 중복. 개인 프로젝트에서 직접 겪은 실패의 해부와, 거기서 배운 구조화 원칙을 정리한다.
LangGraph를 도입했는데 코드가 오히려 스파게티가 됐다. 노드 1개짜리 래퍼, 이중 체크포인팅, 3개 Executor에 흩어진 8천여 줄의 중복. 개인 프로젝트에서 직접 겪은 실패의 해부와, 거기서 배운 구조화 원칙을 정리한다.
Linear가 왜 그렇게 빠른지를 아키텍처 관점에서 분해한다. 비결은 최적화가 아니라 '네트워크를 UI의 임계 경로에서 완전히 제거한다'는 설계 결정이다. local-first 동기화 엔진, MobX observable, IndexedDB 세 가지가 맞물려야 50ms 페이지 로드가 나오고, 하나라도 빠지면 무너진다. 앞서 살핀 로컬 우선 도구들과 같은 가치관을, Linear는 앱 아키텍처 수준에서 극단까지 밀어붙인 사례다.
Codex OTEL 로그는 들어왔지만 Zeude 사용자 identity가 빠졌던 장면에서 출발해, AI CLI 관측이 왜 wrapper, identity, proxy, 저장소 설계의 운영 문제인지 정리했다.
GitHub Pages에서 Cloudflare Pages로 이전하고, GoatCounter를 버리고, D1으로 퀴즈를 만들고, Workers 3종으로 API를 분리하기까지 — 각 전환의 계기와 얻은 것, 잃은 것.
여러 Git 저장소의 코드를 하나의 워킹트리에서 AI가 merge하는 패턴. 플러그인이 코어 소스를 수정해야 할 때, AI 코딩 에이전트가 충돌 해결 비용을 0으로 낮추면서 실용적인 선택지가 되었다.
AI 에이전트에게 Bash를 주되 안전하게. NanoClaw는 Docker 컨테이너 격리로 Claude Agent SDK의 풀스택 능력을 안전하게 활용하는 오픈소스 아키텍처다.
NanoClaw의 Telegram 기능을 skills engine 기반으로 전환하고, upstream과 fork custom의 3계층 코드 구조를 확립한 과정을 정리합니다.