0%

Unity

기능 추가보다 구조 개선이 먼저였다: 재납품 과정에서 진행한 콘텐츠 리팩토링

한*현··수정됨 2026.07.22

기능 추가보다 구조 개선이 먼저였다: 재납품 과정에서 진행한 콘텐츠 리팩토링

프로젝트 배경

입사 초기에 개발했던 전시 콘텐츠가 있었으며, 이후 해당 콘텐츠를 도입하고자 하는 새로운 고객사가 나타나면서 재납품을 진행하게 되었다.

대상 콘텐츠들은 카드 뒤집기, 퀴즈, 매칭 게임 등 비교적 단순한 체험형 콘텐츠로, 개발 당시에는 정해진 일정 내에 기능 구현을 완료하는 것이 가장 중요했다. 따라서 향후 확장이나 재사용보다는 빠른 개발에 초점을 맞춘 구조로 제작되었다.

하지만 재납품 과정에서 다양한 추가 요구사항이 발생했고, 기존 구조로는 효율적인 대응이 어려운 상황이었다.


추가 요구사항

재납품 과정에서 다음과 같은 기능 및 콘텐츠 수정 요청이 발생하였다.

  • 영문 버전 지원

  • 일부 이미지 교체

  • UI 문구 수정

  • 게임 레벨 추가

  • 추가 스테이지

기존에는 화면에 표시되는 텍스트와 이미지 정보가 코드 내부 클래스에서 데이터 테이블 형태로 관리되고 있었기 때문에, 이러한 변경 사항을 적용하려면 코드 수정이 필수적이었다.


기존 구조의 문제점

초기 버전은 단일 프로젝트 납품을 목적으로 제작되었기 때문에 콘텐츠 데이터와 프로그램 로직이 강하게 결합되어 있었다.

예를 들어 화면에 표시되는 제목, 설명, 이미지 정보 등을 하나의 클래스에서 직접 관리하고 있었으며, 데이터 수정이 필요할 경우 개발자가 직접 프로젝트를 수정해야 했다.

이 방식은 초기 개발 속도는 빠르지만 다음과 같은 문제가 존재했다.

  • 콘텐츠 데이터 수정 시 코드 수정 필요

  • 번역 작업 시 동일 데이터 중복 관리

  • 콘텐츠 담당자 외 직접 수정 어려움

  • 신규 기능 추가 시 개발 작업 증가

  • 재납품 및 커스터마이징 시 유지보수 비용 증가


개선 방향

이번 재납품을 계기로 콘텐츠 데이터와 프로그램 로직을 분리하는 방향으로 구조를 개선하였다.

기존 구조

코드
 └ 콘텐츠 데이터
      └ UI 출력

개선 구조

CSV / JSON
      ↓
데이터 로더
      ↓
콘텐츠 로직
      ↓
UI 출력

콘텐츠 데이터를 외부 파일로 관리하도록 변경하여, 프로그램 수정 없이도 콘텐츠 내용을 변경할 수 있도록 구성하였다.

csv.jpg

구현 내용

기존에 코드 내부에서 관리하던 텍스트 및 이미지 데이터를 CSV 및 JSON 형태로 분리하였다.

이를 통해

  • 콘텐츠 데이터 변경

  • 다국어 데이터 관리

  • 신규 콘텐츠 추가

등을 데이터 파일 수정만으로 처리할 수 있도록 개선하였다.

특히 언어별 데이터를 외부 파일에서 관리하도록 변경하여 영문 버전 추가 시 별도의 기능 개발 없이 데이터 작성만으로 대응할 수 있었다.

20260530_181753.jpg20260530_181724.jpg

결과

구조 개선 이후 재납품 과정에서 발생한 수정 작업을 보다 효율적으로 처리할 수 있었다.

기존에는 기능 수정과 데이터 수정이 함께 이루어졌다면, 개선 이후에는 대부분의 변경 사항을 데이터 파일 수정만으로 대응할 수 있게 되었다.

그 결과

  • 영문 버전 적용 시간 단축

  • 콘텐츠 수정 비용 감소

  • 유지보수 편의성 향상

  • 향후 추가 납품 대응 용이

등의 효과를 얻을 수 있었다.


회고

초기 프로젝트에서는 제한된 일정 내에 기능 구현을 완료하는 것이 우선이었기 때문에 당시 구조 역시 합리적인 선택이었다.

하지만 동일 콘텐츠의 재사용 및 기능 확장이 요구되면서 데이터와 로직의 분리가 필요해졌고, 이번 재납품 과정은 구조 개선의 중요성을 다시 한 번 확인할 수 있는 계기가 되었다.

또한 콘텐츠의 규모와 난이도에 관계없이 향후 확장 가능성을 고려한 데이터 중심 설계가 유지보수와 재사용성 측면에서 큰 장점을 가진다는 점을 경험할 수 있었다.

읽기 도구

4분 읽기

이 글이 도움이 되었나요?

다음으로 읽기