인벤토리 최적화 질문

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

선 요약하면 아이템 구매, 수령 등 인벤토리에 새로운 아이템을 적용할때마다 어떤 방식을 사용해야할지 감이 안잡힙니다.

뒤끝 펑션을 사용하는 이유 중 하나가 데이터 변조 위험에 방지하기 위함인데 예시로 인앱결제 과정을
펑션쪽에서 영수증 검증을 한 뒤 성공하면 아이템 수령하는 과정도 펑션쪽에서 수행하는게 맞잖아요?
영수증 정상 검증 후 아이템 수령을 클라에서 하면 펑션에서 검증한 이유가 없으니까…
그래서 펑션에서 영수증 검증 후 성공하면 수령해야할 아이템을 인벤토리에 저장하는 과정에서,
현재 모든 아이템을 저장할때 저장할 데이터들을 '|'로 한줄로 간략화해서 list으로 저장하고 있습니다.
예시로 무기 아이템의 경우 WeaponType|id|level|value 이런식으로요.
첫번째 질문, 기존 인벤토리의 아이템이 500개인 경우 여기서 1개의 새로운 아이템을 추가할 경우 500개의 아이템이
기록되어 있는 json 자체를 수정해야하는데 이게 맞는것인지에 대해 더 나은 방식은 없을까요.
두번째 질문, 새 아이템을 기존 인벤토리에 저장하기 위해서 새 아이템의 타입이 무엇인지 확인하기 위해 아이템 차트
가 필요하고 장비 아이템일 경우 장비의 기본 능력치를 결정해야 하기에 능력치 관련 차트가 필요하고 등 따지다 보니
한번의 구매 행동에 필요한 요구 기능이 너무 많아지는거 같더라고요…
지금 이거 때문에 골머리를 앓는 중인데 이건 적당히 타협을 봐야 하는건지…
다른 개발자 분들은 처리를 어떻게 하는지 또는 이에 관련한 질문을 찾아보는데 하신 분들이 없던데
다들 타협을 보고 계신건지 궁금하네요.
여태 질문했던 것 중에 제일 큰 고민이라 질문 자체가 잘 정리되지 못하는점 죄송합니다.

안녕하세요 개발자님,
문의하신 내용 답변드립니다.

  1. 인벤토리 데이터 저장 및 수정 방식
    인벤토리 데이터가 아이템 타입 또는 특정 기준에 따라 컬럼별로 나누어 저장되어 있다면, 해당 아이템이 포함된 컬럼의 값만 업데이트해주시면 됩니다.

    반면, 하나의 컬럼에 JSON 형태로 모든 인벤토리 데이터를 통합 저장하고 있는 경우에는, 새로운 아이템을 추가하거나 변경 시 해당 JSON 전체를 불러와 수정 후 다시 저장하시는 방식으로 처리해주셔야 합니다.

  2. 펑션 처리 범위와 데이터 위변조 대응
    많은 분들이 고민하시는 부분으로, 주된 목적에 따라 복잡도를 유지하거나 일정 부분 타협하는 등으로 처리를 하는 것이 보통입니다.

    펑션을 사용하는 주된 목적이 클라이언트 단의 데이터 위변조 방지에 있다면,
    말씀하신 것처럼 영수증 검증 → 차트 데이터의 조회 → 아이템 수령까지의 모든 절차를 펑션에서 처리하시는 것이 적절합니다.

    이러한 구조는 보안 강화에는 효과적이나, 펑션 호출 수 및 사용 시간 증가, 처리 흐름 복잡화 등의 요소도 함께 고려하셔야 합니다.
    보안 우선 여부에 따라, 모든 단계를 서버에서 처리할지, 또는 일부 단계만 서버에서 처리하고 나머지는 클라이언트에 위임할지를 선택하실 수 있습니다.

서비스의 목적, 운영 정책, 보안 요구 수준 등을 고려하여 적절한 방식으로 구성하시기를 권장드립니다.

1번에서 컬럼별로 나눈 뒤 수정하려는 컬럼값만 업데이트를 해도 처리량 자체는 모든 컬럼을 업데이트 하는 것과 같은데
하나의 컬럼에 json을 관리하는 것에 비해서 단순 수정에 대한 편리성 목적으로 사용되는 방법으로 보면 될까요??

네, 맞습니다.
편의성과 관리 목적에서 사용되는 방법입니다.

좋아요 1