journey
비개발자로 시작해 지금까지 — 시간순 milestone.
고객·회사 식별정보는 마스킹하고, 검증 가능한 행위로만 적었습니다.
- 01origin
Python 자동매매 봇 — 첫 production 시스템
비개발자 상태에서 *직접 돌릴 수 있는 시스템* 부터 만들기 시작. 거래소 API · 자동 주문 · 리스크 관리 로직을 Python 으로 짜고 실거래에서 운영했습니다. 코드보다 *돈을 움직이는 시스템 운영 감각* 이 먼저 박혔습니다.

- 02origin
비개발자 → 풀스택 — 약 2년
Claude 2부터 AI와 함께 작업하는 사이클을 익히며 PHP · Node · React · MySQL 풀스택으로 *직접 ship 가능한* 단계까지 도달. *AI 가 코드를 만든다* 가 아니라 *AI 와 같이 시스템을 만들고 결과를 검증한다* 는 작업 방식이 평소 결로 박혔습니다.

- 03origin
AI 영상 자동화 파이프라인 — 설계·프로토타입
AI tool 이 처음 *일하는 도구* 로 자리 잡으면서 영상 자동화 파이프라인을 설계·프로토타입. 모델만 호출하면 끝나는 게 아니라 *입력·검증·후처리* 사이클이 production 의 본체라는 것을 처음 마주했습니다.
- 04build
production AI 시스템 — Day 1
Claude Code CLI 를 VPS 에 설치하고 Claude Bridge (자체 라우터 서비스) 를 띄움. 에이전트가 외부 명령을 받아 Claude Code 를 자동 실행하는 파이프라인 첫 가동. 대시보드 사이드바 var hoisting 버그도 같은 날 잡았습니다 — *데이터 선언은 사용 코드 위에* 룰의 시작.
증거 → /work/nexus - 05build
Day 2 — 게이트웨이 4 크래시 후 복구
OpenClaw 게이트웨이 설정이 새 버전 호환성 이슈로 4번 크래시. `gateway.mode`, `auth.mode`, `controlUi.allowedOrigins`, Windows 경로 등 하나씩 잡으면서 *코드는 같은데 환경이 다르다* 는 production 운영의 본체를 배웠습니다.
- 06incident
VPS 죽음 — 되돌릴 수 없는 변경
보안 강화 중 원격 접속 설정을 동시에 여러 줄 수정. 데몬 재시작 후 즉시 disconnect → 새 연결 거부 → 영구 lock out. *되돌릴 수 없는 변경엔 안전장치 먼저* 룰의 출처입니다.
증거 → ssh-vps-death-2026-04-02 - 07incident
공용 호스팅 차단 — 첫 추측의 함정
CI 가 호스팅 DB 에 접속 못 함. 확인 안 한 첫 추측(`DB IP 바뀐 듯`) 으로 재발급까지 달리다 결국 호스팅의 해외 접속 차단 정책이 진짜 원인. 같은 날 단일 파일 900라인 누적 사고도 발생 → *500라인 영구 룰* 정착.
증거 → host-blocked-2026-04-10 - 08system
Audit hash chain — 무결성 체인 정착
운영 audit log 의 hash chain 검증이 두 가지 stringify 순서 mismatch 로 hash_mismatch + chain_broken 사고. `+ lastHash` concat 제거 + 구버전 엔트리 가드 추가 후 41/41 통과. *기록 시 stringify 와 검증 시 stringify 는 한 함수에서 공유* 룰.
- 09ship
Board prod 배포 — 큰 batch 일괄 반영
누적 작업분을 한 번에 prod 반영하면서 폐기 컴포넌트 흔적 0 을 grep 으로 검증. *큰 batch 반영 후 grep 0 검증* 패턴 정착.
증거 → /work/nexus - 10incident
Signup 흰화면 — codemod 의 silent 사고
i18n 일괄 변환 codemod 가 무관한 import 라인까지 함께 제거. 신규 가입 페이지가 *에러도 없이* 백지로 30분 가동. *codemod 자동 import 제거 영구 금지* 룰 정착.
증거 → signup-whitescreen-2026-04-29 - 11incident
MySQL OOM 6번째 — 단일 수정에서 다축 sweep으로
DB 가 새벽에 죽는 사고 6번째. 단일 fix 뒤 다른 축에서 문제가 반복됐습니다. 메모리 튜닝 + 비운영 환경 정리 + 스왑 정책 + 로그 사이즈 cap 을 한 번에 sweep했고, 이후 관측기간 동안 같은 원인의 OOM은 다시 나타나지 않았습니다. *반복되면 단일 원인이 아니다* 원리의 출처.
증거 → mysql-oom-2026-04-30 - 12site
kidplayboi.com — 정체성 사이트 빌드 시작
단순 portfolio 가 아니라 *AI 를 한국 시장 production 으로 박는 빌더* 의 정체성 사이트로 정의. 정직 분류 + 무회사 행위 중심 + raw DevLog 비공개 + 사고 회고 archive 공개. 진행 중.
- 13build
고밀도 sprint — 룰이 속도를 버티는지 확인
기능 4묶음을 1주 안에 ship 하면서 *파일 500라인 룰 + 새 기능 = 새 파일* 이 속도 아래서도 유지되는지 실측했습니다. 룰은 여유 있을 때만 지키는 게 아니라 몰릴 때 지켜져야 룰입니다.

