2.6.0b2 업그레이드가 매우 느립니다

부트스트랩이 반복적으로 실패하는 대형 사이트를 운영한 적이 있습니다. 2개 컨테이너 구성이었기 때문에 부트스트랩 마이그레이션이 진행되는 동안에도 기존 컨테이너는 계속 실행되었습니다. 결국 부트스트랩에 SKIP_POST_DEPLOYMENT_MIGRATIONS=1을 활성화한 후, 새 컨테이너가 완전히 시작되면 마이그레이션을 실행하는 방식으로 문제를 해결했습니다. ENV 섹션에 SKIP_POST_DEPLOYMENT_MIGRATIONS=1을 설정하니 마이그레이션 속도가 매우 빨랐고, 마이그레이션이 실행되는 동안(약 20분 이상 걸린 것으로 기억합니다) 사이트는 정상적으로(다만 약간 느리게) 동작했습니다.

아직 테스트하지는 않았지만, 이 같은 트릭을 사용하면 단일 컨테이너 설치 환경에서도 다운타임을 최소화할 수 있을 것으로 생각합니다. 만약 제 추측이 맞다면 다음과 같은 단계를 수행하면 됩니다.

  • app.yml에 SKIP_POST_DEPLOYMENT_MIGRATIONS=1을 추가합니다.
  • ./launcher rebuild app을 실행합니다.
  • ./launcher enter app을 실행합니다.
  • SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate을 실행합니다.
  • 매 업그레이드 후 마이그레이션을 실행할 것을 기억할 계획이 아니라면 app.yml의 수정 사항을 되돌립니다.
  • 4개월 후 다시 시도했을 때 무엇이 문제를 일으켰는지 아무도 알 수 없게 될 수 있으므로, 아직 무엇이 사이트를 망가뜨렸는지 기억나는 동안 다시 빌드하여 문제가 없는지 확인하는 것이 좋습니다.

app.yml을 수정하지 않고도 ./launcher가 SKIP_POST_DEPLOYMENT_MIGRATIONS=1을 전달할 수 있는 방법이 있다면, 편집에 익숙하지 않은 사용자에게 더 간편할 것입니다.

이 부분에 대한 작업을 실제로 수행하게 된다면, 발견한 내용을 보고하는 새로운 토픽을 만들겠습니다. 다만 연기 때문에 큰 모니터가 없는 방에 격리되어 있습니다. (팬데믹만으로도 부족해서 연기도 있어야 합니까? 게다가 저는 그 불길에서 특별히 가까운 편도 아닌데 말이죠.)