메이저 업그레이드 — 모범 사례는?

제 Discourse 설치 버전이 최신이 아닙니다(3.2.0.beta4-dev). 3.5 버전으로 업그레이드해야 하는데, 기존 환경에 문제가 생길까 걱정됩니다. 또한 변경하고 싶지 않은 몇 가지 플러그인/통합 기능(WP Discourse, 회원 정보와 함께 WordPress를 통한 로그인, Category Lockdown 플러그인)을 사용하고 있으며, 과거에 수동 업그레이드 시 문제가 발생한 경험이 있습니다.

업그레이드를 위한 최선의 방법은 무엇인가요? 먼저 다른 버전으로 부분 업그레이드를 진행해야 하나요? 주의해야 할 점이나 함정이 있을까요?

테스트 포럼을 배포하세요. 저는 아직 포크를 해본 적이 없습니다.

가장 안전한 방법은 새 서버를 설정한 다음 rsync를 사용하여 Discourse 사이트를 다른 VPS로 이동하는 것입니다(데이터베이스 파일은 건너뛰는 것이 좋습니다). 이후 백업을 복원하면 됩니다.

PostgreSQL 15 업데이트가 필요할 가능성이 매우 높습니다.

WP Discourse에는 문제가 발생하지 않아야 합니다. Discourse Category Lockdown 를 확인해 보실 수 있습니다.

PG 15 업그레이드 단계를 그대로 따르시면 모든 것이 잘 진행될 가능성이 높습니다. 다만 질문자님께서 "베스트 프랙티스"에 대해 물어보셨기 때문에 말씀드립니다.

이 방식에는 최근 백업이 있는지 확인하고 해당 백업의 안전한 사본을 확보할 수 있다는 좋은 부수적 효과가 있습니다. 하지만 어떤 방식으로 업그레이드를 진행하든 이러한 작업은 반드시 수행해야 합니다.

모든 플러그인을 주석 처리하는 것이 좋은 관행일 것 같다는 인상을 받지만, 누군가가 이를 확인해 주면 좋겠습니다.

맞아요. 실제로 새 서버를 시작하고 백업을 복원할 수 있다는 사실을 알고 있습니다. 얼마 전 제 서버 중 하나의 SSD가 고장 났을 때 이 작업을 수행해야 했습니다. 당시 연습을 해두지 않았던 것이 아쉬웠지만, 결과적으로 명시적으로 연습은 하지 않았지만 이 과정을 수백 번 거친 경험이 충분했기에 모든 것이 계획대로 진행되었습니다.

단점이 전혀 없으며, 특히 많은 플러그인이 코어(CORE)로 이동되었고 오래된 플러그인 중 깨진 것이 있을 수 있으므로 더욱 그렇습니다. 시스템이 정상적으로 작동하는 것을 확인한 후에는 누락된 플러그인이 있는지 확인하고 복원하면 됩니다.

최선의 방법? 어딘가에 체크리스트를 유지하세요. 언젠가 여러분이나 누군가가 너무 급하게 업데이트를 하려는 충동에 사로잡힐 때를 대비해, 테마(../admin/customize/themes/ 편집>css)에 다음 CSS를 추가하여 UI>admin>update에 체크리스트를 추가할 수 있습니다:

.admin-contents.update .d-nav-submenu::before {content:“업데이트 체크리스트” : 백업 완료?" ; “지난 달 메타 공지사항 읽음? ; 지난 달 메타의 가장 중요한 버그 확인? 필수 플러그인 호환성 확인? Postgres/Redis 호환성 버전 확인? 업데이트 시점 적절성 확인? 업데이트 실패 시 문제 해결 인력 가용성 확인?” }

체크리스트를 만드는 것은 좋은 생각입니다. 제 경우를 말씀드리면, 업그레이드를 고려할 때 먼저 릴리스를 기다리고, 며칠을 더 기다린 뒤 평일인 것을 확인합니다. 그런 다음 Bugs(버그)와 Support(지원) 카테고리를 읽어서 사람들이 어떤 문제를 겪고 있는지 살펴봅니다. 그리고 그런 문제가 있다면, 그것이 해결될 때까지 기다립니다.

아마도 안정 버전(stable)을 사용 중이시겠죠? 그렇지 않다면 이 전략이 지속적 통합(continuous integration)에 도움이 되지 않을 테니까요…

아니요, 저는 tests-passed 브랜치를 사용 중입니다. 며칠의 지연 기간 동안 저장소에 추가적인 커밋이 몇 개 더 들어올 수 있다는 점은 사실이지만, 동시에 일부 실수가 수정될 기회도 됩니다. 물론 대부분의 커밋에는 문제가 없으므로 저는 이것이 좋은 트레이드오프라고 생각합니다. 다만 의견이 다를 수도 있겠죠.

새 베타 버전이 나온 직후에는 업그레이드가 쏟아지기 때문에, 테스트가 통과된 상태에서도 업그레이드 후 며칠이 지난 시점이 업그레이드를 위한 좋은 타이밍입니다. 아니면, 우리 모두 같은 결함 있는 논리를 공유하고 있는 걸까요!

그래프가 없이는 여전히 확신이 서지 않아요. :innocent:

릴리스 이후 5일간의 버그 관련 커밋 비율(정량화 방법은 확실하지 않는데, 커밋 메시지에 "FIX"가 포함된 것만 세는 식으로 할 수도 있겠죠?)을 나머지 기간의 비율과 비교해 보면 어떨까 싶습니다.

그래프를 만드는 건 독자의 연습으로 남겨 두겠습니다.