셀렉터 필터링
셀렉터는 세션 생성 요청에 포함할 수 있는 선택적 필터링 데이터로, 세션을 호스팅할 배포(deployment)를 필터링하는 데 사용됩니다. 간단히 말해, 요청에 지정된 모든 태그를 가진 배포만 세션을 호스팅할 후보로 선택합니다. 또한 태그를 사용하여 배포에 환경 변수를 동적으로 추가할 수 있습니다.
언제 셀렉터를 고려해야 하는가
아마도 항상이 정답일 것입니다. 왜냐하면 언젠가는 지도, 게임 유형, 플레이어 통계 등과 같이 필터링에서 다양한 항목을 관리해야 할 필요가 생기기 때문입니다. 하지만 때로는 빠르게 테스트만 하고 싶을 때도 있다는 점을 이해합니다. 따라서 여기 셀렉터의 일반적인 사용 사례가 있습니다:
특정 태그를 가진 배포를 필터링하여 세션을 호스팅합니다.
세션에 태그를 달아 식별합니다.
다음 옵션을 사용할 때 환경 변수를 동적으로 주입합니다
autodeploy옵션.
대부분의 경우 여러 애플리케이션 버전을 만들고 각 버전에 다른 구성을 설정하면 셀렉터를 사용하는 것과 거의 동일한 결과를 얻을 수 있습니다. 그러나 셀렉터를 사용하면 관리해야 할 애플리케이션 버전 수가 줄어들어 개발이 단순해질 수 있습니다. 동일한 버전을 다양한 셀렉터와 컨텍스트로 사용할 수 있기 때문입니다.
사용 방법
이 개념들은 서로 위에 쌓일 수 있지만, 각 항목을 별도의 섹션에서 설명하겠습니다.
모든 필터링은 세션 요청 시작 시 설정된 범위 내에서 적용됩니다. 즉, 셀렉터에 해당하는 배포가 있더라도 적절한 범위에 없으면 세션을 호스팅할 배포로 선택되지 않습니다.
해당 autodeploy 옵션은 사용 가능한 최적의 위치에 새 배포를 생성합니다. 이에 대해 더 알아보려면 여기.
태그로 필터링
셀렉터 목록에 다음과 같이 태그를 추가하면 세션 요청이 태그를 가진 배포를 검색합니다 Ranked 그리고 Map A. 만약 autodeploy 옵션이 활성화되어 있지 않고 이러한 태그를 가진 배포가 없다면, 세션 요청은 처리 불가 상태로 설정됩니다. 반면 autodeploy가 활성화되어 있다면, 우리는 자동으로 새 배포를 생성하고 해당 태그로 태깅한 후 세션에 연결합니다.
배포는 세션을 호스팅하기에 적합하다고 고려되려면 모든 지정된 태그를 가지고 있어야 합니다.
{
"app_name": "demo",
"version_name": "v1",
"ip_list": ["1.2.3.4"],
"selectors": [
{
"tag": "Ranked"
},
{
"tag": "Map A"
}
]
}환경 변수를 동적으로 추가하기
이 예시는 위와 동일한 개념을 적용하므로, 태그를 가진 배포가 없고 autodeploy가 활성화되어 있다면 새로 태그된 배포를 생성합니다. 하지만 우리는 셀렉터 객체에 env 키를 추가했으며, 이는 배포에 Map A MAP_ID 환경 변수를 값 으로 주입합니다. 이 환경 변수는 서버 내부에서 사용 가능하게 됩니다. 1 "tag": "Map A",
로 배포를 생성했지만 env 매개변수 없이 생성했고, 이후 env 매개변수를 사용하여 해당 배포에 연결되는 세션 요청을 한다면, 실행 중인 배포의 환경 변수는 수정할 수 없기 때문에 환경 변수가 동적으로 추가되지 않습니다. Map A 이전 경고와 유사하게, 동일한 태그로 두 개의 서로 다른 세션을 생성하되 서로 다른 환경 변수를 지정한 경우, autodeploy를 트리거한 세션의 환경 변수만 적용됩니다.
필터링 없이 세션에 태그 추가하기
배포를 필터링하지 않고 세션에만 태그를 추가하려면 세션 요청에서
tag_only 속성을 사용할 수 있습니다. 이렇게 하면 배포를 실제로 필터링하지 않고 세션에 태그를 추가할 수 있습니다. 다만, env 속성을 사용하여 환경 변수를 주입하는 것과
를 함께 사용할 수는 없습니다. 속성을 사용할 수 있습니다. 이렇게 하면 배포를 실제로 필터링하지 않고 세션에 태그를 추가할 수 있습니다. 이 예시에서는 요청으로 생성되는 각 세션에 태그
Europe 를 추가합니다. 태그 는 세션에만 적용되며 배포에는 적용되지 않습니다. 이는 배포 필터링에 어떤 영향도 주지 않습니다. 를 추가합니다. 태그 "tag": "Europe",
우리는 두 가지 모드를 가진 단일 애플리케이션 버전을 가지고 있습니다:
Casual Ranked 그리고 . Autodeploy가 활성화되어 있습니다. 우리는 두 개의 맵을 가지고 있습니다:Map B Map A 그리고 . 각 모드는 각 맵을 사용할 수 있습니다. 우리는 각 게임에 요청 출처를 나타내는 태그Matchmaker #1234 를 태그로 달고 싶습니다. 이 태그는 추적 목적으로만 사용되며 배포 필터링에는 영향을 주지 않습니다.게임은 주입된 환경 변수를 기반으로 맵의 자산을 로드합니다.
이러한 시나리오에서 셀렉터를 사용하는 것은 합리적입니다. 셀렉터가 없다면 각 맵마다 다른 애플리케이션 버전을 관리해야 했을 것이므로 복잡성과 관리 오버헤드가 증가합니다.
누군가가 Map A에서 랭크 게임을 플레이하고 싶어합니다. 이 맵의 ID는
입니다. Map A에서 플레이하고 싶어하는 사람을 Map B에 넣고 싶지 않으므로 이를 적절히 처리해야 합니다. 올바른 요청 예시는 다음과 같습니다: 1"tag": "Matchmaker #1234",
가 붙습니다. 를 태그로 달고 싶습니다. 이 태그는 추적 목적으로만 사용되며 배포 필터링에는 영향을 주지 않습니다..
만약 Map B에서 캐주얼 게임에 대한 다른 요청을 보내면, 요청은 다음과 같을 것입니다. Map B 맵의 ID는 2입니다. 예상 결과는 다른 요청과 동일합니다.
마지막 업데이트
도움이 되었나요?

