스키마 변경 뒤 구버전 앱의 재배포 실패

이 글의 목차 7개 항목

문제와 원인

스키마 0561을 적용한 DB에 0560을 기대하는 앱을 연결하면 health가 degraded, HTTP 503을 반환한다. 0561 마이그레이션은 개인학습 테이블·인덱스·트리거를 추가하고 app_schema_state를 0561로 갱신한다. 기존 행을 보존하는 추가형 변경이어도 앱의 정확 일치 검사는 기대 버전과 다른 값을 실패로 처리한다.

현재 코드

schema-contract.mjs

이전 빌드의 기대 버전:

export const EXPECTED_SCHEMA_VERSION = "0560";

개인학습 추가 빌드의 기대 버전:

export const EXPECTED_SCHEMA_VERSION = "0561";

readHealthDiagnostics

두 빌드의 health는 같은 동등 비교를 사용한다.

const healthy = operational.databaseReachable
  && operational.schema?.migration_version === __BAEUMZIP_SCHEMA_VERSION__
  && missingObjects.length === 0
  && (!groupExamEnabled || groupExam.ready);

진단 결과

원본 health 함수

Node.js에서 원본 readHealthDiagnostics와 GET 함수를 실행했다. DB 도달 가능·필수 객체 존재·그룹 시험 비활성의 합성 repository 입력을 고정하고, 기대 버전 2개와 적용 스키마 4개를 조합별 1회씩 총 8회 비교했다.

적용 스키마0560 기대 빌드0561 기대 빌드
0560ok · HTTP 200degraded · HTTP 503
0561degraded · HTTP 503ok · HTTP 200
0562degraded · HTTP 503degraded · HTTP 503
스키마 행 없음degraded · HTTP 503degraded · HTTP 503

로컬 HTTP 응답

Swagger UI·1280×720 CSS px·DPR 2에서 두 조합을 각 1회 요청했다. 요청마다 메모리 SQLite의 app_schema_state를 SELECT하고 원본 health·GET 함수로 상태를 계산했다. 필수 객체·그룹 시험 조건은 합성 대역이며, 개발 adapter가 진단 본문을 표시한다.

기대 / 적용 스키마HTTP 상태진단 본문
0560 / 0561503status: degraded, schema.expected: 0560, schema.applied: 0561
0561 / 0561200status: ok, schema.expected: 0561, schema.applied: 0561

0560을 기대하는 빌드에 0561 스키마를 연결한 요청은 HTTP 503·degraded를 반환했다.

기대 버전 불일치 응답: HTTP 503·degraded원본 보기 (새 창)

기대 버전 불일치 응답: HTTP 503·degraded

100%원본 보기 (새 창)

확대한 이미지는 상하좌우로 이동할 수 있습니다. 키보드는 이미지 영역에 초점을 두고 방향키를 사용하세요. Esc로 닫습니다.

같은 응답의 schema 값은 기대 버전 0560·적용 버전 0561이었다.

불일치 진단: expected 0560·applied 0561원본 보기 (새 창)

불일치 진단: expected 0560·applied 0561

100%원본 보기 (새 창)

확대한 이미지는 상하좌우로 이동할 수 있습니다. 키보드는 이미지 영역에 초점을 두고 방향키를 사용하세요. Esc로 닫습니다.

0561을 기대하는 빌드로 요청하면 HTTP 200·ok를 반환했다.

기대 버전 일치 응답: HTTP 200·ok원본 보기 (새 창)

기대 버전 일치 응답: HTTP 200·ok

100%원본 보기 (새 창)

확대한 이미지는 상하좌우로 이동할 수 있습니다. 키보드는 이미지 영역에 초점을 두고 방향키를 사용하세요. Esc로 닫습니다.

진단 본문의 기대 버전과 적용 버전도 모두 0561로 일치했다.

일치 진단: expected 0561·applied 0561원본 보기 (새 창)

일치 진단: expected 0561·applied 0561

100%원본 보기 (새 창)

확대한 이미지는 상하좌우로 이동할 수 있습니다. 키보드는 이미지 영역에 초점을 두고 방향키를 사용하세요. Esc로 닫습니다.