배경 및 목표
플랫폼 이용자 및 개발사에게 지급하는 토큰 보상 기준을 플랫폼의 정량적 성과와 직접 연동하여, 무분별한 토큰 인플레이션을 방지하고 효율적인 분배 생태계(Token Economy)를 구축하고자 함.
외부 커뮤니티 단위를 플랫폼 생태계로 자연스럽게 흡수하기 위해 “길드 시스템”을 도입. 기여도가 높은 길드원들이 많을수록 더 큰 보상을 얻는 구조를 설계하여 길드장 및 구성원의 자발적인 유저 유입(정착) 유도.
길드 간 랭킹 경쟁을 활성화함으로써 유저들의 인앱 구매(IAP) 욕구를 촉진하고 플랫폼 매출 증대에 기여하는 선순환 구조 확립을 목표로 진행.
→ 인앱 매출, 온체인 매출, 게임 성과들을 정제하고 정산하는 서비스와 커뮤니티 성격의 길드 서비스 개발.
역할
시스템 구조 설계 참여 및 MSA 서비스 중 일부 (길드 서비스) 개발
주요 업무 및 성과
① MSA(Microservice Architecture) 기반의 길드 코어 서비스 개발
- 분산된 서비스 환경 속에서 독립적으로 동작하는 길드 코어 마이크로서비스를 전담하여 개발.
- 길드 멤버 관리, 기여 포인트 정산, 길드 게시판 등 커뮤니티성 라이크(Community-like) 시스템 구축.
- 타 마이크로서비스(유저, 결제 등) 담당 팀원들과 수시로 연동 스펙을 논의하고 조율하며 전체 플랫폼 완성에 기여.
② 성능 최적화를 위한 캐시(Cache) 전략 고도
- 길드 랭킹, 멤버 목록, 게시판 상단 공지 등 조회 빈도가 매우 높고 실시간성 데이터 무결성이 중요한 영역에 효율적인 캐싱 전략을 설계 및 도입하여 데이터베이스 부하를 획기적으로 경감.
결과
① 성공적인 서비스 연동: MSA 환경 내에서 타 도메인 서비스(유저, 결제 등)와 결합하여 대규모 길드 생태계를 안정적으로 칭.
회고
이번 프로젝트는 팀원들과 함께 분산 아키텍처의 각 도메인을 전담하며 거대한 플랫폼을 완성해 나간 깊이 있는 협업의 장이었다. 단순히 API의 CRUD 기능을 구현하는 것을 넘어 실제 유저와 실시간으로 소통하는 서비스를 만들며 시스템 성능 최적화에 대한 안목을 넓힐 수 있었다.
어려웠던점
① 초기 설계 시 캐시 계층 구조(Hierarchy)를 명확히 정의하지 못해, 데이터 변경 시 연관된 캐시들을 무효화(Evict)하는 시점과 범위가 모호해져 구조적 맹점을 발견한 것이었다.
→ 개발 프로세스를 일시 중단하고 팀 내 시니어 엔지니어들의 조언을 수렴하여 데이터 흐름도를 재설계했다. 서비스 아키텍처와 캐시 구조를 전면 리팩토링함으로써 명확한 캐시 수명 주기(TTL) 및 Evict 전략을 확립했다. → 이후 서비스 레이어에서의 캐시 적용을 지양하고, 데이터 접근을 담당하는 레포지토리 레이어(Repository Layer)로 캐시 책임을 이관하는 아키텍처 관점을 확립했다.
② 기존 랭킹 시스템을 Redis의 Sorted Set을 활용해 단순 포인트 내림차순으로 정렬하던 중, 포인트가 동일할 경우 먼저 해당 점수를 달성한 길드의 순위가 높아야 한다는 상용 론칭 직전의 기획 변경 요구사항이 발생했다.
→ 아키텍처 전체를 흔들지 않는 선에서 효율적인 차선책을 마련하기 위해, 특정 길드의 포인트 업데이트 시간을 기록하는 전용 Key를 추가 설계했다. 랭킹 조회 시 두 데이터를 조합 및 연산하여 동점자 처리 기준(시간 우선순위)을 완벽히 해결했다.