본문 바로가기
프로젝트/원격 제어 프로그램

배포 버전 현재 상태 문서를 세우고, 과거 릴리스·업데이트 기록은 보존했다

by iwbap 2026. 10. 19.
728x90
반응형

사내 원격 제어의 배포 구성과 과거 릴리스 기록이 함께 놓여 있어, 여러 시점의 문서를 현재 지침처럼 읽을 여지가 있었다. 이번에는 코드를 고치지 않고 날짜가 붙은 현재 상태 문서를 추가해, 과거 기록과 구분했다.

사내 원격 제어의 서버·에이전트·관리·뷰어 배포 구성을 날짜가 찍힌 현재 상태 문서로 모으고, 과거 기동·취소·스케일링 보고서는 본문을 고치지 않은 채 링크만 연결한 내용을 요약한 대표 이미지
현재 스냅샷은 하나로, 과거 보고서는 보존하고 링크만 붙였다

배포 기록과 현재 안내의 경계가 흐려졌다

서비스 기동, 업데이트 대기열 중단, 규모 확장에 관한 과거 보고서가 저장소에 남아 있었다. 각각 당시의 조사 결과인데, 별도 기준점이 없으면 지금 따를 안내와 혼동할 여지가 있었다.

그렇다고 과거 보고서를 현재 상황에 맞춰 다시 쓰는 방법은 택하지 않았다. 이번 변경의 범위는 문서 정리였고, 이전 조사 결과는 보존하는 쪽으로 방향을 잡았다.

우선 다음 두 기록이 서로 다른 역할을 하도록 나눴다. 현재 상태는 날짜가 붙은 참조 문서에, 과거 경과는 원래 보고서에 남기는 방식이다.

날짜가 붙은 배포 상태를 기준점으로 세웠다

새 현재 상태 문서에는 서버·에이전트·호스트 서비스·관리 프로그램·뷰어를 역할별로 정리했다. 독자가 확인할 대상은 특정 숫자 하나보다 그 날짜에 어떤 구성이 배포되어 있었는가였다.

확인된 런타임과 릴리스의 선택, 패키지 해시도 함께 기록했다. 여기에 직전 서버 패키지 시도 실패와 아직 남은 실행 테스트 범위까지 포함했다.

등록 시점에 확보한 증거는 현재 기준에 맞춘다는 이유로 다시 쓰지 않았다. 나중에 확인한 사실과 당시 남긴 근거를 구별하기 위한 선택이었다.

실패했던 직전 서버 패키지 시도도 지우지 않았다. 실패한 배포 기록은 다음에 같은 실수를 막는 재료다. 성공한 버전만 남기면 중간 과정이 증발한다.

서버·에이전트·관리·뷰어 역할을 날짜가 찍힌 현재 상태 스냅샷 하나로 모으고, 확인된 런타임·릴리스 선택과 패키지 해시, 직전 서버 패키지 시도 실패, 남은 실행 테스트 경계를 함께 기록하며 등록 시점 증거는 덮어쓰지 않은 개념 도식

다음 코드는 실제 사용한 스크립트가 아닌 개념 예시다. 현재 스냅샷을 나타내는 자료와 과거 보고서 링크를 구분하는 생각만 보여 준다.

# 개념 예시: 현재 배포 스냅샷과 과거 보고서를 역할로 나눈다
snapshot = {
    "as_of": "2026-10-15",
    "role": "current",  # historical 보고서는 수정하지 않음
    "components": ["서버", "에이전트", "관리", "뷰어"],
}

def link_history(current_doc, old_reports):
    # 과거 보고서 본문은 보존하고, 현재 문서에서만 연결한다
    current_doc["see_also"] = list(old_reports)
    return current_doc

여기서 중요한 것은 예시 함수 자체가 아니라 기록을 분리하는 기준이었다. 스냅샷은 확인한 현재 구성을 가리키고, 과거 보고서는 당시의 내용을 유지한다.

여러 안내 문서에서 현재 기준을 맞췄다

루트·서버·관리 프로그램·자동화 안내 문서에도 같은 기준을 반영했다. 현재 서비스 주소에 관한 안내와 로컬 VM·컨테이너 배포 설명을 갱신했다. 컨테이너 개념 자체는 Docker 공식 문서의 컨테이너 설명에 정리되어 있다.

