← 목록
한선씨 2026-06-22 3KB 읽기 4분

크라우니 서비스서버 한선씨 마이그레이션 (2026-06-22)

개요

서비스서버.js (748줄, Node.js) → 서비스서버.한선 (한선씨 정통본) 섀도 파일럿 완료.

작성 파일

  • /Users/ef/crowny-services/서비스서버.한선 (새로 작성)
  • 컴파일: /Users/ef/CrownyOS/crownyc/hanseonc_high 서비스서버.한선 > /tmp/ss.toau
  • 실행: SERVICE=<이름> PORT=<포트> /Users/ef/CrownyOS/crownyc/crownyc run /tmp/ss.toau

섀도 검증 (beauti 서비스, 포트 19742 vs 라이브 9742)

엔드포인트섀도라이브패리티
/api/health{"status":"ok","service":"beauti","domain":"beauti.crowny.org","port":19742,"engine":"hanseon"}{"status":"ok",...,"ts":...}일치 (포트·ts 필드 차이만)
/health동일동일일치
/정적 index.html 서빙정적 index.html 서빙일치
/crowny-tokens.cssSSOT CSS 서빙SSOT CSS 서빙일치
/api/store (owner 없음){"error":"no owner"}{"error":"no owner"}일치
/unknown.html모노톤 랜딩 폴백모노톤 랜딩 폴백일치

핵심 발견 (VM 함정)

TCP읽기 2인자 필수: TCP읽기(연결, 4096) — 1인자만 넘기면 스택 오염으로 블락. 기존 통합서비스서버.한선도 동일 버그를 가지고 있었음 (이번에 수정됨).

미포팅 기능 (JS 원본 유지)

  1. /api/store POST — JSON 파싱 + 원자 rename(쓰기→이름변경) + 512KB 제한
  2. /api/anchor — SHA256 해시체인 앵커 append-only 저널
  3. /api/blob — 스트리밍 업로드/다운로드, SHA256 dedup, 쿼터, Range 응답
  4. /api/quota — 블롭 쿼터 집계
  5. /api/zip — 무압축 ZIP 스트리밍 (CRC32 순수 node 구현)
  6. /api/share — 공유 토큰 생성/조회/삭제
  7. /api/merge — 항목별 LWW CRDT 머지
  8. /api/access — 업로드/다운로드 접근 이력
  9. /api/구매확정 — 크라우니코인 verse 호출
  10. /api/status (ecosystem) — 전체 서비스 상태 집계
  11. 썸네일 생성 (sips 호출)

라이브 스왑 안전 절차 제안

1. 원자 스왑 (manage.sh 사용 금지 — 사용자/게이트웨이 세션이 결정)
   - 섀도에서 해당 서비스의 정식 포트로 재컴파일 후 실행
   - 기존 PID 확인: lsof -i :<포트> | awk 'NR>1{print $2}'
   - 새 프로세스 시작 후 헬스 확인 완료 시 기존 PID kill
   - 롤백: kill 새PID && SERVICE=<이름> PORT=<포트> node 서비스서버.js &

2. 1차 스왑 대상 (미포팅 API 없는 랜딩전용 서비스):
   bible market edu insurance interior branding health care baraco government
   price walk matching bm balance labor crew talk mail logo flexible kira
   christian jirayer spirit yeseo mobile architect kps

3. 2차 스왑 (store GET 사용 서비스): cloud memo (POST store 미포팅 주의)

4. 불가 (blob/zip/anchor 필수): cloud memo (1차 제외 후 JS 원본 계속 사용)

잔여 이슈

  • TCP읽기 2인자 수정을 통합서비스서버.한선에도 반영 필요
  • /api/store POST 한선씨 포팅 (원자쓰기 이름변경() opcode 사용)
  • 썸네일 한선씨 포팅 (파일소켓전송 활용)