한 일

/newprojectpearl-wol이라는 새 프로젝트를 한 번에 올렸다. 명령 하나로 비공개 repo를 만들고, 작업 폴더로 클론하고, 부팅 때 자동으로 뜨도록 프로젝트 목록에 등록하고, 작업용 tmux 창까지 띄웠다. 손으로 할 단계가 여러 개였는데 한 줄로 끝났다.

pearl-wol은 집 PC를 원격으로 켜고(WOL) 끄고(SSH), 켜져 있는지를 한 화면에서 보는 작은 대시보드다. 본체 코드는 pearl-wol repo가 따로 갖는다. devbox는 그 프로젝트를 품는 자리만 만들었다.

devbox의 setup.sh에 pearl-wol 서비스를 다시 살려내는 훅을 넣었다. VM을 새로 만들어도 pearl-wol 쪽 설치 스크립트가 있으면 그걸 불러 서비스를 복원한다. VM일 때만 돌도록 가드를 걸어서, 컨테이너 빌드 같은 데서는 안 돈다.

막힌 것, 고친 것

devbox가 pearl-wol 로직을 얼마나 떠안아야 하나가 고민이었다. 서비스 정의랑 설치 절차를 devbox에 다 넣으면, 나중에 pearl-wol이 바뀔 때마다 devbox도 같이 고쳐야 한다.

브레인스토밍으로 결합을 최소로 가는 쪽을 골랐다. 설치 로직은 pearl-wol repo가 정본으로 갖고, devbox는 그 스크립트를 부르기만 한다. 그러면 pearl-wol 기능이 바뀌어도 devbox는 손댈 일이 없다. 둘을 잇는 약속이 바뀔 때만 고치면 된다.

돌아보며

“repo가 정본"이라는 규칙이 이번에도 맞았다. VM은 언제든 다시 만들어질 수 있다. 손으로 세팅한 건 재생성하면 사라진다. 그래서 setup.sh에 훅을 박아둬야 다음 VM에서도 pearl-wol이 알아서 살아난다.

처음엔 devbox가 다 끌어안는 그림을 그렸다. 당장은 그게 쉬워 보였다. 근데 그러면 두 repo가 서로 묶인다. 한쪽을 고칠 때마다 다른 쪽을 신경 써야 한다. 부르기만 하게 떼어놓으니 마음이 편하다. 경계를 어디에 긋느냐가 결국 나중의 수고를 정한다.