Ninety 프로젝트에서 게임 리소스 관리 방식 고민하기

J_log·2025년 8월 3일
0

프로젝트 소개

최근에 Ninety라는 습관 트래킹 앱에 간단한 게임 요소를 추가하는 작업을 했다. 방 꾸미기와 펫 수집/육성 기능을 넣어서 사용자들이 습관을 달성할 때마다 재미를 느낄 수 있도록 만들었다.

처음에는 단순하게 시작했지만, 게임 요소가 들어가면서 여러 가지 기술적 고민이 생겼다. 특히 게임 리소스를 어떻게 관리할지에 대한 부분이 가장 고민스러웠다.

백오피스 분리에 대한 고민

현재 상점 관련 API들(방 꾸미기 아이템, 캐릭터 관련)이 모두 Ninety 메인 프로젝트에 포함되어 있다. 개발 초기에는 빠르게 구현하기 위해 이렇게 했지만, 점점 불편함을 느끼기 시작했다.

상점 아이템을 추가하거나 수정할 때마다 메인 앱의 코드를 건드려야 하는 상황이 발생했다. 예를 들어 새로운 가구 아이템을 추가하려면 API 코드를 수정하고, 배포까지 해야 하는 번거로움이 있었다.

그래서 백오피스 기능을 별도 프로젝트로 분리하는 것을 고려하게 되었다. 전용 웹사이트나 관리 툴을 만들어서 게임 컨텐츠를 관리할 수 있도록 말이다 !

분리했을 때의 장점들

  • 책임 분리 : 게임 컨텐츠 관리와 메인 앱 로직을 완전히 분리할 수 있다
  • 개발 효율성 : 컨텐츠 업데이트를 위해 메인 앱을 건드릴 필요가 없다
  • 확장성 : 나중에 더 복잡한 게임 요소가 추가되어도 유연하게 대응할 수 있다
  • 협업 : 기획자나 다른 팀원들이 직접 컨텐츠를 관리할 수 있다

결국 별도 관리 시스템을 구축하는 것이 장기적으로 더 좋겠다는 결론을 내렸다.

게임 리소스 저장 방식 고민

다음으로 고민한 것은 게임 리소스(이미지 파일들)를 어떻게 관리할지였다.

프론트엔드 번들링 vs 외부 저장소

처음에는 픽셀 아트로 만든 이미지들이 용량이 크지 않아서 그냥 프론트엔드 프로젝트에 포함시키면 어떨까 생각했다. 이렇게 하면 ?

  • 별도 서버 없이도 이미지를 표시할 수 있다
  • 네트워크 요청 없이 즉시 로딩된다
  • 관리가 단순해진다

하지만 곰곰히 생각해보니 여러 문제점들이 보였다.

  • 새로운 아이템이 추가될 때마다 앱을 새로 배포해야 한다
  • 앱 용량이 계속 늘어날 수 있다
  • 이미지 최적화나 버전 관리가 어렵다
  • 백오피스에서 동적으로 컨텐츠를 관리하기 힘들다

AWS S3 + 백오피스 조합

결국 AWS S3에 리소스를 저장하고, 백오피스 툴에서 API를 통해 상점 아이템들을 생성 / 관리하는 방식을 선택했다.

이 방식의 장점은 ?

  • 동적 관리 : 앱 배포 없이도 새로운 아이템을 추가할 수 있다
  • 성능 : CDN을 통한 빠른 이미지 로딩
  • 확장성 : 나중에 더 많은 리소스가 생겨도 대응 가능
  • 관리 편의성 : 백오피스에서 이미지 업로드부터 상품 등록까지 한 번에 처리

배운 점들

초기 편의성 vs 장기 확장성
처음에는 간단하게 구현하는 것이 좋지만, 어느 정도 규모가 커지면 구조를 제대로 잡는 것이 중요하다. 당장은 번거로워 보여도 나중을 생각하면 투자할 가치가 있다.

컨텐츠 관리의 중요성
게임 요소가 들어가면 컨텐츠 업데이트가 빈번해진다. 이를 위한 시스템을 미리 준비해두지 않으면 나중에 발목을 잡힌다..

단계적 접근
처음부터 완벽한 시스템을 만들려고 하지 말고, 문제가 생겼을 때 하나씩 개선해나가는 것도 좋은 방법이다. 다만 너무 늦기 전에 리팩토링을 시작해야 한다.


작은 프로젝트지만 이런 고민들을 통해 시스템 설계에 대해 더 깊이 생각해볼 수 있었다. 무엇보다 사용자가 재미있게 습관을 만들어갈 수 있는 서비스를 만들어가는 과정이 즐겁다.

0개의 댓글