제공업체로 사용 중인 사이트를 전환할 수 있나요(스테이징에서 프로덕션으로)?

몇 달 전 만든 WP 사이트의 스테이징 복사본이 있습니다. 포럼(가입은 중단되어 있고 아직 정식 오픈 전임)에서 SSO가 어떻게 작동하는지 먼저 테스트해 보고, 나중에 사용자 수가 조금 더 늘어난 프로덕션 사이트와 연결할 계획입니다. 이렇게 하면 Discourse에 혼란을 줄 수 있을까요? 스테이징의 소수의 사용자로 먼저 어떻게 되는지 테스트해 보고 싶지만, 연결을 다른 사이트로 전환하게 되면 그 사용자들은 어떻게 되나요? WP 사용자 ID와 이메일은 동일하게 유지됩니다.

만약 프로덕션 사이트와 스테이징 사이트에서 WP 사용자 ID와 이메일이 동일하다면, Discourse 측에서 아무런 변경 없이 프로덕션 사이트로 전환할 수 있습니다.

사용자 ID가 동일한지 두 번 확인하는 것이 좋습니다. WP Engine의 스테이징과 프로덕션 사이트에서는 프로덕션과 스테이징 간 사용자 ID가 일치한다는 보장이 없었던 것 같습니다. 완전히 분리된 데이터베이스를 사용하거든요. 여러분의 프로덕션과 스테이징 사이트에서도 그런 상황이 아닌지 확인해 보세요.

프로덕션과 스테이징 간 사용자 ID가 일치할지 확신이 없으며, SSO 페이로드에서 require_activation 매개변수가 true로 설정되어 있지 않다면, 프로덕션 사이트로 전환하기 전에 Discourse 데이터베이스에서 기존 SingleSignOnRecord 항목을 모두 안전하게 삭제할 수 있습니다. 기존 사용자가 WordPress를 통해 Discourse에 처음 로그인하면, Discourse가 이메일 주소를 기반으로 해당 사용자를 찾아 새로운 SingleSignOnRecord를 생성합니다.

기존 SingleSignOnRecord 항목은 Rails 콘솔에서 다음 명령으로 삭제할 수 있습니다:

SingleSignOnRecord.destroy_all

SSO 페이로드에서 require_activation 매개변수가 true로 설정되어 있다면, Discourse 측에서 SSO 기록을 삭제할 수 있습니다. 기존 사용자가 프로덕션 사이트에서 Discourse에 로그인하기 전에, WordPress에서 해당 사용자의 이메일 주소를 인증된 상태로 표시해야 합니다. WordPress 프로필 페이지에서 이를 수행하는 방법에 대한 자세한 내용은 여기에서 확인하세요: Validate Email Addresses with the WP Discourse plugin.

스테이징 WordPress 사이트를 운영하고 있다면, 스테이징 Discourse 포럼도 함께 갖추는 것을 강력히 권장합니다. 이렇게 하면 스테이징 WordPress를 프로덕션 Discourse에 연결할 때 발생할 수 있는 문제에 대해 걱정할 필요가 없습니다.

이것은 흔한 시나리오입니다. 누군가가 워드프레스 호스팅 서비스(예: WP Engine)에서 사이트를 만들고, 기본 스테이징 사이트에서 테스트를 한 후, 프로덕션으로 전환하는 경우입니다. 저는 디스코어(Discourse) 지원 업무를 하던 시절에도 같은 질문에 여러 번 답변했습니다. 디스코어를 위한 영구적인 별도 스테이징 사이트는 일반적으로 옵션이 아니었거나(또는 실제로 필요하지 않았거나) 그랬습니다.

네, 맞습니다. 비교적 흔한 시나리오입니다.

그럼에도 불구하고, 이 사례에서 보듯(@Firsh, 틀렸다면 알려주세요) WordPress가 프로덕션 환경에 배포되어 있다면, 스테이징과 프로덕션 환경을 혼합할 때 발생할 수 있는 잠재적 위험이나 비용이 별도의 Discourse 인스턴스를 실행함으로써 절약되는 시간과 비용을 상회한다고 생각합니다. 이는 스테이징이 프로덕션의 복사본이라는 전제(흔히 그런 경우가 많음) 하에 그렇습니다.

새로운 인스턴스를 실행하는 데 조직적인 제한이 없는 한(이 경우에도 별도의 스테이징 환경이 필요할 수 있습니다), DigitalOcean, Vultr 등에서 별도의 Discourse를 실행하는 것은 비교적 저렴하고 간단하며, 스테이징과 프로덕션 간의 교차 영향으로 인해 발생할 수 있는 문제를 피할 수 있습니다. 이렇게 하면 시간을(그리고 시간으로 환산되는 돈을) 절약할 수 있을 것입니다. 작업을 완료한 후에는 해당 인스턴스를 꺼두면 됩니다.