Skip to content
isdnetworks
Go back

보관물에 남겨야 하는 것

(수정됨)

몇 해 전에 보관해 둔 교육 사이트 프로젝트를 다시 열어야 할 일이 생겼다. 파일은 그대로 다 있는데 무엇을 하는 것인지도 어떻게 돌리는지도 알 수 없었다.

Table of contents

Open Table of contents

증상 — 코드만 남아 있던 보관물

README.md 가 없었고 config.php 의 값도 전부 비어 있었다. 돌려 보려니 composer.json 에 PHP 판이 안 적혀 있어 필요한 런타임을 모르겠고, 알아도 지금 환경에서 구하기 어려웠다.

봐야 했던 것은 옛 데이터의 계산 방식이었으므로 읽기만 하면 되는 일이었다. 어디를 봐야 할지 몰라서 전체를 훑느라 이틀이 걸렸다.

판단 기준 — 보관하는 이유가 곧 볼 자리다

전체 구조를 처음부터 끝까지 다 적을 필요는 없었다. 무엇을 보러 다시 올지를 예상해서 그 자리만 짚어 적으면 됐다.

수료 기록 확인 때문에 보관하는 것이면 lib/grade.php 의 점수 계산과 lib/completion.php 의 수료 판정이 볼 자리다. 보관하는 이유를 ARCHIVE.md 에 적으면 볼 자리가 함께 정해지므로 그 두 줄이 이틀을 삼십 분으로 만든다.

조치 — 코드와 데이터를 함께

코드만 있으면 반쪽인데 계산 방식을 알아도 대조할 값이 없으면 확인이 안 된다. 그래서 DB 도 코드와 함께 보관하기로 했는데 두 가지 방법이 있었다. mysqldump 한 번으로 스키마와 자료를 한 파일에 담는 것과, --no-data 로 schema.sql 을, --no-create-info 로 data.sql.gz 를 따로 뜨는 것이다. 뒤쪽을 골랐다. 이유는 구조만 볼 때 자료 압축을 풀지 않아도 돼서다. 두 옵션이 각각 CREATE TABLE 만, 행만 쓴다는 것은 MySQL 5.7 매뉴얼의 mysqldump 절에 있다.

자료는 gzip 으로 압축해 두고 gzip -l 이 보여 주는 압축 전 크기도 ARCHIVE.md 에 적어서 풀 자리가 있는지 미리 알 수 있게 했다.

보관 기한과 재판단

보관 기한이 없으면 보관물은 지워지지 않고 영영 쌓이기만 한다. 운영 종료 시점에서 몇 해를 더한 날짜를 retention_until 로 적어 두고 그때 폐기 여부를 다시 판단하게 했다.

기한이 되면 자동으로 지우지 않고 다시 판단하게 한 것은 그 사이에 사정이 바뀔 수 있기 때문이다. 법정 보관 기간이 있는 것은 그것을 따랐다.

모르는 것을 모른다고 적기

보관 폴더에 있는 다른 항목도 열어 보니 그중 셋에는 ARCHIVE.md 가 없었다. 하나씩 알아내서 설명을 붙였는데 그중 하나는 아무도 모르는 것이었다.

들어 있는 파일 이름으로 짐작만 되어서 확실하지 않다는 것과 아는 사람이 없다는 것과 언제까지 두고 문의가 없으면 폐기한다는 것을 적었다. 모른다고 적어 두지 않으면 다음 사람이 같은 조사에 같은 시간을 다시 쓴다.

정리


Share this post on:

Previous Post
규제가 컬럼이 될 때
Next Post
파일 사이 참조 관계