소스 버전을 판단할 때 따를 기준도 다시 적었다. 디렉터리 이름이 아니라 소스의 버전 파일을 기준으로 삼았고, 안드로이드 버전은 스토어 출시 확인이 아닌 소스에서 관찰한 버전 정보라는 한계를 명시했다.

옛 호스팅 배포 안내는 현재 절차와 혼동하지 않도록 경고를 남겼다. 오래된 내용이라는 이유로 흔적을 지우기보다, 현재 안내에서 주의할 부분을 구분했다.

이번 변경은 문서의 설명을 고친 것이지 실제 배포 환경을 새로 구성한 작업은 아니었다. 따라서 안내가 정리됐다는 사실만으로 운영 적용이나 실행 검증을 주장할 수는 없었다.

업데이트 규칙의 예외도 문서에 드러냈다

업데이트 관련 문서에는 보류와 명시적 재개, 다운그레이드 승인을 구분해 적었다. 작업 결과를 보고할 때 수신 확인 기록과 연결해야 한다는 점도 포함했다.

보류는 다른 PC가 수동으로 성공했다고 풀리지 않는다. 재개 동작이 있어야 풀린다. 낮은 버전으로 내리는 일은 관리자 승인이 있을 때만 받게 적어 두었다. 결과 보고는 작업 영수증과 짝이 맞아야 의미가 있다.

업데이트 보류는 명시적 재개로만 풀리고, 다운그레이드는 관리자 승인이 있을 때만 받으며, 결과 보고는 작업 영수증과 짝을 맞추고 첫 업그레이드 한계를 문서에 남긴 규칙을 보여 주는 개념 도식

처음 업그레이드할 때의 한계도 설명에서 빼지 않았다. 새 버전으로 처음 올리는 작업은 기존 에이전트와 서비스가 처리하므로, 새 복구·취소 동작의 실행 검증은 그다음 업데이트 시험과 구분해야 한다는 첫 업그레이드의 제약을 함께 남겼다.

이 규칙이 필요했던 배경은 자동 업데이트 롤아웃 중단과 복구를 다룬 기록과 이어진다. 다만 이번 커밋 자체는 업데이트 기능을 새로 구현한 변경이 아니었다.

인코더 구분과 과거 보고서 연결도 바로잡았다

기존 인코더와 네이티브 인코더 안내에서 서로 다른 배포물을 구분했다. 기본 제공 아카이브, 맞춤형 GPU 런타임, 릴리스된 네이티브 표식을 같은 것으로 취급하지 않게 정리했다.

이름이 비슷하다는 사실만으로 동일한 배포물이라고 설명해서는 곤란했다. 이번 작업은 문서의 구분을 명확히 한 것이며 인코더를 새로 빌드한 기록은 아니었다.

과거 기동·취소·스케일링 보고서는 본문을 고치지 않았다. 현재 스냅샷 문서에서 링크로만 연결하고, 원래 조사 결과는 그대로 두었다.

현재 스냅샷 문서에서 과거 기동·취소·스케일링 보고서로 링크만 연결하고 원래 조사 결과는 보존하며, 기본 제공 아카이브·커스텀 GPU 런타임·릴리스된 네이티브 표시를 구분해 적은 구조 도식

문서에서 확인한 범위와 남은 경계를 나눴다

이번 작업에서 확인 가능한 변경은 현재 상태 참조 추가와 여러 안내 문서의 갱신이었다. 과거 근거를 보존하고, 관련 보고서를 현재 참조와 연결한 것도 그 범위에 포함된다.

  • 재빌드하거나 운영 환경에 새로 배포하지 않았다.
  • 계정·신원 검증이나 서명 변경을 수행하지 않았다.
  • 등록 당시의 증거와 과거 보고서의 원래 결론은 수정하지 않았다.

남은 실행 테스트 경계는 현재 상태 문서에서 계속 확인해야 한다. 문서를 최신 기준으로 고치는 일과 실제 동작을 검증하는 일은 분명히 달랐다.

이번에 얻은 교훈은 현재 상태의 기준점을 따로 남기는 것이었다. 다음 릴리스에서도 날짜가 붙은 상태 문서와 과거 근거를 구분해 확인할 생각이다.

728x90
반응형