- 14incident
결제 검증 누락 사고 → 3축 진단 표준
결제사 v2 전환 뒤에도 v1 검증 계약이 남아 webhook 검증 실패 기록 62건이 누적됐습니다. 결제별 secret 매칭 + 멱등성 키 + raw response 보존으로 검증 계층을 다시 만들고, 이후 같은 원인의 반영 누락이 관측되지 않았습니다. *DB + UX + Webhook 3축 진단* 표준 정착.
증거 → pet-payment-2026-05-11 - 15incident
초록불을 죽여봤다 — 허수 테스트 발견
동시성 안전장치 테스트가 전부 통과 중이길래 장치를 일부러 제거하고 재실행 — 여전히 통과. 아무것도 검증하지 않는 테스트였습니다. 이후 모든 안전장치 테스트에 *장치를 빼면 반드시 실패* 음성 대조가 표준.
증거 → vacuous-green-test-2026-06 - 16build
전자서명 SaaS 착수 — 법적 증거력을 코드로
'서명됐다' 는 기록 자체가 공격받으면 무너지는 제품. 기능보다 신뢰 구조부터 — 확인한 위조 경로를 구조적으로 닫는 설계를 먼저 박고 시작했습니다.
증거 → /work/ansimsign - 17system
신원 게이트 — 'verified' 의 유일한 writer
'인증됨' 을 기록할 수 있는 주체를 백엔드 워커 단 1곳으로 제한하고, 인증용 개인키를 웹 서버와 분리했습니다. 웹 계층 침해가 곧 인증 결과 서명으로 이어지지 않도록 경계를 좁혔습니다.
증거 → /work/ansimsign - 18build
everytalk 외주 산출물 내재화 — 운영 주도권 회수
외주 납품 결과물의 코드·데이터·배포·운영 책임을 사내로 회수했습니다. 납품 편의에 맞춰진 Sendbird 의존과 장기 운영비를 다시 계산하고 Firestore 하이브리드 이전을 설계했습니다 — 외주 납품 코드가 사실상 유일한 문서였습니다.
증거 → /work/everytalk - 19ship
기획사 운영 OS — 전면 재설계 2회전 종결
내부자 위협을 구조로 막는 정산·딜 시스템. 운영 피드백을 부분 패치가 아니라 전면 재설계 2회전으로 흡수하고 라이브. *권한은 시스템이, 실행은 사람이.*
증거 → /work/agency-crm - 20ship
안심사인 — AWS 프로덕션 환경 구축
전자서명 SaaS 의 AWS 프로덕션 환경과 배포 경로를 구축했습니다. 스키마는 전방 전용(forward-only) 마이그레이션, 롤백 스냅샷·배포 런북까지 문서화했습니다. 현재는 사내 도입 준비·외부 공개 전 단계입니다.
증거 → /work/ansimsign - 21ship
감사 체인 TSA 외부 앵커링 — 실서버 E2E
'서버 키를 가진 운영자가 장부를 다시 쓰면?' — 서버 안의 기록만으로는 독립 검증이 부족했습니다. 완제품이나 SDK 없이 서비스 키로 RFC 3161 요청·응답과 PAdES 타임스탬프 결속을 직접 구현하고 코스콤 TSA 실서버 E2E를 확인했습니다. PAdES-B-T 구조는 내부 바이트 검증 완료, Adobe/ETSI·AATL·B-LT는 후속 범위입니다.
증거 → /work/ansimsign - 22ship
everytalk 무중단 컷오버 + 앱스토어 제출
AI 의 '다 고쳤다' 보고를 버리고 항목 단위 추적 문서의 목록 대조로 이전 누락을 제거한 뒤 무중단 프로덕션 컷오버. 라이브 DB 중복 채팅방 92건 정리도 백업 + 롤백 이미지 선확보 후 실행했고, 작업 중 사용자 영향은 관측되지 않았습니다. iOS 앱스토어 제출 빌드 업로드.
증거 → /work/everytalk - 23system
안심사인 출시 전 전면감사 — 출시 차단 결함 4개
기능 완성을 출시 완료로 보지 않고 코드·DB·worker·운영 플래그를 다시 연결해 읽었습니다. 증거 PDF의 행위자 표기, PASS 수신자 결속, 결제 권한·탈퇴 fence, 만료 파기 순서에서 출시 차단 결함을 찾아 위험 기능을 먼저 닫았습니다. 실사용자 0명인 시점에 출시를 늦추는 것이 가장 싼 수정이라고 판단했습니다.
증거 → /work/ansimsign