2022년 12월 기준, 우리 졸업 프로젝트 팀은 1년 동안 게임 규칙 및 시나리오 설계부터 Nodejs와 Unity를 이용해 게임 개발까지 진행중이다.
현 상태는 주요 게임 기능은 완성된 상태이고, 안정성 작업과 예외 케이스 설정 그리고 로깅 및 배포 단계가 남아있다.
나는 게임 기능 중 게임 입장부터 대기룸 생성 및 동작, 제어 등 게임 메인 화면 전까지의 기능을 개발 하였고, 주 게임 기능으로는 공격 시나리오 탭 부분을 개발한 상태이다. 게임 입장과 대기룸 부분은 어느정도 안정성을 확보한 상황이지만, 공격 시나리오 기능은 아직 불안정해서 다듬고 있는 중이다.
최근 나는 빅데이터 중 데이터 엔지니어링에 관심이 있어 게임 로그와 관련하여 로그 수집 부터 분석 및 시각화까지의 데이터 파이프라인 설계 및 구축을 목표로 두고 있다.
DE 관련하여 공부하기 위해 BOAZ 동아리의 엔지니어링 부문에서 활동 중이기도 하다.
본론으로 들어가서, 11월과 12월 동안 고민한 건 다음과 같다.
1. 로깅과 데이터 파이프라인이 왜 이 게임에 필요한지(목적성)
2. 어떻게 파이프라인을 구성할 건지 (설계 방식 및 구성도)
이 주요 쟁점이었다.
이를 위해 책은 '빅데이터를 지탱하는 힘'을 통해 전반적인 파이프라인 구성과 목적성에 따른 구성 그리고 각각의 기능을 위주로 학습하였고, 타 회사의 데이터 파이프라인 구성도를 참고하여 대략적인 설계를 해보았다.
원래 로그 파이프라인 관련한 고민과 조사들을 노션으로 기록하고 있었는데, 나중에 다시 돌아왔을 때 더 이해하기 쉽도록 블로그에도 정리해본다.
#1. 구축한 파이프라인 구성도
#1-1, 1차 파이프라인
- 처음엔 로그 시각화를 위해 간단하게 구조화한 형태다
- 주요 스택은 Kafka와 ELK였고, 선정 이유와 고민/학습 과정들은 아래 첨부함
고민/학습 과정들...
로깅과 로그 파이프라인 차이도 모르던 때라 처음부터 검색해보고 알아가는 과정도 포함되어 있다.
로그 관련해서는 ELK Stack을 많이 들어본때라 이를 위주로 먼저 서칭을 했던 거 같다.
그리고 우리 게임이 실시간 게임 형태이고, 저장할 정보가 많으니 어떤 것을 참고해야될지 고민이 많이 되었던 상황이다.
#1-2, 책과 야놀자 파이프라인 참고하여 짠 2차 파이프라인
- '빅데이터를 지탱하는 힘' 책을 보며 목적과 특성에 따른 파이프라인 구조를 학습한 상태에서 구축한 2차 파이프라인 (1차 파이프라인 구축 때는 무지한 상태로 아는 지식과 구글링으로 만든거라 전문성이 없었다)
- 이때는 Streaming과 배치 처리는 구분할 줄 알았지만, ELK와 Spark,Hadoop을 어떻게, 언제 써야할지 모르는 상태라 참 막막했던 상황이다.
고민들
- nodejs 에서 kafka로 어떻게 보낼 건가?
- 시계열 DB 무엇을 쓸 것인가?
참고한 야놀자 파이프라인 구성도
이 구성도는 Boaz 동아리 Engineering Base 세션 중 데이터 파이프라인 세션 때 본 구성도인데, 2차 파이프라인 구성 짜는 데 많은 영감을 주었다.
#1-3, Kakao게임즈(if 2022) 참고하여 수정한 3차 파이프라인
- 2차 파이프라인 만들고 잠깐 손 놓은 상태였다가, 다시 데이터 파이프라인 검색해보며 2019 기준 라인 게임 분석 환경, 2017기준 라인 광고 데이터 파이프라인 등 보며 공부하다가 if kakao 2022 세미나에서 게임 데이터 관련하여 아주 자세한 세션이 올라와 여기서 큰 영감을 받고 3차 파이프라인을 구축하게 되었다.
(파이프라인 구성도는 아마 여기서 이제 큰 변동은 없을 듯하다) - ‘스트리밍-OpenSeearch-Dashboard 그리고 s3 저장’부터 할 계획
그 이후 ‘데이터 처리 및 집계 → S3 Analysis’ 하고 마지막에 쿼리 연결해볼 예정 - 고민점
- 메세지 브로커를 ec2에 직접 구현할 까 했는데 비용 다시 확인해보고 괜찮으면 kinesis 이용할 계획
- front에서 broker로 연결할때 서버에서 direct로 보낼지 아니면 2차로 어딘가를 거쳐서 가야할 지 고민됨
데이터 파이프라인 설계는 위의 마지막 버전으로 진행하면 될 것 같다.
하지만 실제 구축까지 가능할지는 모르겠다.
최근 팀원 모두 각자의 일과 공부로 프로젝트 참여가 어려운 상황이며, AWS 구축을 위한 초기 비용 또한 없는 상황이라 현실적으로 불가능해보인다.
그렇기에 데이터 파이프라인 구상한 것으로 끝맺음하겠다.
직접 구축해보길 기대했지만 진행하기 어려운 상황이니, 이는 다른 프로젝트에서 진행해봐야겠다.
'#️⃣ Project 및 개발일지' 카테고리의 다른 글
[Macro for class_registration] 수강신청 매크로 만들기 (0) | 2023.03.04 |
---|---|
[1일1커밋 알리미] 즉흥적으로 만든 1일 1커밋 봇(알리미) 만들기 계획 (0) | 2023.03.03 |