<개발 과정 블로그>
1. https://velog.io/@rkdghwjd1999/프로젝트minecraft서버-운영
2. https://velog.io/@rkdghwjd1999/프로젝트minecraft서버-운영-2
3. https://velog.io/@rkdghwjd1999/프로젝트minecraft서버-운영-3
4.https://velog.io/@rkdghwjd1999/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8minecraft-%EC%84%9C%EB%B2%84-%EC%9A%B4%EC%98%81-%EC%84%9C%EB%B2%84%EC%86%8C%EA%B0%9C
5.https://velog.io/@rkdghwjd1999/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8minecraft-%EC%84%9C%EB%B2%84-%EC%9A%B4%EC%98%81-3
제목 그대로 minecraft서버 운영 프로젝트 마무리를 포스팅해보려고 한다.
11월말부터 시작해 약 3명에서 약 3개월 동안 열심히 달려왔고 , 회의 횟수만 총 20차례 이상 진행했다. 다행히 2월 16일 부터 오픈한 서버의 유저가 총 200명이 넘어 덕분에 총 4만개이상 유저들의 로그를 쌓을 수 있었다.
열심히 만든 프로젝트를 2주동안 운영하고 닫는 이유를 간단하게 말해보자면 , 생각했던것 보다 많은 유저들이 서버에 찾아주셔서 컨텐츠가 굉장히 빠르게 소모되었다. 이에 팀원모두 새로운 컨텐츠 기획 및 추가 & 유저관리 등에 매달리게 되었고, 주 목적이었던 개발 공부와 거리가 점점 멀어지고 있다는 생각이 들었다. 따라서 , '운영을 하는데 시간을 너무 많이 뺏기니 , 다음 프로젝트를 새롭게 시작하자'는 의견에 모두 동의하여 프로젝트를 마무리하게 되었다.
글이 길어질것 같아 글을 나누어 이번 포스팅에서는 구현했던 내용 정리,운영 과정 위주로 마치고 추가적으로 내가 했던것들 , 앞으로 방향 , 고찰을 다음 포스팅에 이어가겠다.
3개월 동안 정말 많은 과정이 있었기에 , 모든 시도 과정을 한번에 정리 하는것은 어렵다. 따라서 큰 파트 6개로 나눠 간단하게만 내용을 적어보려고 한다.
os파트에서 내 역할은 주로 python을 활용해 자동화봇을 만드는것이었다. 나머지 부분들은 거의 팀원들이 맡아서 진행해주었고 , 최종 서버가 작동하는 이상적인 아키텍처는 아래와 같다.
하지만 aws 환경으로 마이그레이션 하지 못하고 네이버 클라우드를 대신 사용했고 , 메인 웹 배포환경을 따로 구축하지 못해 그림과는 조금 다르게 진행했다는것이 아쉬움으로 남는다.
인증 봇 자동화 , rclone을 활용해 onedrive에 AP server, DB 백업(mysqldump) 자동화
minecraft game server on/off 자동화 , discord logging system 구축
Ntework는 인프라를 담당하는 팀원이 맡아서 해주었다.
나는 python , javascripts 등을 사용해 메인 웹사이트를 구축하는것을 맡았다.
나는 mysql 쿼리를 통해 테이블을 조작하고 정제하는 역할을 맡았고 , 유저들의 리텐션을 테블로로 실시간으로 모니터링했다.
다양한 플러그인과 maria db 연동
mysql에서 다양하게 테이블 조작 (view,trigger생성등)
유저들 이탈률 모니터링
(이탈 기준 : 가입하고 30분도 안되서 나가고 다시 들어오지 않은 유저)
discord개발,gitbook메뉴얼 제작은 거의 내가 주로 맡았다.
*편지봇 : systemd로 작동하는 봇이 on이되면 해당 날짜에 맞는 멘트를 자동으로 올려주고 , 봇에게 건의사항 DM을 보내면 '질문이 접수 되었습니다' 메시지와 함께 insert쿼리를 db로 보내 해당 내용이 db테이블에 쌓임.
*디비봇 : systemd로 작동하면서 1시간 마다 db에 select쿼리를 보내 테이블을 조회하고 조회한 내용을 디스코드 채널에 뿌려줌.
이전에 작성했던 포스팅에서도 알 수 있듯이 gitbook 을 활용해 서버 메뉴얼 사이트를 만들었다. 수정만 100번했다..
gitbook 주소 : https://minecraft-11.gitbook.io/minecraft-forecity/
minecraft게임 자체가 대부분 java기반으로 이루어져있다. 따라서 플러그인 또한 java기반과 yaml로 대부분 이루어져 있었는데, 다른 개발자들이 만들어 놓은 플러그인을 우리 서버에 맞게 수정하기 위해서 yaml수정이 필요했다. 또한 스크립트를 작성하면 서버에 쉽게 반영해주는 scripts플러그인을 적극 활용해 쉽게 커스터마이징 할 수 있었다.
vs code로 스크립트 수정하는 사진 추가 !
오픈 2주동안 199명의 유저들이 가입해 게임을 즐겨주었다. 생각보다 많은 유저들이 들어와준 덕분에 다양한 피드백을 받을 수 있었다. 아래부터는 운영과정에서 발생했던 이슈들 , 반영한 피드백등을 작성해보겠다. 이슈들은 주로 3명에서 계속 log를 모니터링 하면서 발견했다.
-이탈하는 유저들이 많았다-
-> 가입한 후 1시간도 안되어서 나가고 다시 들어오지 않은 유저들을 이탈로 생각하고 그래프를 모니터링 했는데 , 생각보다 이탈을 하는 유저들이 많았다 이탈의 원인은 크게 2가지가 확인되었다.
-> 첫번재는 마인크래프트라는 게임 특성상 여러 서버들에 왔다갔다 할 수 있어서 흔히말하는 "찍먹"이 가능했다. 이 부분은 개발자의 인력의 한계로 인해 더 매력있는 서비스를 만들지 못한 부분이라 단기간에 해결할 수 없었다.
-> 두번째는 로그를 보니 생각보다 많은 유저들이 게임과 디스코드를 연동하는 인증을 어려워했다. 하지만 인증과정은 유저 관리 측면에서 필요한 기능이기 때문에 더 간소화 시킬 수 가 없었다.
-특정 유저가 인증버튼을 클릭하면 가야할 DM을 받지 못했다.
-> 유저가 DM을 받지못하도록 차단 설정을 해놓았던것이 문제였다.
-중간에 편지봇이 한번 꺼진적이 있었다-
-> 오류났을 시점 log를 살펴보니 db와 bot이 작동하는 python scipts에서 문제가 생겼다. 서버가 켜짐과 동시에 systemd (main server on -> maria db on -> python bot scripts on) 이 작동하는데 유저가 많아지면서 db가 무거워져 db서버가 켜지는 속도가 느려졌고 , db가 켜지지도 않았는데 db를 참조하는 python bot scirpts가 실행되는것이 문제였다. 따라서 , db가 완전히 active 상태가 되었을때 python bot scripts를 실행하도록 프로세스를 설정해 정상작동 시켰다.
-스폰맵 버그 발견-
-> 스폰맵의 경계를 스크립트로 설정해 일반 유저들을 맵을 파괴하지 못하게 설정했다. 그런데 , 게임 도중 특정 유저가 스폰맵 끝 부분을 파괴해 고가의 아이템을 획득했다는 제보를 dm으로 받았고, 경계 부분을 다시 수정하는 작업을 거쳐서 해결했다.
위처럼 db봇이 건의사항 db에 쌓인 메세지를 1시간마다 조회해서 관리자만 볼 수 있는 채널로 보내주어 , 빠르게 피드백을 확인할 수 있었다.
또한 너무 고맙게도 위와 같이 개인 DM으로 피드백 내용을 보내주시는 유저분들도 있었다.
인벤 세이브 피드백 해결책 --> 가상 창고 생성
기타 대답
이밖에도 은행 권한 관련 문제 , 자잘한 ui들을 유저들의 채팅 log를 모니터링 하면서 애자일 방식으로 수정해 나갔다. 수정 사항은 아래와 같이 discord 패치사항 채널에 공지하였다.
지금까지 했던 내용들을 간단하게 정리해보았다. 이밖에도 시도했던 다양한 과정들이 있지만 자세한 내용은 내 다른 블로그나 , 팀원 블로그에 정리되어 있다.
팀원 블로그 : https://velog.io/@toothlessjw/posts
이후 유저들이 쌓은 4만개의 로그 데이터를 가지고 로그 분석을 해보았다. 글이 길어졌으니 진행했던 과정에 대한 설명과 , 고찰은 다음 포스팅에서 이어가도록 하겠다. 게임을 해준 유저분들 너무 감사합니다 !