inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

Stateless서버에서의 유저인스턴스

해결된 질문

175

흑연

작성한 질문수 10

0

session방식이 아닌 토큰방식을 쓰는데

유저 요청시 정보를 매번 DB에서 긁어와야 할까요? 아니면 Service마다 accountId를 키로해서 각 유저 정보를 저장해놓고 사용하는게 좋을까요?

메모리에 일부 정보를 저장해 두었다가 유저 요청시, DB에 접근하지 않고 검증할 수 있는 부분은 메모리 단에서 거르는 방식으로 DB접근 오버헤드를 줄이면 좋을거 같은데

유저 정보를 메모리에 들고있는다고 하면 Stateful방식을 쓰지 Stateless방식을 쓰는 이점이 있나 해서 질문드립니다

C# unity MMORPG

답변 2

0

Rookiss

매 번 DB에 긁어올 수도 있고요. 아니면 Redis같은 메모리 기반의 캐시 DB를 사용할 수 있습니다.

0

흑연

감사합니다! 레디스 사용을 고려해봐야겠네요

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 흑연님께서 질문해주신 Stateless 서버 환경에서의 유저 정보 관리에 대해 답변 드리겠습니다.

Stateless 서버와 Stateful 서버의 차이점은 주로 상태 관리 방식에 있습니다. Stateless 서버는 각 요청이 다른 요청과 독립적으로 처리되며, 서버에서 상태 정보를 보관하지 않습니다. 반대로 Stateful 서버는 사용자 상태를 서버 측에서 지속적으로 관리합니다.

질문에서 언급하신 “메모리에 일부 정보를 저장하는 방법”은 사실상 Stateful 방식과 유사하게 동작하게 됩니다. 이렇게 하면, 서버가 재시작되거나 다른 인스턴스가 요청을 처리할 때 문제를 일으킬 수 있습니다. Stateless의 장점은 주로 서버 확장과 유지보수 관리가 용이하다는 점이며, 요청을 처리하는 서버가 상태를 신경 쓰지 않아도 된다는 것입니다.

따라서, 토큰 기반 인증을 사용하는 Stateless 서버에서는:

  1. 명확한 데이터 캐싱: 캐싱 레이어(예: Redis) 등을 활용하여 보편적으로 접근되는 데이터를 효율적으로 가져옴으로써 DB 접근을 줄일 수 있습니다. 이는 메모리를 활용하면서도 서버 간 상태를 독립적으로 유지하는 방법이 될 수 있습니다.

  2. 불필요한 오버헤드 줄이기: 빈번하게 변경되지 않는 유저 정보(예: 프로필 데이터)는 캐시에서 제공하고, 민감한 데이터나 실시간으로 변경되는 데이터는 직접 DB 접근을 통해 관리하는 방식을 고려할 수 있습니다.

  3. 장기적인 확장성 고려: Stateless 환경에서는 각 서비스가 동일한 방식으로 유저 정보를 다룰 수 있게 하여 확장성과 유지보수성을 높일 수 있습니다.

이처럼, Stateless 서버에서도 캐싱을 통해 효율적인 데이터 접근은 가능하지만, 서버 스스로 상태 정보를 저장하여 처리하면 본래의 Stateless 이점이 흐려질 수 있습니다. 따라서 캐싱을 잘 활용하고, 서비스의 규모와 요구사항에 맞는 구조를 선택하는 것이 중요합니다.

아래 링크에서는 이와 유사한 문제를 다루고 있어 추가적인 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

흑연

고마워요 AI인턴! 정직원은 언제되나요

수업질문은 아닌데요^^

0

56

1

UI 자동화 관련 문의입니다.

0

105

1

9주차 npc 생성 안되는 이슈. Custom Tile 깨짐

0

104

1

44강 Stage 분할 Cannot Find 에러 관련

0

78

1

8주차 ExtralCell 추가됐을 때 서로 공격 못하는 상황 공유드립니다.

0

117

1

rider에서 new editor config 설정

0

171

1

Reward csv 파일이 없고 EquipmentChart는 열이름 문제로 업로드가 안됩니다.

1

150

2

강의 영상코드랑 강의 자료 코드가 다릅니다.

0

156

2

M1의 어드레서블 리소스 관리 방식에 대하여 질문있습니다.

0

131

1

M1의 리소스매니져 클리어 타이밍에 대해 여쭤보고싶습니다.

0

92

1

C1 일정은 어떻게 되는건가요?

0

216

3

게임 클라이언트 개발에서 테스트 코드 작성이 도움이 될까요?

0

184

1

섹션 4(SaveData, HeroList, ItemData, ItemHolder)에 일부 항목들에 대한 재생오류 해결 부탁드립니다.

0

164

1

첫 강의 manager 가 재생이 안됩니다.

0

298

5

T2는 어떻게된걸까요?

0

433

1

9주차 강의 'Stage 분할' 이 로딩만 뜨고 재생되지 않습니다

0

148

1

강의 완료 시기

0

303

1

다운 받은 맵 프리팹을 오픈해보니 핑크색으로 보이네요

0

560

3

typeof 와 GetType

0

226

1

섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01 용도가 궁금합니다.

0

150

1

패킷 형식 질문입니다.

0

146

1

어드레서블 Sprite 관련해서 질문이있습니다.

0

595

1

Data #2 까지 들었는데 빌드를 해보고싶은데, 어느 강의에서 확인할 수 있나요?

0

298

2

에러해결방벙을 찾고싶어요

0

635

2