Skip to content
isdnetworks
Go back

작업 공간 둘의 통합 여부

작업 공간이 둘이라 오가는 것이 번거로워서 합칠지를 고민하게 됐다. 같은 도구를 두 곳에 나눠 두고 하나를 고치면 다른 쪽에도 복사하는 상태였다.

Table of contents

Open Table of contents

둘로 나뉜 상태

합쳤을 때 좋아지는 것과 나빠지는 것을 두 목록으로 나란히 적어 봤다. 도구를 한 벌만 두게 되고 설정을 한 번만 하며 전체 검색이 되는 것이 좋아지는 쪽이다.

나빠지는 쪽은 고객사 자료가 한 자리에 섞이고 저장소가 커지며 실수로 다른 고객사 자료를 건드릴 수 있다는 것이었다. 두 번째 목록의 첫 항목이 결정적이었고 고객사 자료를 섞는 것은 받아들일 수 없었다.

무엇을 합칠지의 구분

전부 합치거나 전부 나누는 두 선택지만 놓고 보니 어느 쪽도 맞지 않았는데 항목별로 갈라 보니 답이 나왔다.

도구와 설정과 문서 틀은 합치고 고객사 자료와 저장소와 자격 증명은 나눈다. 도구는 한 자리에 두고 각 작업 공간에서 그것을 참조하는 형태로 만들었다. 합칠지 나눌지가 아니라 무엇을 합칠지로 물음을 바꾸니 두 목록의 좋은 점만 남았다.

참조 방법과 실수 방지

도구는 링크로 이어서 한 벌만 두고 양쪽에서 보이게 했다. 링크가 저장소에 들어가면 다른 환경에서 깨질 수 있어 저장소에는 안 넣고 각 환경의 준비 스크립트가 만들게 했다.

한 자리에 있으니 실수할 여지가 있어서 각 작업 공간에 표시 파일을 하나씩 뒀다. 도구가 그 파일을 읽어 지금 어느 작업 공간에 있는지를 명령마다 출력하게 했다.

$ ./tools/deploy.sh
작업 공간: customer-a
정말 배포합니까? (yes)

되돌릴 수 없는 명령 앞에서 한 번 물어보게 한 것이 다른 곳인 줄 알고 돌리는 것을 막았다.

자격 증명의 분리

고객사마다 키를 나누고 접속 설정에서 호스트 별칭으로 갈라 두었다. 저장소 주소에 어느 쪽인지가 들어가므로 별도 지정 없이 맞는 키를 쓰게 된다.

키를 나눠 두면 하나가 새더라도 다른 쪽은 그대로 안전하고, 도구를 합치면서도 이것만은 합치지 않은 이유가 거기 있었다.

나중에 떼어 낼 수 있는 형태로도 만들어 뒀다. 고객사별 폴더 하나로 모아 두니 그 고객사가 끝났을 때 폴더만 압축해 보관하고 지우면 됐고 도구는 그대로 남았다.

도구가 한쪽에 묶이지 않게

도구를 합치고 나니 한 작업 공간에만 맞는 코드가 섞여 들어가는 문제가 생겼다. 배포 대상 호스트가 도구 안에 박혀 있어서 다른 작업 공간에서 쓰면 틀린 곳으로 나갔다.

DEPLOY_HOST=$(grep '^deploy_host=' .workspace | cut -d= -f2)
[ -n "$DEPLOY_HOST" ] || { echo ".workspace 에 deploy_host 가 없습니다"; exit 1; }

그래서 작업 공간 설정에서 읽게 하고 그 값이 없으면 멈추게 했다. 기본값을 두면 설정이 빠졌을 때 조용히 엉뚱한 곳으로 나가므로 여기서는 멈추는 쪽이 맞았다. 도구를 합치는 조건은 그 도구가 어느 쪽에도 안 묶이는 것이었다.

정리


Share this post on:

Previous Post
성공이 아니었던 성공 목록
Next Post
멱등은 전제 위에 선다