호스티드 월드는 어떻게 돌아갈까요
인터넷 위에 있는 나만의 월드에 친구들이 언제든 들어올 수 있다면 어떨까요? 서버를 직접 설치할 필요도 없이요. 그게 우리 호스티드 월드의 아이디어예요. 이 글에서는 포털의 “플레이” 버튼 뒤에서 실제로 무슨 일이 일어나는지 보여 드릴게요.
모든 것의 중심은 WorldHost예요. 우리 서버에서 월드들을 관리하는 작은 서비스죠. 월드는 하나하나가 각자의 Docker 컨테이너에서 돌아가요. 완전히 분리되어 있고, 자기만의 저장 파일과 메모리 한도, CPU 상한을 가져요. 아무도 플레이하지 않을 때는 아무것도 돌아가지 않아요. 월드는 잠들고, 컨테이너는 멈추고, 자원도 쓰지 않아요.
누군가 포털에서 “플레이”를 누르면 이런 일이 벌어져요. WorldHost는 먼저 여러분이 들어와도 되는지부터 확인해요. 비밀번호가 걸린 월드는 월드를 깨우기 전에 비밀번호를 확인하기 때문에, 입장을 시도하는 것만으로 남의 월드를 켤 수는 없어요. 그런 다음에야 컨테이너가 시작되고, 월드가 저장 파일을 불러오고, 여러분은 바로 그 월드에만 쓸 수 있는 짧은 유효기간의 입장 토큰을 받아요. 그동안 포털에는 “월드를 깨우는 중…”이라는 상태가 보여요.
모든 플레이어가 월드를 떠나면 얼마 뒤 월드는 다시 잠들어요. 저장이 기록되고 컨테이너가 멈춰요. 그리고 내 월드를 로컬에서 계속 플레이하고 싶다면 저장 파일을 내려받았다가 나중에 다시 올릴 수도 있어요. 호스티드 월드의 저장 파일은 로컬 게임의 저장 파일과 똑같으니까요.
전체 구조는 일부러 작게 만들었어요. 쿠버네티스도, 클라우드 마법도 없이 서버 한 대와 Docker, 그리고 컨테이너를 켜고 끄는 서비스 하나예요. 가족 프로젝트로는 놀랄 만큼 멀리 갈 수 있어요. 정확히 얼마나 멀리 가는지, 그런 서버에 비용이 얼마나 드는지는 VPS에 관한 글에서 이야기할게요.
댓글