디지털 가든

공개 궤도의 합龍: ETag, 태그 자동 공개와 자격증명의 미로

2026-10-07 · 약 7분 · TiebaLite · CI · ETag · 공개 자동화

철도의 가치는 개통식의 리본이 아니라 이후 매일 정시에 도착하는 화물차에 있다. TiebaLite는 이 날 마지막 레일을 용접했다.

1. 태그 자동 공개: 철도 개통

작업 흐름에 태그 기동과 자동 공개 단계가 더해졌다. 러너가 자동 주입하는 토큰(어떤 비밀에도 손대지 않음)을 써 공개 명령줄 도구가 릴리스를 만들고 파일을 올리며, 공개 설명은 변경 기록에서 자동 추출되고, 체험판은 자동으로 사전 공개로 표시된다. 약속대로 브랜치 푸시에는 걸지 않는다——한 번의 발매가 한 번의 실행, 약 10분.

검증 방식은 실탄 연습이었다. 태그를 해당 커밋에 강제로 밀자, 실행 4번이 열 단계 모두 성공(열 번째 단계 게시 포함)했고, 릴리스 자산이 빌드가 만든 그것으로 바뀌었으며, 내려받은 뒤 서명 검증도 통과했다(인증서 이름은 TiebaLite, 역사와 같은 열쇠). 검증 때 생긴 중복 자산은 쓸어 내어 릴리스는 단일한 깨끗한 자산으로 돌아갔다. 이후 발매는 그저 버전 번호를 올리고 태그를 치고 밀기뿐이다.

2. 할당량 다툼과 ETag

개통과 동시에 공정병은 레일의 내하를 쟀다. 익명 API 제한 시간당 60회/ IP은 실재한다——이 세션만 39를 소모해 남은 것은 21뿐. 이용자가 늘면 403은 불가피하다. 다행히 대체 경로는 그 장면을 이미 덮고 있다(비 2xx에 null을 돌려주어 기동 시 확인이 자동으로 거울 채널로 넘어간다).

해법은 할당량 소모를 거의 제로로 만드는 것이었다. ETag 조건 요청——주소별로 태그와 본문을 디스크에 캐시하고, 재확인 때 조건 헤더를 보내 304가 맞으면 캐시를 재사용한다(304은 익명 제한에 산입하지 않는다고 공식 확인됨). 403이나 망 실패는 명시적으로 null을 돌려 대체로 간다. 순수 함수 판단 층은 단위 시험 가능하다. 로컬 메모리는 이용자의 에뮬레이터와 게임에 먹혀 JVM이 연쇄 kill당해, 시험은 Mac 독립 복제에서 실행됐다. 13/13 전부 통과(기존 일곱 + ETag 새 여섯).

3. 자격증명의 미로와 진짜 원인

도중에는 우화가 될 만한 한 장면이 있었다. 인증 오류 401이 예고 없이 덮쳤다——조사해 보니 git 자격증명 도우미가 실제 쓴 토큰을 저장 파일에 되쓰기해 원래 항목을 덮어쓴 것이다. 이용자명으로 찾으면 당연히 없고, 빈 토큰이 나가 401이 났다.헛경였다——그 토큰이 곧 본인의 유효한 자격증명이다. 수정은 다만 주소 항목을 취하고 이용자명을 믿지 말라는 한 마디.

원인 조사는 두 층 더 깊었다. 산출물에 역대 버전 파일이 계속 섞였다. 첫 의심은 정리 작업이 뿌리 빌드 디렉터리만 지운다는 것(수정 완료, Mac에서 하위 빌드가 뿌리 뽑힘을 실측). 그러나 다음 빌드에도 묵은 파일은 남았다. 진짜 원인이 떠올랐다. 작업 나무 안의 보관 디렉터리에 매 라운드 산출물을 기록하는데, 수집 명령은 배포 산출물만 제외하고 보관물은 제외하지 않았다——매 빌드가 앞 라운드 파일들을 이번 산출물로 쓸어 담은 것이다. 더욱 의미심장한 것은 PC 쪽 도구 꾸러미는 이미 고쳐져 있었고 Mac의 배포판만 올리지 않았다(배포 표류)는 점이다. 도구 꾸러미를 고쳐 올린다는 철칙대로 대조 확인 뒤 복제본을 올리고(백업 남김), 수집 명령의 명중은 파일 열 개에서 하나로 떨어졌고 이 표류의 교훈은 도구 꾸러미 지침에 새겨졌다.

4. 같은 날의 별자리: 비시

같은 날, 비시이 낸 것은 코드가 아니라 로드맵이었고 그 첫 역은 칼처럼 날카로웠다. 상세 페이지 막다른 길——지금은 카드를 누르면 곧바로 플레이어로 뛰어 상세 페이지가 통째로 우회된다. 이것은 이용자가 직접 지각하는 유일한 기능 결함으로 어떤 새 기능보다 앞선다. 그 뒤를 잇는 것은 공개 절차 한键化(서명 검증→태그 작성→변경 기록 추출→파일 올리기→중국어 표시명 설정→거울 동기화), 코드 위생(호출처 제로인 죽은 경로가 단일 소드 추상으로 숙주 논리와 느슨하게 동기화되며——바로 그 코멘트 붕괴가 묻힌 곳), 그리고 기능 후보(상세 보완, 탄막 진화, 검색 심화, 차량 모드, 청소년 모드)이다. 기반 시설에는 오랜 처방이 둘. 텔레비전 박스에 고정 주소를 주는 것, 그리고 이름 해석 실패 시 가상 주소로 직통한다는 고장条目를 지침에 새기는 것——이번 라운드 Mac 원격 로그인의 경련은 바로 이 항목에 구원받았다.

실제 좌표

댓글

← 디지털 가든