2 minutes
베타버전을 동시에 운영하는 방법
큐돈은 정식버전과 함께 베타버전 웹을 운영하고 있습니다. 어떤 식으로 이 베타버전을 운영하는지 알아봅시다. https://beta.qdon.space에 접속하면 기존 큐돈 계정으로 베타버전을 이용할 수 있습니다. 베타버전은 정식버전으로 편입되기 전까지 기능을 먼저 사용해보고 문제점을 발견하기 위한 용도로 운영됩니다.
별도 도메인 운영
1. 마스토돈 대체 도메인 설정
베타 버전은 beta.qdon.space 도메인을 통해 운영하고 있지만 계정 핸들은 여전히 qdon.space를 이용하고 있습니다. 이를 위해서는 마스토돈에 추가적인 설정이 필요합니다.
ALTERNATE_DOMAINS=beta.qdon.space
CDN_HOST=beta.qdon.space
EXTRA_DATA_HOSTS=qdon.space
STREAMING_BASE_URL=wss://beta.qdon.space
WEB_DOMAIN 환경변수도 있지만 이를 이용하면 사소한 오류가 따라오기 때문에 사용하지 않고 ALTERNATE_DOMAINS 설정을 이용했습니다.
2. 일부 엔드포인트 차단
차단하지 않아도 동작은 하지만 가끔 연합우주에 대한 정보를 긁어가는 봇들이 있기 때문에 beta.qdon.space가 별개의 서버로 등록되는 것을 막기 위해서는 일부 엔드포인트를 차단하는 것이 좋습니다.
/.well-known/webfinger/.well-known/nodeinfo/nodeinfo/
3. 세션 공유
쿠키 도메인이 다르기 때문에 qdon.space에 로그인을 했어도 beta.qdon.space에서는 새로 로그인을 해야 합니다. 그냥 두어도 되지만 마스토돈의 세션은 최대 10개만 허용하기도 하고 새로 로그인을 하는 것은 불편하기 때문에 beta.qdon.space에서도 세션을 그대로 공유할 수 있도록 설정했습니다.
config/initializers/session_store.rb
# frozen_string_literal: true
# Be sure to restart your server when you modify this file.
Rails
.application
.config
.session_store :cookie_store,
key: '_mastodon_session',
secure: false, # All cookies have their secure flag set by the force_ssl option in production
domain: :all, # Support subdomains
same_site: :lax
domain: :all 부분이며 :all이 아니라 특정 도메인만 넣을 수도 있습니다. 이렇게 하면 qdon.space와 beta.qdon.space에서 세션이 공유됩니다.
DB 마이그레이션
마스토돈의 DB 마이그레이션은 2단계로 진행됩니다. 첫번째 단계는 DB에 추가되거나 수정되는 부분을 적용하고 두번째 단계에서는 삭제되는 부분을 적용합니다. 이렇게 하는 이유는 다운타임이 없이 배포할 수 있도록 하기 위함인데 첫번째 단계를 적용한 후에 새 버전을 배포하기 시작하고 테이블이나 컬럼 삭제는 나중으로 미뤄 기존 버전에서도 에러가 발생하지 않도록 하는 것입니다. 이후 오래된 버전이 모두 종료된 후에 두번째 단계를 적용합니다.
하지만 베타버전은 정식버전과 동시에 운영되기 때문에 첫번째 단계만 적용하고 두번째 단계는 건너뜁니다. 정식버전으로 편입되면 그 때 삭제되는 부분을 적용하는 방식으로 베타버전과 정식버전이 동시에 문제 없이 운영될 수 있도록 합니다.
기타
사이드킥 워커는 베타버전을 사용할 수도, 정식버전을 사용할 수도 있지만 섞어서 쓰는 것은 권장하지 않습니다. 베타버전에선 버그가 있을 수 있는만큼 정식버전의 워커만 사용하는 것이 좋습니다. 사용자들이 정식버전만 이용하고 있는데 베타버전의 워커가 문제를 일으켜 연합에 영향을 주는 것은 좋지 않기 때문입니다.
하지만 베타버전의 워커도 실제 환경에서 테스트를 해보는 것이 좋기 때문에 실험적인 서버인 https://802.3ether.net을 별도로 운영하고 있습니다. 이 서버는 큐돈의 베타버전을 그대로 사용하며 사이드킥 워커도 베타버전을 사용하여 문제가 있다면 미리 발견할 수 있도록 하고 있습니다.