top of page

작은 VPS 한 대로 만든 게임 서버 함대

작성자 사진: Marcel Dütscher
Marcel Dütscher
7월 5일
1분 분량

우리의 모든 온라인 월드, 즉 포털과 공식 월드, 플레이어들이 만든 월드는 임대한 리눅스 서버(VPS) 한 대에서 돌아가요. 데이터 센터도, 다섯 자리 숫자의 클라우드 청구서도 없어요. 이 글에서는 서버를 어떻게 구성했는지, 그 과정에서 무엇을 배웠는지 보여 드릴게요.


먼저 단단하게. 게임을 서버에 올리기 전에 기본 보안이 먼저였어요. 꼭 필요한 포트만 여는 방화벽(ufw), 자동화된 로그인 시도를 막는 fail2ban, 키로만 접속하는 SSH예요. 리버스 프록시로는 Docker 버전의 Caddy를 쓰는데, TLS 인증서를 자동으로 받아 오고 요청을 알맞은 컨테이너로 보내 줘요.


월드마다 컨테이너 하나. 게임 자체는 Docker 이미지로 돌아가고, 월드마다 고정된 한도를 가진 컨테이너를 따로 받아요. 월드당 RAM 768MB와 CPU 코어 2개이고, 동시에 켜질 수 있는 월드는 최대 열 개예요. 그러면 월드 하나 때문에 서버 전체가 무너질 일은 없어요.


우리를 불러 주는 모니터링. Netdata가 “디스크가 차오르는 중”부터 “포털이 응답하지 않음”까지 140개가 넘는 알람으로 서버를 지켜봐요. 뭔가 걸리면 휴대폰으로 푸시 알림이 와요(ntfy를 써요). 덕분에 플레이어보다 먼저 문제를 알게 돼요.


가장 놀라운 발견: 유휴 상태에서 측정해 보니 사용 중인 메모리의 대략 절반은 게임이 아니라 Docker와 모니터링 자체가 쓰고 있었어요. 게임을 떠받치는 인프라가 가만히 있을 때는 게임보다 더 무거운 거예요. 짐작하지 말고 측정해야 한다는 걸 잘 일깨워 줘요.


몇 달 운영해 본 결론은 이래요. 제대로 단단하게 만든 작은 서버 한 대로도 인디 멀티플레이어 게임을 충분히 돌릴 수 있어요. 한도를 정하고 계속 지켜본다면요.

최근 게시물

전체 보기
새 버전이 0.9.2가 아니라 2026.7.19인 이유 🗓️

오늘 업데이트하면 버전 0.9.1에서 2026.7.19로 껑충 뛰어요. 오타처럼 보이지만 의도한 결정이에요. 버전 방식을 “시맨틱” 버전에서 날짜 기반 버전(연.월.순번)으로 바꿨어요. 이유를 설명할게요. 옛 방식은 아무도 묻지 않는 질문에 답했어요. 시맨틱 버전(0.9.1, 1.2.3 …)은 소프트웨어 라이브러리 세계에서 왔어요. 거기서는 훌륭해요. 첫

 
 
대청소 완료: GitHub 캐시를 드디어 제대로 쓰게 됐어요 🧹

지난 기술 글에서 우리 빌드와 검사 파이프라인에 정말로 드는 비용을 재 봤고, 돈이 아니라 기다리는 시간과 저장 공간이 문제라는 걸 알게 됐어요. 그 글은 “정리 작업은 계획했지만 아직 하지 못했다”로 끝났죠. 생각보다 빨리 끝났어요. 오늘 낮부터 메인 브랜치에 들어가 있어요. 숫자를 보여 드릴게요. 결과부터요. 저장소의 캐시 사용량이 항목 63개에 5.3

 
 
한 달에 빌드 천 번 — 그런데 한 번도 돈이 들지 않아요 ⚙️

먼저 정정할 게 있어요. 이 글의 첫 버전은 GitHub 빌드 시간이 다 떨어져서 Pro 계정으로 올릴 수밖에 없었다고 썼어요. 그건 틀렸어요. 문서를 한 번만 봤어도 풀렸을 일이에요. 공개 저장소에서는 GitHub 빌드 시간이 무료예요. 아티팩트와 캐시도요. 저희 저장소는 5월 말부터 공개였으니, 단 1분도 돈을 낸 적이 없고 앞으로도 낼 일이 없어요.

 
 

댓글


더 이상 게시물에 대한 댓글 기능이 지원되지 않습니다. 자세한 사항은 사이트 소유자에게 문의하세요.
bottom of page