개인적으로 쓰려고 만든 CLI는 실행만 되면 충분합니다. 그러나 다른 사람이 사용하기 시작하면 설정 파일이 어디에 있는지, 오류가 무엇을 뜻하는지, 업데이트 후 되돌릴 수 있는지를 설명해야 합니다.
이번 글에서는 작은 도구를 배포할 때 코드 기능보다 먼저 결정해야 할 네 가지를 정리합니다. 패키지 레지스트리를 쓰든 실행 파일을 배포하든 공통으로 적용되는 기준입니다.
첫 실행에서 알아야 할 것을 줄입니다
CLI 사용자는 README를 끝까지 읽지 않고 명령을 실행합니다. 첫 실행에서 필요한 설정이 무엇인지, 기본 출력이 어디에 저장되는지, 실패했을 때 다음에 무엇을 해야 하는지가 바로 보여야 합니다.
저는 설정을 명령행 인자, 환경 변수, 설정 파일 세 층으로 나누고 우선순위를 문서에 고정합니다. 비밀 값은 로그와 예제에서 제거하고, 설정이 없을 때는 조용히 실패하지 않고 정확한 안내를 보여 줍니다.
- 명령행 인자: 한 번의 실행에서만 바뀌는 값입니다.
- 환경 변수: CI나 비밀 값처럼 실행 환경에서 주입할 값입니다.
- 설정 파일: 프로젝트마다 반복되는 기본값과 경로입니다.
로그는 개발자 말이 아니라 사용자의 다음 행동을 말해야 합니다
스택 트레이스는 개발자에게 필요하지만, 일반 사용자는 어떤 파일이나 설정을 확인해야 하는지 알기 어렵습니다. 오류 메시지에는 실패한 작업, 대상, 다음 행동을 넣고 상세 정보는 `--verbose` 같은 옵션으로 분리합니다.
성공 로그도 모든 내부 단계를 출력하지 않습니다. 처리한 파일 수, 출력 경로, 경고 수처럼 사용자가 결과를 확인하는 데 필요한 정보만 기본으로 보여 줍니다.
상황기본 출력상세 출력
| 설정 누락 | 어떤 설정이 필요한지 | 설정 탐색 경로 |
| 파일 실패 | 파일명·실패 이유·계속 여부 | 예외와 재시도 정보 |
| 완료 | 처리 수·출력 위치 | 각 단계별 소요 시간 |
버전과 릴리스 노트가 되돌리기를 가능하게 합니다
작은 도구는 업데이트를 자주 하지 않아도 버전이 필요합니다. 사용자는 어떤 버전에서 동작했는지 기록해야 하고, 문제가 생기면 이전 버전으로 돌아가야 합니다. 릴리스에는 변경점과 호환성 주의를 함께 적습니다.
GitHub Releases는 태그와 릴리스 자산을 묶어 배포할 수 있어 작은 도구의 공개 기록으로 사용하기 좋습니다. 패키지로 배포한다면 설치 명령과 권한 범위를 별도로 설명합니다.
- 버전 규칙: 호환성이 깨지는 변경과 수정 릴리스를 구분합니다.
- 릴리스 노트: 사용자가 영향을 받는 변경만 먼저 적습니다.
- 롤백: 이전 버전 설치 방법과 데이터 호환성을 확인합니다.
배포 전에는 낯선 컴퓨터에서 한 번 실행합니다
개발 환경에서는 우연히 존재하는 환경 변수, 전역 패키지, 폰트, 권한 때문에 성공할 수 있습니다. 저는 임시 폴더나 별도 계정에서 설치부터 삭제까지 시험합니다. 이 과정에서 README의 빈칸이 가장 많이 드러납니다.
도구가 파일을 수정하거나 삭제한다면 미리보기 모드와 확인 단계를 둡니다. 자동화된 편리함보다 사용자가 결과를 되돌릴 수 있는지가 우선입니다.
운영 가능한 크기로 줄이는 순서
작은 도구나 서비스의 설계는 기능 목록을 늘리는 일보다 경계를 줄이는 일에 가깝습니다. 저는 먼저 입력과 출력, 실패했을 때 사용자가 되돌릴 수 있는 지점을 적습니다. 그 다음 실제 사용량이나 파일 한두 개로 기준선을 만들고, 가장 비싼 작업과 가장 위험한 작업을 따로 표시합니다. 이 과정을 거치면 ‘있으면 좋은 기능’과 ‘없으면 복구할 수 없는 기능’을 구분할 수 있습니다.
첫 버전은 관찰할 수 있어야 합니다. 요청 수·처리 시간·오류·복구 성공 여부처럼 다음 결정을 돕는 기록을 최소한으로 남깁니다. 자동화나 클라우드 기능을 붙일 때도 기본값과 상한을 먼저 정하고, 테스트용 자원과 운영 자원을 분리합니다. 실패했을 때 원상 복구할 수 없는 기능은 공개 범위를 좁혀 시작하는 편이 안전합니다.
- 경계: 지원하는 입력·사용자·환경과 지원하지 않는 범위를 적습니다.
- 기준선: 정상 입력 하나와 실패 입력 하나를 저장해 반복 테스트합니다.
- 관찰: 비용·지연·오류·복구에 필요한 최소 지표만 수집합니다.
- 되돌리기: 배포·삭제·마이그레이션을 취소하는 절차를 실제로 시험합니다.
다음 작업에서 다시 확인할 항목
한 번 적용한 방법이 언제나 같은 결과를 내는 것은 아닙니다. 사람과 서비스와 원고의 조건이 바뀌면 같은 원칙도 다른 판단을 요구합니다. 그래서 저는 글을 작성한 뒤 결론만 보관하지 않고, 결론이 성립한 조건과 다시 확인해야 할 조건을 함께 적습니다. 이 기록이 있으면 몇 달 뒤 글을 업데이트할 때 당시의 경험을 현재의 사실처럼 착각하지 않을 수 있습니다.
특히 버전·정책·가격·플랫폼 기능처럼 외부에서 바뀌는 내용은 조사한 날짜와 공식 문서의 주소를 남깁니다. 발행 시점에 문서가 달라졌다면 본문에 변경 사실을 표시하고, 직접 확인하지 못한 부분은 독자가 알 수 있도록 범위를 제한합니다. 경험을 공유하는 글도 다른 사람의 환경에 그대로 적용될 수 있으므로, 성공 사례보다 실패 조건을 함께 쓰는 편이 안전합니다.
마지막으로 이 글을 읽은 분이 바로 할 수 있는 행동은 하나로 줄입니다. 모든 항목을 한꺼번에 바꾸기보다 현재 상태를 기록하고, 작은 실험을 한 번 실행하고, 결과를 다시 적는 순서입니다. 그렇게 쌓인 기록이 다음 글의 소재가 되고, 처음의 판단을 더 정확하게 고쳐 쓰는 근거가 됩니다.
- 범위 표시: 이 글의 결론이 적용되는 환경과 적용되지 않는 환경을 구분합니다.
- 날짜 기록: 버전·정책·가격·문서를 확인한 날짜를 남깁니다.
- 실패 조건: 어떤 상황에서는 이 방법을 쓰지 말아야 하는지 적습니다.
- 작은 실행: 독자가 오늘 시도할 수 있는 가장 작은 행동을 고릅니다.
- 후속 기록: 실행 결과와 다음에 바꿀 조건을 별도 메모로 남깁니다.
이 기록을 나중에 다시 읽을 때는 결과만 보지 않고 당시의 조건도 함께 확인합니다. 조건이 달라졌다면 결론을 그대로 복사하지 말고 현재의 입력과 제약을 다시 적습니다. 그 과정을 거쳐야 이 글이 단순한 경험담이 아니라 다음 판단을 돕는 작업 기록으로 남습니다.
마치며
작은 CLI 도구의 완성도는 기능 수보다 첫 실행의 안내, 오류 뒤의 다음 행동, 이전 버전으로 돌아갈 수 있는지에서 드러납니다. 배포할 도구가 있다면 낯선 컴퓨터에서 설치·실패·롤백 세 가지를 먼저 시험해 보시기 바랍니다.
참고한 문서: GitHub Releases · GitHub Packages
'만드는 기록 > 작게 만든 도구들' 카테고리의 다른 글
| 티스토리 글을 자동으로 백업하는 스크립트 만들기 (0) | 2026.08.29 |
|---|---|
| 플랫폼별 복붙 오류를 없애는 원고 서식 변환기 직접 만들기 (0) | 2026.08.28 |