Zenserver를 공유 DDC로 설정하기 전에 먼저 어떤 환경이 적합한지 명확히 아는 것이 중요합니다. Zenserver는 인증 없는 스토리지 서버입니다.
향후 인증이 추가될 수는 있지만, 현재는 사무실 LAN이나 VPN처럼 신뢰할 수 있는 환경에서만 사용하도록 설계되어 있으며, Zenserver에 접속할 수 있는 모든 사용자는 콘텐츠와 관련하여 완전한 읽기/쓰기/삭제 권한이 있습니다.
인터넷 같은 공용 환경이나 신뢰할 수 없는 네트워크 환경에서는 Zenserver를 사용하지 않는 것이 좋은데, 그 이유는 데이터 유출, 데이터 손상 또는 오염, Zenserver에 저장된 DDC나 기타 데이터의 손실이 발생할 수 있기 때문입니다.
공용 인터넷 또는 신뢰할 수 없는 네트워크 환경에서 사용할 스토리지 서버가 필요한 경우, 언리얼 클라우드 DDC 기술을 참조하세요. 언리얼 클라우드 DDC는 해당 사용 사례에 적합하며 Zenserver 공유 DDC 인스턴스와 함께 DDC 그래프에 결합할 수 있습니다.
전통적으로 공유 DDC는 LAN 내에 호스팅된 네트워크 파일 공유를 통해, 또는 LAN에서만 액세스할 수 있는 인근 클라우드 호스트를 사용하여 사무실, 스튜디오 또는 VPN에서 구현되었습니다. 일반적으로는 Windows 서버에서 기본적으로 호스팅되거나 Linux 서버에서 Samba나 동급의 기술을 통해 호스팅되는 CIFS/SMB 파일 공유의 형태로 구현됩니다. 이러한 타입의 DDC 스토리지는 공유 DDC로서 Zenserver를 대체하는 데 적합합니다.
Zenserver 공유 DDC가 DDC 그래프 및 네트워크에 적합한 방식
파생 데이터 캐시(DDC) 문서에서 DDC 기술의 개요와 필요한 사전 지식을 확인할 수 있습니다. 조직이나 프로젝트의 DDC 그래프에 Zenserver 공유 DDC가 어떻게 들어맞는지 생각할 때 다음과 같은 DDC 그래프의 세 가지 주요 레이어를 고려하세요.
-
클라우드
-
공유
-
로컬
그래프에 Pak 레이어 같은 다른 레이어가 충분히 있을 수 있고, 메모리 레이어처럼 다른 묵시적 레이어도 있을 수 있지만, 젠 공유 DDC(Zen Shared DDC) 사용을 계획할 때는 개별적으로 이러한 세 가지 레이어만 고려해도 충분합니다.
모든 사용 사례에 세 레이어가 모두 필요한 것은 아니지만, 이러한 레이어가 있다면 그 구조는 다음과 같을 것입니다.
-
클라우드 - UE 클라우드 DDC, 지연시간 20~100ms, 인증됨, 공용 인터넷 어디서든 사용 가능, 지역 인스턴스 간 데이터 리플리케이션 가능.
-
공유 - 파일 공유 DDC 또는 Zenserver 공유 DDC, 지연시간 1~60ms, 인증 안 됨, LAN 또는 VPN에서만 사용 가능, 사용자/직원이 클러스터링된 사무실 또는 지역당 하나의 인스턴스.
-
로컬 - Zenserver 로컬 DDC(UE5.4 이상에서 디폴트), 지연시간 0.1~10ms, 인증 안 됨, loopback/localhost 서비스로 제한, 각 워크스테이션에서만 사용 가능.
혼자 쓰는 사용자라면 로컬 레이어만 있을 것입니다.
한 지역에 있는 중규모의 팀이라면 사무실 내에서 또는 VPN을 통해 이용할 수 있는 같은 지역의 클라우드 호스트에서 로컬 및 공유 레이어가 있을 것입니다.
팀이 여러 지역에 있는 대규모 조직이라면 로컬, 공유, 클라우드 DDC 레이어가 있을 것이며, 각 지역 사무실에 Zenserver 공유 DDC 인스턴스가 있고 클라우드 레이어에서는 캐시 데이터를 세계적으로 공유하고 여러 지역에 리플리케이션을 제공하는 형태가 될 것입니다.
예시: 몬트리올, 시애틀, 덴버 3곳에 사무실이 있고, 미국 동부에 쿠킹된 데이터 빌드를 생성하는 클라우드 호스팅 빌드팜이 있습니다. 각 사무실에는 50명 이상의 직원이 있습니다. 이런 경우 최적의 구성은 다음과 같습니다.
-
클라우드 - 미국 동서부의 인스턴스를 통해 공용 인터넷에서 이용할 수 있으며 두 지역 간에 양방향 리플리케이션을 지원하는 클라우드 호스팅 제공사에서 UE 클라우드 DDC 구성.
-
공유 - 몬트리올, 시애틀, 덴버 3곳의 지역 사무소에 각각 Zenserver 공유 DDC용 단일 호스트(물리적 머신 또는 가상 머신, 호스트 간 리플리케이션 없음) 및 클라우드 호스팅 빌드팜과 같은 클라우드 호스트 및 지역에서 비공개로 호스팅되는 하나의 Zenserver 공유 DDC 인스턴스.
-
Local - 각 사용자의 워크스테이션에서 디폴트로 사용하는 젠 로컬 DDC.
예시 클라우드 DDC 서버(양방향 리플리케이션 가능):
-
미국 동부 클라우드 DDC 인스턴스
-
미국 서부 클라우드 DDC 인스턴스
예시 Zenserver 공유 DDC 서버:
-
몬트리올 현지 컴퓨터
-
시애틀 현지 컴퓨터
-
덴버 현지 컴퓨터
-
미국 동부 클라우드 호스팅 빌드팜 컴퓨터
이렇게 배치한 경우 조직은 글로벌 리플리케이트 캐싱 레이어, 단일 사무실 내에서 공유 시 대량의 네트워크 트래픽 유입을 방지하는 LAN 속도의 공유 레이어, 그리고 효율적인 로컬 캐싱 레이어를 보유하게 됩니다. 따라서 빌드팜이 쿠킹할 때, 새로운 모든 DDC 데이터를 공유 레이어와 클라우드 레이어에 기록한 다음, 다른 지역에 리플리케이트하여 해당 지역의 사용자가 이용할 수 있게 합니다.
Zenserver로 공유 DDC 서버 설정하기
하드웨어
공유 DDC 서버의 사양은 조직과 데이터 세트의 특성에 맞춰서 조정됩니다. 에픽게임즈 내부에서는 CPU 코어 수나 단일 코어의 속도보다는 많은 메모리와 IO 기능에 중점을 두는 것이 합리적이라는 것을 알게 되었습니다.
비교 목적으로 말씀드리는 에픽게임즈의 하드웨어 사양은 다음과 같습니다.
대규모 사무실(수백 명의 개발자):
-
하이퍼스레딩을 지원하는 8코어 CPU(논리 프로세서 16개) @ 2.40GHz
-
64GB RAM
-
시스템 드라이브와 분리된 4TB SSD, 가상 디스크의 경우 높은 IOPS 및 처리량 편향
-
10Gbps LAN 링크 선호
메모리 사용량의 대부분을 Zenserver 프로세스 자체로 소모하지는 않지만, 이 프로세스가 있으면 OS 레벨 파일 캐싱(대기 메모리)을 효과적으로 처리할 수 있습니다.
빌드팜 환경의 경우 로컬 DDC를 완전히 비활성화합니다. 그리고, 쿠킹을 처리하는 빌드팜 컴퓨터로 공유 DDC를 엄청나게 많이 사용합니다. 이러한 대량 사용 시나리오에서는 클라우드에서 호스팅하는 Zenserver 공유 DDC 서버의 사양이 높아야 합니다.
-
하이퍼스레딩을 지원하는 24코어 CPU(논리 프로세서 48개) @ 3.80GHz
-
192GB RAM
-
시스템 드라이브와 분리된 12TB SSD, 가상 디스크의 경우 높은 IOPS 및 처리량 편향
-
클라우드 존 내에서 100Gbps LAN 링크 사용 가능
위 사양은 최소 요구 사항이 아니라 에픽게임즈 내부에 필요한 권장 환경설정입니다. Zenserver는 소규모 팀에 적합한 훨씬 저사양 하드웨어에서도 실행됩니다.
다음과 같은 이유로 운영 체제와는 다른 별도의 드라이브에 Zenserver 데이터를 보관하는 것이 좋습니다.
-
향후 Zenserver 데이터 드라이브를 더 쉽게 확장하고 교체할 수 있습니다.
-
디스크 공간 부족으로 시스템을 사용할 수 없게 되는 문제를 방지할 수 있습니다.
기존 파일 공유 DDC를 Zenserver 공유 DDC로 대체하려는 경우, 가장 좋은 방법은 다음과 같습니다.
-
디스크 크기 일치 - 파일 공유에서 DDC의 디스크 크기/할당량이 곧 Zenserver 공유 DDC에 허용할 디스크 크기/할당량이며, 그 이유는 디스크 공간 요구량이 같을 것이기 때문입니다.
-
근접성/네트워크 지연시간 일치 또는 향상 - DDC는 서버 그리고 연결하는 클라이언트 간의 커뮤니케이션 지연시간에 민감합니다. 파일 공유 DDC에서 Zenserver 공유 DDC로 변경할 때는 사용자 경험이 퇴보하지 않도록 사용자에게 호스트 하드웨어의 근접성 또는 지연시간을 똑같이 유지해야 합니다. 여러 지역에 파일 공유 DDC가 있는 경우, 파일 공유 DDC 호스트가 있는 각 지역의 Zenserver 공유 DDC 호스트에 1대1로 복제해야 합니다. Zenserver 공유 DDC가 온라인으로 가동되고 모든 프로젝트에서 사용하게 되면, 파일 공유 DDC 축소나 제거를 고려해 볼 수 있습니다.
소프트웨어
운영체제로는 Windows 서버 데이터 센터를 권장하지만(이 글을 작성하는 시점에서 확장 지원은 2019년 버전, 일반 지원은 2022년 버전이며, 출시 때 고려해 볼 적절한 최신 버전이 있음), Zenserver는 언리얼 엔진을 지원하는 Windows 버전(데스크톱 및 서버 버전)에서 작동할 수 있습니다.
Zenserver는 Windows, Linux, Mac에서 사용할 수 있습니다. 하지만 UE 5.5에서는 공유 DDC 사용을 위해 Windows 버전만이 정식 버전으로 간주되며, 에픽 내부 프로덕션에서 광범위하게 사용한 버전도 Windows 버전입니다.
Linux Zenserver는 로컬 DDC에 사용할 수 있으며, 향후 UE 릴리즈에서는 추가 조정, 최적화, 테스트를 거쳐 Linux Zenserver가 공유 DDC와 관련하여 프로덕션에 적합한 수준이 될 거로 예상합니다.
버전 호환성 및 여러 프로젝트 고려 사항
Zenserver는 하위 호환이 가능하도록 설계되었습니다. 즉, 사용 중인 엔진 릴리즈의 Engine\Binaries\
Zenserver는 언리얼 엔진과 독립된 환경에서 개발되어 출시되며, 언리얼 엔진 조직 https://github.com/EpicGames/zen/의 Git 저장소에 미러링됩니다.
Zenserver 저장소에 액세스하려면 에픽 저장소에 액세스할 수 있어야 하며, 에픽 저장소 액세스 권한은 여기에서 얻을 수 있습니다. 릴리즈는 젠 저장소에 게시됩니다. 사용자가 본인의 공유 DDC에서 Zenserver 최신 리비전을 평가하려면, GitHub 저장소에서 최신 릴리즈를 받으면 됩니다. 왜냐하면 현재 사용 중인 언리얼 엔진 릴리즈와 하위 호환되기 때문입니다.
GitHub 저장소에서 받은 최신 Zenserver 릴리즈를 프로덕션 단계에서 실행하면 안 됩니다. 항상 최신 릴리즈는 프로덕션이 아닌 공유 DDC 인스턴스에서만 평가해야 합니다.
Zenserver는 자체적인 버전 번호 체계를 사용하므로 엔진 버전 번호와는 다를 수 있습니다. Zenserver 릴리즈를 받을 때는 항상 보유한 실행파일의 버전 번호를 확인하여 현재 받고 있는 릴리즈 버전과 비교해 보세요. 버전 번호는 항상 다음 번호로 넘어가야지 역방향으로 가면 안 됩니다.
네트워크 인프라
현재 공유 DDC로서의 젠에 대해 안내 말씀을 드리자면 로드 밸런서 뒤에 배치하지 마세요. 현재 서버는 단일 인스턴스로 대량의 워크로드를 처리할 수 있도록 설계되었으며, 단일 스튜디오나 빌드팜 위치에서 대규모 팀의 프로젝트 워크로드도 처리할 수 있어야 합니다.
앞서도 언급했듯이 Zenserver 공유 DDC는 클라우드 및 로컬 레이어도 포함할 수 있는 계층형 캐시 내에 있다고 예상하게 됩니다. 캐시에 클라우드 또는 로컬 레이어가 있는 경우, 공유 레이어의 다운타임으로 인해 언리얼 엔진의 캐시 액세스에는 문제가 없고 다운타임 동안 캐시 지연시간과 퍼포먼스가 감소할 뿐입니다.
Zenserver와 커뮤니케이션은 기본적으로 현재 8558 포트를 통해 암호화되지 않은 HTTP1.1 프로토콜을 사용하여 수행됩니다. Zenserver용 언리얼 엔진 DDC 클라이언트는 모든 클라이언트 프록시 환경설정을 우회하며 구성된 Zenserver 호스트에 직접 연결하려고 시도합니다. Zenserver와 언리얼 엔진 클라이언트 사이에 프록시가 아닌 직접 액세스를 허용하는 것이 좋지만, HTTP 프록시를 사용하겠다면 언리얼 엔진 INI에서 Zenserver 공유 DDC 그래프 노드에 BypassProxy=false 파라미터를 포함하도록 환경설정하면 됩니다.
언리얼 엔진과 Zenserver의 후속 버전에서는 다른 포트를 통한 커뮤니케이션 프로토콜을 추가하거나 변경할 수도 있습니다. 네트워크의 방화벽이나 트래픽 셰이핑이 Zenserver와 언리얼 엔진 클라이언트 간에 빠르고 효율적인 통신을 허용하는 것은 필수입니다. 그렇지 않으면 에디터, 쿠킹, pak 기능의 퍼포먼스가 저하될 수 있습니다.
서버 구성 및 업데이트(Windows)
구성 및 업데이트 프로세스 중에 두 개의 별도 폴더를 참조합니다. 두 폴더의 위치는 사용자가 정하지만, 위치 지정에 대한 지침이 있습니다.
-
{ZenInstall} - 실행파일과 환경설정이 있는 폴더입니다. 시스템 드라이브나 다른 위치에 지정할 수 있습니다. 일반적인 사용 환경에서는 읽기 전용으로 유지되다가 최신 Zenserver 버전으로 업그레이드할 때만 수정됩니다.
-
{ZenData} - Zenserver의 운영 데이터가 저장되는 폴더입니다. 시스템 드라이브가 아닌 곳 에 지정하는 것이 좋습니다. 일반적인 사용 환경에서 읽기/쓰기로 사용됩니다.
폴더 외에도 Zenserver를 실행할 사용자(이하 {ZenUser} 라고 하며 {ZenPassword} 라는 비밀번호가 있을 것을 예상)를 선택해야 합니다.
Zenserver를 실행할 사용자로 관리자가 아닌 사용자를 지정할 수 있으며, 이 경우 보안상 이점이 있습니다. 관리자가 아닌 사용자로 실행하면 이 사용자가 사용할 환경을 준비했다고 가정하기 위해 다음을 확인합니다.
-
{ZenUser}에게 '서비스로 로그온' 권한이 있는지 확인
-
{ZenUser}에게 {ZenInstall} 디렉터리한 읽기 권한이 있는지 확인
-
{ZenUser}에게 {ZenData} 디렉터리 읽기+쓰기 권한이 있는지 확인
-
{ZenUser}가 http.sys urlacl 시스템에서 8558 포트의 전체 엔드포인트 공간에 대한 URL 예약 권한을 받았는지 확인. 이 권한은 관리자 권한 명령 프롬프트에서 다음 명령을 실행하여 부여할 수 있습니다.
명령줄
netsh http add urlacl url=http://*:8558/ user={ZenUser}
컴퓨터를 Zenserver 공유 DDC로 구성/업데이트하는 방법은 다음과 같습니다.
-
젠 스토어(Zenserver) 서비스가 실행 중인 경우 다음 명령을 실행하여 중지합니다.
명령줄
sc stop "Zen Store" -
자신의 디포에서 서버 호스트 컴퓨터의 {ZenInstall} 폴더로 다음 파일을 복사합니다.
-
Engine\Binaries\Win64\zenserver.exe -
Engine\Binaries\Win64\zenserver.pdb -
Engine\Binaries\Win64\crashpad_handler.exe -
Engine\Binaries\Win64\zen.exe -
Engine\Binaries\Win64\zen.pdb
이 파일들은 {ZenInstall} 폴더 수준에 전부 배치되며, 선택한 {ZenInstall} 폴더의 어떤 서브디렉터리에도 배치되면 안 됩니다.
-
-
다음 Zenserverconfig 파일 템플릿을 {ZenInstall}\zen_config.lua에 복사하여 시작점으로 삼으세요.
zen_config.lua
-- Zen Store Lua config server = { dedicated = true, datadir = "{ZenData}", abslog = "{ZenData}\\local.log", debug = false, sentry = { disable = false, allowpersonalinfo = false, } } network = { httpserverclass = "httpsys", -- httpsys|asio port = 8558, } gc = { intervalseconds = 28800, -- every 8 hour lightweightintervalseconds = 3600, -- every hour cache = { maxdurationseconds = 864000, -- 10 days } } cache = { enable = true, accesslog = false, upstream = { upstreamthreadcount = 4, policy = "disabled", -- readwrite|readonly|writeonly|disabled }, memlayer = { targetfootprint = 1073741824, -- 1 GB triminterval = 120, -- max every 2 minutes maxage = 172800, -- 2 days } } -
다음과 같이 zen_config.lua를 수정합니다.
-
server\data_dir은 {ZenData}와 똑같이 설정하며 모든 백슬래시는 이중 백슬래시로 대체합니다(예:C:\myfolder\mysubfolder를C:\\myfolder\\mysubfolder로 변경). -
server\abslog는 로그 파일을 기록할 수 있는 위치에 경로를 설정하고 모든 백슬래시는 이중 백슬래시로 대체합니다(예:C:\myfolder\mysubfolder\local.log를C:\\myfolder\\mysubfolder\\local.log로 변경).
또한 Sentry 서비스를 사용하여 Zenserver의 크래시 정보를 에픽게임즈와 공유할지 여부도 신중하게 결정하세요.
-
위의 환경설정에서는
server\sentry\disable이 false인데, Sentry 서비스를 사용하여 Zenserver 크래시 정보를 에픽게임즈와 공유하겠다는 뜻입니다. 크래시 정보를 공유하지 않으려면 이 값을 true로 설정하면 됩니다. -
server\sentry\allowpersonalinfo가 false이므로 크래시 발생 시에도 로그나 사용자 이름을 크래시 기록 시스템에 업로드하지 않습니다. Sentry를 비활성화하지 않으면 이 값을 false로 설정해도 여전히 크래시 기록을 에픽게임즈로 전송합니다. 하지만 그 기록에 로그나 사용자 이름, 기타 식별 가능 정보는 포함되지 않습니다.
zen_config.lua파일을 수정할 때는 다음과 같은 사항에 유의하세요.-
백슬래시와 같은 특수 문자는 앞에 백슬래시를 붙여 이스케이프합니다.
-
스트링 값은 큰따옴표로 묶습니다.
-
필드나 구조체 끝에는 쉼표를 붙입니다.
-
코멘트에는 이중 대시 '--'를 접두사로 붙이며, 해당 라인에서 이중 대시 다음에 나오는 모든 내용은 무시됩니다.
-
-
스타트업 시 자동으로 실행되고 장애 발생 시 재시작되는 서비스로 Zenserver가 설치되어 있는지 확인합니다. 이는 관리자 권한 명령 프롬프트에서 다음 명령을 실행하면 됩니다.
명령줄
sc create "Zen Store" start=auto binpath="{ZenInstall}\zenserver.exe --config={ZenInstall}\zen_config.lua" obj={ZenUser} password={ZenPassword} sc failure "Zen Store" reset=60 actions=restart/60000시스템 사용자로 실행하는 경우, 명령줄에서
obj={ZenUser} password={ZenPassword}부분을 생략해도 됩니다. -
다음 명령을 사용하여 Zenserver 서비스를 시작합니다.
명령줄
sc start "Zen Store" -
다음을 통해 zenserver.exe가 실행 중이고 연결 가능한지 확인합니다.
-
태스크 매니저에서 해당 파일의 유무를 확인합니다.
-
서버 호스트 컴퓨터의 브라우저에서
http://localhost:8558/dashboard를 열고 응답하는지 확인합니다. -
네트워크에 있는 다른 컴퓨터의 브라우저에서
http://<public_hostname_or_ip>:8558/dashboard를 열고 응답하는지 확인합니다.
이 프로세스가 실행되고 있지 않다면, 환경설정된 로그 위치에서 로그 파일에 문제가 기록되는지 확인하세요.
이 프로세스가 실행 중이고 localhost로 연결할 수 있지만,
를 사용하고 있지 않다면, 앞서 구성 단계에서 언급한 http.sysURL 예약을 환경설정했는지 확인하세요. -
-
서버 호스트 컴퓨터를 재시작하고 Zenserver가 부팅 시 자동으로 시작하는지 확인합니다.
Zenserver 공유 DDC 서버를 사용할 언리얼 엔진 클라이언트 설정하기
네임스페이스 이해하기 및 선택하기
네임스페이스는 Zenserver 공유 DDC와 UE 클라우드 DDC 모두에 있는 기능입니다. 네임스페이스는 프로젝트의 DDC 데이터를 UE 클라우드 DDC에서 별도의 액세스 권한을 보유할 수 있는 별도의 논리적 공간으로 분리하는 데 사용됩니다.
Zenserver는 현재 네임스페이스의 액세스 제어를 적용하지 않고 있습니다. 즉, 모든 사용자가 네임스페이스에 관계없이 모든 데이터에 액세스할 수 있습니다. 하지만 한 네임스페이스의 데이터를 다른 네임스페이스의 데이터와 약간 구분한 상태로 유지합니다.
바이트 중복 제거를 허용하는 콘텐츠 어드레서블 스토리지 레이어가 있지만, 두 개의 DDC 키는 두 개의 네임스페이스에 서로 다른 데이터 블롭을 저장할 수 있으며, 한 네임스페이스의 키에 쓰더라도 다른 네임스페이스의 키에는 영향이 없습니다.
여러 프로젝트가 하나의 네임스페이스를 공유할 수는 있지만, 경험상 프로젝트의 데이터에 누가 액세스할 수 있는지 차별을 두려면 해당 프로젝트에 고유한 네임스페이스를 부여하는 것이 좋습니다. Zenserver와 언리얼 클라우드 DDC는 다음 제한을 준수하는 어떤 네임스페이스 이름도 허용합니다.
-
64자 이하의 이름
-
마침표로 시작하거나 끝나지 않는 이름
-
소문자 라틴 영숫자(a~z, 0~9)나 대시(-), 밑줄(_) 또는 점(.) 문자로 구성된 이름
표준 환경설정
서버 구성이 완료되고 웹 브라우저에서 연결 가능한 것이 확인되면, 하나 이상의 언리얼 엔진 프로젝트에서 서버를 사용할 수 있도록 환경설정을 변경할 수 있습니다. 그러려면 프로젝트에서 DefaultEngine.ini의 [DerivedDataBackendGraph] 및 [StorageServers] 섹션에 집중해야 합니다.
BaseEngine.ini 의 기본 환경설정은 다음과 같은 두 가지 이름의 공유 레이어를 지정합니다.
-
Shared - 기존의 파일 공유 DDC로 환경설정됨(type=FileSystem)
-
ZenShared - Zenserver 공유 DDC로 환경설정됨(type=Zen)
ZenShared에는 ServerID=<StorageServersKeyName> 파라미터로 환경설정을 [StorageServers] 섹션에 리디렉션할 수 있는 특수 기능이 있음을 아는 점이 중요합니다. 구체적으로, ServerID=Shared 를 사용하여 [StorageServers] 아래의 공유 키에 리디렉션합니다.
StorageServers\Shared 의 베이스/기본 환경설정은 다음과 같습니다.
BaseEngine.ini
[StorageServers]
Shared=(Host=**None**, Namespace="**ue.ddc**", EnvHostOverride=UE-ZenSharedDataCacheHost, CommandLineHostOverride=ZenSharedDataCacheHost, DeactivateAt=60)
BaseEngine.ini 에는 각 항목에서 사용할 수 있는 파라미터를 자세히 설명하는 코멘트가 있습니다. 그러나 구성 용도로는 특히 두 가지 파라미터에 초점을 맞춰야 합니다.
-
Host: 서버가 연결할 URL입니다. 로컬에서 자동 실행된 Zenserver 인스턴스는 이를 제외할 수 있습니다. 예시:
http://sharedzen.example.com:8558. -
Namespace: 서버에 사용할 캐시 네임스페이스입니다(필수).
언리얼 엔진에서 Zenserver 공유 DDC를 사용하려면, BaseEngine.ini의 이 라인에서 기본 환경설정을 복사하여 프로젝트의 DefaultEngine.ini 파일에 붙여 넣은 다음, 프로젝트 환경에 적합한 Host 및 Namespace를 지정하도록 수정해야 합니다. 예시:
BaseEngine.ini
[StorageServers]
Shared=(Host="**http://public_hostname_or_ip:8558”**, Namespace="**myproject.ddc**", EnvHostOverride=UE-ZenSharedDataCacheHost, CommandLineHostOverride=ZenSharedDataCacheHost, DeactivateAt=60)
이 예시에서는 8558 포트를 통해 호스트 이름 public_hostname_or_ip 의 Zenserver 공유 DDC에 연결하고, myproject.ddc 라는 이름의 네임스페이스에 DDC 데이터를 저장하도록 언리얼 엔진을 구성하고 있습니다.
DefaultEngine.ini 파일에 이 환경설정이 있으면, 게임 에디터를 실행하고 로그를 확인하여 다음과 같은 로그 라인이 있는지 확인할 수 있습니다.
Log Output
LogDerivedDataCache: Display: ZenShared: Using ZenServer HTTP service at http://public_hostname_or_ip:8558/ with namespace myproject.ddc status: OK!.
이 확인 메시지가 나오면 이제 성공적으로 Zenserver 공유 DDC를 사용하고 있으며, 파일 공유 DDC가 있다면 동시에 사용되고 있을 수 있습니다.
과거 데이터로 채워진 파일 공유 DDC가 있다면, 2주의 전환 기간에는 파일 공유 DDC와 Zenserver 공유 DDC를 모두 실행하는 것이 좋습니다. 그 이후로는 프로젝트의 DefaultEngine.ini 에서 Path=None 으로 설정하고 파일 공유 DDC를 비활성화하거나, 이 그래프 노드의 베이스 세트를 오버라이드하여 프로젝트의 그래프에서 완전히 제거하는 것이 좋습니다.
DefaultEngine.ini
Root=(Type=Hierarchical, Inner=Pak, Inner=EnginePak, Inner=ZenLocal, Inner=Local, Inner=ZenShared**, Inner=Shared**, Inner=Cloud)
그렇게 해서 다음과 같이 Shared가 더는 목록에 나타나지 않게 합니다.
DefaultEngine.ini
Root=(Type=Hierarchical, Inner=Pak, Inner=EnginePak, Inner=ZenLocal, Inner=Local, Inner=ZenShared, Inner=Cloud)
Zenserver 공유 DDC를 구성하고 있고 기존 파일 공유 DDC가 없다면, 2주의 전환 기간 없이 목록에서 Shared를 바로 제거해도 됩니다.
다지역 환경설정
사용자가 여러 지역에 흩어져 있다면, 지역이나 사무실별로 파일 공유 DDC가 있을 것입니다. Zenserver 공유 DDC로 전환하려면 각 지역 또는 사무실에 Zenserver 공유 DDC를 설정한 다음, 각 언리얼 엔진 클라이언트가 지역에 적합한 서버를 선택하게 만드는 전략을 선택해야 합니다. 지역별로 적합한 서버를 선택하도록 만드는 방법은 여러 가지가 있습니다.
-
그룹 정책을 통해 지역별 또는 사무실별 컴퓨터에 설정된 환경 변수를 사용하거나 다음과 같은 대체 메커니즘을 사용하여 구현할 수 있습니다.
-
시애틀의 환경 변수:
UE-ZenSharedDataCacheHost=seattle-zen.domain.com -
덴버의 환경 변수:
UE-ZenSharedDataCacheHost=denver-zen.domain.com -
몬트리올의 환경 변수:
E-ZenSharedDataCacheHost=montreal-zen.domain.com
-
-
동일한 호스트 이름을 여러 사이트의 여러 IP 주소로 연결하도록 허용하는 사이트 특정 DNS를 사용하여 구현할 수 있습니다.
공유에서 Zenserver Shared로 리디렉션 사용하기
마지막으로 고려할 옵션은 리디렉션 메커니즘을 사용하여 언리얼 엔진이 파일 공유 DDC에서 Zenserver 공유 DDC를 사용하도록 자동으로 전환하게 만드는 것입니다. 리디렉션을 구성하려면 파일 공유 DDC 환경설정을 오버라이드하기 위해 아래를 변경해야 합니다.
ddc.ini
Shared=(Type=FileSystem, UnusedFileAge=10, FoldersToClean=10, ConsiderSlowAt=70, Path=?EpicDDC, EnvPathOverride=UE-SharedDataCachePath, EditorOverrideSetting=SharedDerivedDataCache, CommandLineOverride=SharedDataCachePath)
위의 내용을 다음과 같이 변경하면 됩니다.
ddc.ini
Shared=(Type=FileSystem, UnusedFileAge=10, FoldersToClean=10, ConsiderSlowAt=70, Path=?EpicDDC, EnvPathOverride=UE-SharedDataCachePath, EditorOverrideSetting=SharedDerivedDataCache, CommandLineOverride=SharedDataCachePath**, RedirectionFileName=ddc.ini**)
'RedirectionFileName=ddc.ini' 가 추가된 점을 주목하세요. 이는 파일 공유 DDC가 파일 공유 루트에서 ddc.ini라는 파일을 찾은 후, 파일이 있으면 해당 파일에서 리디렉션 정보를 읽으려고 시도한다는 뜻입니다.
해당 파일이 없거나 파일에 리디렉션 정보가 없으면, 파일 공유 DDC를 그대로 사용합니다. Shared를 ZenShared로 리디렉션하려면, 다음과 같은 내용이 포함된 ddc.ini 파일을 파일 공유 DDC의 루트에 배치하면 됩니다.
ddc.ini
[Redirect]
Default=(Target=ZenShared, SetEnvName=UE-ZenSharedDataCacheHost, SetEnvValue=public_hostname_or_ip)
이 리디렉션은 자체 프로세스에 대한 UE-ZenSharedDataCacheHost 환경 변수를 public_hostname_or_ip로 설정하고 ZenShared 노드 환경설정 사용을 시도하라고 언리얼 엔진에 지시합니다.
지역에 따라 하나의 호스트 이름이 여러 개의 실제 호스트에 매핑되는 분산 파일 시스템(DFS) 아키텍처를 파일 공유에 사용하는 경우, 다지역 DDC 환경설정에 리디렉션을 사용하는 것이 유용할 수 있습니다. 그러면 각 실제 호스트는 지역에 적절한 Zenserver 호스트 이름으로 리디렉션해주는 자체 ddc.ini 파일을 갖게 됩니다. 예시:
시애틀: \\seattle-fileshare.domain.com\ddc\ddc.ini contains configuration to redirect to seattle-zen.domain.com.
덴버: \\denver-fileshare.domain.com\ddc\ddc.ini contains configuration to redirect to denver-zen.domain.com.
몬트리올: \\montreal-fileshare.domain.com\ddc\ddc.ini contains configuration to redirect to montreal-zen.domain.com.
에디터에서 퍼포먼스 검증하기
서버 측에 Zenserver 공유 DDC를 구성하고 언리얼 엔진이나 클라이언트 측에서 사용하도록 환경설정한 다음에는, Zenserver 공유 DDC에 대한 지연시간이 예상과 맞는지 검증해야 합니다. 검증하려면 언리얼 에디터 메인 창의 오른쪽 하단에 있는 파생 데이터(Derived Data) 위젯을 클릭하고 캐시 통계 보기(View Cache Statistics)를 선택합니다.
그러면 캐시 통계 패널이 표시됩니다. 이 패널에서 DDC 계층구조의 활성 레이어를 관찰할 수 있습니다. 앞서 설명한 대로 다음과 같은 모습이 보입니다.
-
로컬 DDC - Cache Type = Zen, Location = Local
-
새로 설정한 Zenserver 공유 DDC - Cache Type = Zen, Location = Remote
-
(구성한 경우) 클라우드 DDC - Cache Type = Unreal Cloud DDC, Location = Remote
그래프에 아직 파일 공유 DDC가 있다면, 그 파일 공유 DDC도 나열되어 있을 것입니다. 이 패널을 사용하여 Zenserver 공유 DDC의 지연시간을 검사하고 예상과 일치하는지 확인할 수 있습니다. 이상적으로는 Zenserver 공유 DDC의 지연시간이 20ms 미만이어야 하지만, 클라이언트 컴퓨터가 Zenserver 공유 DDC에서 멀리 있으면 그보다 클 수 있습니다. Zenserver 공유 DDC의 지연시간이 60ms 미만인 한, 에디터와 쿠커가 이를 계속 사용할 것입니다.