게임 서버 구축 (9)

jw·2023년 11월 28일
0

게임 서버 구축

목록 보기
10/19

DB 연동

이번 2차 정기 회의때 가장 중점을 두었던 부분은 DB 부분이다.

  • 유저 로그 & 데이터(캐릭터 좌표, 접속 시간, 아이템 사용 내역 등) 분석 및 시각화
  • 플러그인 데이터 분석 및 시각화
  • 웹 서버 DB
  • 분석한 데이터를 이용하여 웹에 서버 현재 상태 or 랭킹 등 출력

현재 간단히 정한건 이정도지만, 후에도 DB가 쓰일 일은 굉장히 많을 것으로 예상한다.

결론적으로, 한개의 Endpoint로 DB를 통합관리 하는 것이 가능해야 한다.

사실 초기에는 DB를 따로 외부 서버로 연동시키지 않고 게임 서버를 가동하는 pc에 함께 설치하려 했는데, 회의하면서 방향을 바꿨다.

"근데 만약에, 그럼 우리 게임 서버 pc 날라가면 복구 어떻게 해?"

맞다.. 본인은 DB 관련하여 주로 AWS RDS 서비스를 이용했기 때문에, 애초에 DB 서버가 게임 서버와 따로 분리되어 있었고, 백업 주기나 다른 관리들도 AWS 자체적으로 해주었기 때문에 이런 간단한 문제를 놓치고 있었다.

그렇게 테스트 서버 플러그인 연동 테스트 이후, DB 연동 관련하여 2가지를 시도해보았다.

외부 DB 생성 및 연동

게임 내부 DB와 로그데이터는 확인 결과 DB trigger를 이용하여 전처리를 진행하며 연동을 해야할 것 같아 시간이 좀 걸릴 것 같았다. 그래서 플러그인 자체적으로 DB 연동 기능을 제공하는 플러그인을 사용하여 외부에 연동을 해보았다.

외부 DB서버는 팀원 중 한명이 사용하지 않는 노트북이 있어서, 해당 노트북을 DB 서버로 활용하기로 결정했다.

과정

1) 플러그인(lightEconomy) 내부 .db 파일 확인


Minecraft 플러그인 중 DB 연동을 지원하는 플러그인들은 대부분 SQLite를 사용하고 있는 것 같았다.
(아직 확인해본 플러그인이 많지 않아서 이 부분은 더 알아봐야 할 듯)

lightEconomy.db 파일을 SQLite를 이용하여 열어보았다. Money Table, BankTable, PlayerData 각각 경제 정보가 잘 나뉘어 있는 것을 확인할 수 있었다. 또한, 스키마 구조도 이미 잘 짜여 있는 것 같다.

2) 포트포워딩 & 방화벽 설정

(포트포워딩 과정은 이미 많이 했기에 생략하여 기록)
주로 사용하는 DB 포트인 3306 포트 넘버로 공유기 포트포워딩 & 서버 방화벽 설정해주었다.

외부 DB 서버도 마찬가지로 포트포워딩과 방화벽 설정을 해주었다.

3) XAMPP 설치


