-
hanyul released this
2026-10-25 10:42:44 +09:00 6.0.0 주요 변경사항
기존 설치의 schema 반영이 수동 SQL에서 자동 반영으로 바뀌고 배포 스크립트·Compose 계약이 함께 바뀌어 major 6.0.0으로 게시합니다. 기존 데이터는 그대로 유지됩니다.
자동 schema 반영과 배포
- backend·crawler가 시작 전에
sql/upgrades/반영 파일을 원장(schema_upgrades)에 기록하며 한 번씩 적용합니다. 파일 내용이 원장과 다르면 시작하지 않습니다. ops/deploy-production.sh가 서비스를 교체하기 전에 새 crawler 이미지로배포 전파일을 적용하고, 새 backend·crawler 이미지의 읽기 전용 schema 확인을 통과해야 교체합니다.crawler 정지: 필요파일이면 crawler를 멈춘 뒤 다시 실행하고,/api/health/ready뒤 배포 완료 단계에서배포 후파일을 적용합니다.- 중지된 기존 PostgreSQL을 최초 설치로 보지 않고, 배포 전 schema 확인 없이 교체하지 않습니다.
- 게시가 릴리스 manifest(
ops/releases/<버전>.env)를 남기고,RELEASE_MANIFEST로 게시 때 확인한 digest 그대로 배포·rollback할 수 있습니다.
검색·작품
- 검색창에
shirabe_shiki처럼_로 이은 이름이나artist:shirabe_shiki를 붙여넣어도 작가 태그가 제안되고, 그대로 검색해도shirabe shiki작품이 나옵니다. - 상세 창에 비슷한 작품 줄을 추가했습니다.
- 업로드 이미지 검색에 좌우 반전·회전·선택 영역 질의와 질의 설명을 추가하고, 큰 이미지는 업로드 전에 줄입니다.
알림
- 저장한 검색에 새 작품이 들어오면 Push 알림을 보냅니다(사용자별 24시간 20건). 저장한 검색마다 알림을 켜고 끌 수 있습니다.
- 관리자 운영 Push 알림: crawler 연결 불가, E-Hentai 수집 실패·보호 정지를 알리고 같은 사건은 한 번만 보냅니다.
- 작가 알림에 공개 노출과 개인 차단을 적용합니다. 재시도 가능한 알림의 발송 기록을 보존하고 발송 기록에 보존 기간을 둡니다.
계정·패스키
- 패스키 실패는 화면에 고정 문장 하나("패스키를 추가하지 못했습니다." 등)로만 보이고, 진단 정보 복사는 운영자에게만 보입니다.
- 패스키 자동 완성 대기를 서버 ceremony 기한 전에 끝내고 입력칸 포커스 때 다시 겁니다.
- 전역 오류 화면과 열거 값만 받는 브라우저 실패 보고를 추가했습니다.
- 계정 내보내기에 Push 구독·알림 기록과 다시 받기로 보관 중인 기록을 포함합니다. 전체 session 종료를 DB 시각으로 보장합니다.
수집과 운영
- Hitomi: 새 완료 작품 재확인과 파일 변경 작품 다시 받기를 추가했습니다. 다시 받아도 북마크·읽기 기록·알림 기록이 새 작품으로 옮겨지고, 다시 받기가 실패하면 보관해 운영 화면에 건수를 보여 줍니다. 같은 작품 반복 정지는 보류하고 정지 작품을 격리할 수 있습니다.
- E-Hentai: 목록·상세 요청 재시도, 상세 반복 실패 격리(알 수 없는 안내는 일시 실패), gdata 사전 제외, 버전 계보 저장과 새 버전 안내·중복 사전 후보를 추가했습니다. latest가 증분 기준선을 옮기지 않습니다.
- 중복 검토에 보존 추천과 연결된 후보 함께 정리를 추가했습니다.
- 운영 화면에 backend 5xx 원인 분류·5xx·DB 대기 지표·route별 상태와 수집 처리량의 storage lock 대기 단계를 보여 줍니다. 실시간 로그는 PostgreSQL 문장을 가립니다.
- 운영 점검에 보안 설정·PostgreSQL 진단을 더하고 MinIO 용량 확인은 선택 실행으로 바꿨습니다. 처리량·상위 문장 읽기 전용 SQL(
ops/crawl-throughput.sql,ops/top-statements.sql)을 추가했습니다.
성능·안정성
- 이미지 색인 통계를 전수 join 없이 집계하고 집계 간격을 지킵니다(PostgreSQL 임시 파일 대량 기록 원인).
- GC 통계·정리가 후보 작품만 읽고(부분 index 추가) orphan audit는 백그라운드로 실행합니다.
- 요청 지표를 합산해 15초마다 기록하고 요청 예산 Lua를 EVALSHA로 보냅니다. Hitomi 404 원본 삭제 표시를 묶어 처리합니다.
- Redis 멈춤을 무응답 시간으로 판정하고 RDB 저장을 1시간 1회로 줄였습니다. 잠금 안 S3 호출에 전체 deadline을 둡니다.
- PostgreSQL에
pg_stat_statements와 느린 문장·lock 대기·임시 파일 로그를 켰습니다. - 다른
PHASH_VERSION지문을 만나면 색인이 지문을 지우지 않고 멈춥니다. - nginx가 container 재생성 중 DNS 실패로 upstream을 비우던 구간을 30초에서 5초로 줄였습니다.
- viewer 렌더링·preload·진행률 조회, 모아보기·북마크 목록 이어 받기의 count 반복, dashboard·읽기 기록 export 조회를 줄였습니다. React Query 기본 재시도는 연결 단절·5xx에만 합니다.
반영 SQL
배포 때 자동 반영이 아래 순서로 한 번씩 실행합니다. 모두
배포 전,crawler 정지: 불필요이며 추가 변경이라 데이터를 바꾸지 않습니다.파일 내용 20261024-01-session-revoke-and-cascade-indexes.sqlusers.sessions_revoked_at컬럼, 북마크·작가 북마크·발송 기록 index(CONCURRENTLY)20261024-02-pg-stat-statements.sqlpg_stat_statements확장20261024-03-gc-candidate-indexes.sqlimages·galleriesGC 후보 부분 index 3개(CONCURRENTLY, 운영 규모에서 오래 걸릴 수 있음)20261024-04-saved-search-and-admin-alerts.sql저장한 검색 알림 컬럼, 관리자 운영 알림 테이블 20261025-01-gallery-refetch-holds.sql다시 받기 개인 기록 보관 테이블과 보관·되돌리기 함수 이미지 게시 범위
-ChangedOnly게시입니다. 버전 태그6.0.0은 새로 빌드한 서비스에만 있습니다.서비스 6.0.0 digest backend(log-reader) 새 빌드 sha256:a694729c…crawler 새 빌드 sha256:01d61dc7…web 새 빌드 sha256:5907d2ee…nginx 새 빌드(resolver 변경) sha256:92d8cc32…byedpi 재사용(5.22.4) sha256:d0343125…릴리스 manifest:
ops/releases/6.0.0.envNAS 업데이트와 주의사항
운영은 운영 반영과 기존 설치 schema 반영을 따릅니다.
- 반드시 새
compose.yml·ops/deploy-production.sh로 배포합니다.backend-schema-check서비스, manifest 이미지 변수, PostgreSQL·Redis 설정이 새 Compose에 있습니다. - PostgreSQL·Redis 재생성: PostgreSQL command(
pg_stat_statementspreload·진단 로그)와 Redis 저장 설정이 바뀌어 두 컨테이너가 다시 만들어집니다. 짧은 DB 중단이 있습니다. - Watchtower:
20261024-03이 큰 테이블에 index를 만들므로 Watchtower를 멈추고 배포 스크립트로 배포합니다. Watchtower가 먼저 교체하면 반영이 끝날 때까지 backend·crawler가 멈춥니다. - 반영 결과는 배포 출력과
[schema-upgrade]로그,schema_upgrades원장으로 확인합니다. - 환경 키 변경은 없습니다.
- rollback: 반영 SQL은 모두 추가 변경이라 5.22.4 이미지로 되돌려도 새 컬럼·테이블·index를 무시합니다. 5.22.4 이하는 manifest가 없으므로 운영 반영의
IMAGE_TAG블록을 따르며,-ChangedOnly게시라 서비스별 이전 태그를 먼저 확인합니다.
Downloads 2
-
Source code (zip)
0
2026-10-25 10:42:44 +09:00 -
Source code (tar.gz)
0
2026-10-25 10:42:44 +09:00
- backend·crawler가 시작 전에