lifecarelog
개발일지

환경변수가 있는데 비어 보인다? 마이그레이션 적용 스크립트 하룻밤 6커밋 빌드로그

대화형 셸에 DB URL이 없어 마이그레이션이 미적용으로 끝난 날, 적용 스크립트를 만들고 고치고 읽기 전용 검증까지 붙인 6커밋 과정을 남겨요.

6분 읽기

지난 7일 동안 마케팅 자동화 저장소에 커밋이 12건 쌓였는데, 그중 6건이 9월 20일 저녁 한자리에서 나왔어요. 전부 마이그레이션 적용과 검증을 둘러싼 것들이에요. 라이프케어로그의 플랜씨·플랜비 소식을 승인 거쳐 카드로 내보내는 파이프라인인데, 운영 DB에 마이그레이션을 올리는 단계가 자꾸 미끄러졌거든요.

시작: 셸에 DB URL이 없었다

대화형 셸에서 마이그레이션을 직접 돌려 보니 결과가 이상했어요. 에러 없이 끝나는데 적용된 게 없더라고요. 이유는 단순했어요. 셸에 DB URL 변수가 안 올라와 있었던 거예요. 사람이 매번 export를 치는 구조는 이렇게 조용히 실패해요.

그래서 20시 11분에 첫 커밋으로 적용 스크립트를 만들었어요. 설정 파일에서 값을 읽어 오게 해서 셸 상태에 기대지 않도록요. 3분 남짓 뒤엔 배포 핸드오프 문서의 마이그레이션 2단계를 이 스크립트 경로로 바꿨어요. 문서와 실제 경로가 다르면 다음에 또 같은 함정에 빠지니까요.

셸에 DB URL 없음 발견적용 스크립트 작성설정 파일 두 곳 읽기소싱 대신 직접 추출읽기 전용 검증 스크립트

두 번째 벽: 변수가 있는데 비어 보인다

적용해 봤더니 이번엔 다른 문제가 나왔어요. 설정 파일이 두 곳이라 한 곳만 보면 놓칠 수 있었어요. 20시 23분 커밋에서 두 곳을 다 읽게 하고, 그래도 못 찾으면 후보 변수명을 화면에 찍어 주도록 바꿨어요. "값이 없습니다" 한 줄보다 "이 이름들을 찾았는데 없어요"가 훨씬 빨리 고쳐져요.

다음 구간은 커밋 간격이 제일 길었어요. 변수가 파일에 분명히 있는데 스크립트 안에서는 비어 보였거든요. 파일을 source로 셸에 올리는 방식이었는데, 어느 지점에서 값이 사라졌는지는 커밋에 적지 않았으니 여기서도 단정하지 않을게요. 대신 접근을 바꿨어요. 셸에 실행시키는 대신 파일에서 해당 줄만 텍스트로 뽑아 쓰는 쪽으로요. 21시 32분 커밋이에요. 같은 파일 하나를 이날만 3번 고친 셈이에요.

마무리: 적용됐는지 읽기만 하는 스크립트

테스트해 보면 계약 테스트는 운영 환경에서 스스로 실행을 거부해요. 실수로 운영 DB를 건드리지 않게 그렇게 만들어 둔 건데, 덕분에 "정말 적용됐나"를 확인할 길이 따로 없었어요. 그래서 23시 1분에 읽기 전용 검증 스크립트를 추가했어요. 쓰기는 하나도 없이 적용 결과가 기대한 모양인지만 읽어요.

돌려 보니 그것만으로는 아쉽더라고요. 카드 발송 기록이 원장과 맞아떨어지는지까지 같이 보여야 배포 직후 마음이 놓여요. 5분 뒤 커밋으로 최근 배치 상태를 출력에 붙였어요. 20시 11분부터 23시 6분까지, 세 시간이 안 되는 사이에 나온 6개 커밋이에요.

  • 셸 상태에 기대지 말고 파일에서 읽기
  • 못 찾으면 후보 이름을 보여주기
  • 운영 확인은 읽기 전용 스크립트로

남긴 것

플랜씨 금융계산기를 만들 때도 느꼈지만, 계산 자체보다 입력값이 제대로 들어왔는지 확인하는 코드가 더 오래 남아요. 마이그레이션도 같았어요. SQL 한 줄보다 "값이 어디서 오고, 적용됐는지 어떻게 보나"를 스크립트로 못 박는 데 저녁을 다 썼어요. 다음엔 검증 스크립트 출력을 핸드오프 문서에 붙여 두는 것부터 하려고요.

#마이그레이션#셸스크립트#환경변수#빌드로그

라이프케어로그 서비스가 궁금하신가요?

AI 기반 건강·일정·재활 관리 앱을 직접 써보세요.

서비스 살펴보기

관련 글

댓글

아직 댓글이 없어요. 첫 댓글을 남겨주세요.