XAMPP란?
XAMPP는 크로스 플랫폼 웹 서버 자유 소프트웨어 꾸러미이다. 아파치 웹 서버, MariaDB, PHP, 펄을 포함하고 있다. GNU 일반 공중 사용 허가서로 배포되며 자유롭고 쓰기 쉬운 웹 서버이다. 마이크로소프트 윈도우, 리눅스, 솔라리스, 맥 오에스 텐 등에서 동작하며 주로 웹 개발에 사용된다.
(위키백과 참조: https://ko.wikipedia.org/wiki/XAMPP)

이전 학교에서 데이터베이스 수업을 들을 당시 XAMPP 소프트웨어를 사용한 경험이 있다.
프로젝트 인원 중 한명은 SQLD 보유자이고, 다른 인원도 DB 개념은 어느정도 알고 있어서, 환경 구축도 편하고 후에 웹 서버 구축도 실습 용도 정도로 간단하게 쓸 수 있지 않을까 하여 XAMPP를 설치하고 진행하였다. XAMPP 내부 DB는 maria-DB를 사용한다.


XAMPP 컨트롤 패널의 캡쳐본이다. 정말 사용하기 간단하다. Apache와 MySQL을 Start 하여 현재 실행중인 상태라, Stop 버튼이 활성화 되며, 각 Module에 초록불이 켜져있다.
(MySQL에서 maria-DB로 2015년도에 바뀌었다고 하는데, MySQL이라고 뜨는 이유는 나도 잘 모르겠다)

각각 Admin 버튼을 클릭하면

  • Apache 웹
  • DB 웹

다음과 같이 Apache 웹 서버와, DB를 웹 환경으로 관리할 수 있다.
현재 아무 설정도 하지 않은 상태이기 때문에 localhost에서 호스팅된 상태임을 확인할 수 있다.

디스코드 화면 공유를 통해 팀원들에게 설치 방법을 알려주고,
이후 config 파일에서 설정해야 할 값들과, DB 콘솔에서 관리자 추가, 테이블 생성 등의 과정을 진행하며 연동 준비를 마쳤다.

4) 플러그인(lightEconomy) 내부 DB 옵션 파일


플러그인 내부에 DB config 파일을 열어보면, 다음과 같이 DB를 외부로 연동할 수 있는 옵션값이 있다.
Default 상태를 캡쳐해왔다. (잘 모르면 괜히 건드리지 말라는 개발자의 배려...)

true로 바꿔주고, host, username, password 값들은 연동할 외부 DB와 관리자로 지정해준다.

결과

  • 디스코드 화면공유1
  • 디스코드 화면공유2

외부 서버에 DB 연동이 잘 되었다.
게임 내부에서 접속하고, 로그인 후 출금 등 게임 내에서 계좌 거래를 했다.

실시간으로 거래 내역 및 로그인 정보가 외부 DB에 반영되는 것을 확인할 수 있었다.


서버 도스창에서도 플러그인에서 외부에 DB생성이 잘 된 것을 확인할 수 있었다.

고찰 & 향후 진행 방향

이번주 회의는 팀원 중 한명이 빅데이터 분석기사 실기를 앞두고 있어서 시험 이후인 12/3 일요일에 진행하기로 결정했다. 다음 회의에서 토의 및 진행할 사항들은 다음과 같다.

  • 플러그인 호환 추가 테스트
  • DB 서버, 게임 서버 인프라의 관리자 권한, 관리자 그룹명 등 규칙성 정해서 본 서버에 밀기
  • Well-known 포트가 아닌, 서버용 포트 넘버 지정하기
  • 서버 로그인 시, 보안 강화를 위해 password 입력 방식이 아닌 key 파일을 이용하여 로그인 방식으로 변경
  • 서버 백업 방법 & 주기 정하기 (현재 google drive 혹은 AWS S3 등 고민중)
  • Jira에 세부 일정 업데이트 하기

테스트 서버에서 이런 저런 기능들 만들어보면서 규칙성이 필요하겠다는 생각을 했다.
관리자명, 관리자 그룹부터 자주 쓰는 명령어 단축 설정 등 규칙을 만들어 엑셀로 따로 정리하고, 다음 회의 이후에는 본 서버에 현재 진행한 부분까지 적용해볼 예정이다.

추가적으로 이번 정기 회의 진행하면서 서버 백업 인프라까지 갖춰보고 싶었는데, 생각보다 DB 연동하고 플러그인 맞춰보는 부분에서 시간을 많이 할애했다. 다음 정기 회의 이후에 진행해볼 예정.

항상 Stable하게... 이번주도.. 화이팅

profile
『Infra Engineering』

0개의 댓글

관련 채용 정보